/* ════════════════════════════════════════════════════════════════════════
 * MUZI GESTIONALE — Mobile responsive (riscritto da zero — giugno 2026)
 *
 * COME FUNZIONA
 *  • La NAVIGAZIONE su mobile (drawer off-canvas + hamburger) è gestita da
 *    nav-organizer-v7.js (CSS iniettato a fine <body>): NON sta qui.
 *  • Questo file gestisce il LAYOUT DEI CONTENUTI. Su mobile l'app shell
 *    abbandona il grid del body e diventa un blocco a colonna singola a tutta
 *    larghezza, con l'header "sticky" in alto. Griglie e form collassano,
 *    le tabelle scrollano in orizzontale, le modali vanno quasi a tutto
 *    schermo e gli input partono da 16px (così iOS non zooma al focus).
 *  • Le regole pesanti dell'app shell sono limitate a  body:has(.app-nav)
 *    così le pagine indipendenti (login, console, gallery, prenota) restano
 *    intatte e ricevono solo le rifiniture generiche.
 *
 * BREAKPOINT
 *    ≤ 900px : MOBILE   — body a 1 colonna, header sticky, nav→drawer
 *    ≤ 640px : TELEFONO — griglie/form a 1 colonna, font ridotti, modali full
 *    ≤ 380px : telefoni piccoli
 *
 * Caricato DOPO lo <style> inline di ogni pagina → vince a parità di
 * specificità; usa !important dove la pagina imposta la stessa proprietà.
 * ════════════════════════════════════════════════════════════════════════ */

/* ══════════════════════════════════════════════════════════════════════
 * 1 — MOBILE  (≤ 900px)
 * ══════════════════════════════════════════════════════════════════════ */
@media (max-width: 900px) {

  /* ── Anti-overflow + scroll naturale della pagina ───────────────────── */
  /* overflow-x:clip evita lo scroll orizzontale SENZA rompere position:sticky
     (a differenza di overflow:hidden, che renderebbe il body scroll-container). */
  html, body {
    height: auto !important;
    overflow: visible !important;
    overflow-x: clip !important;
    max-width: 100vw;
  }

  /* Comportamenti touch di base */
  body { -webkit-tap-highlight-color: rgba(168,138,80,.18); }
  a, button, .btn, .qa, .muzi-rail-cat {
    -webkit-tap-highlight-color: transparent;
    touch-action: manipulation;
  }
  /* Niente zoom al focus su iOS: gli input devono partire da ≥16px */
  input, select, textarea { font-size: 16px !important; }
  /* Target tattili comodi */
  .btn, button { min-height: 40px; }

  /* Non far sforare media e contenuti incorporati */
  img, canvas, svg, video, iframe { max-width: 100%; }

  /* ════════════════════════════════════════════════════════════════════
   * APP SHELL — solo nelle pagine con la barra di navigazione.
   * Il body smette di essere un grid e diventa un flusso a blocchi.
   * (La nav .app-nav è resa fixed/off-canvas dal JS, quindi esce dal flusso.)
   * ════════════════════════════════════════════════════════════════════ */
  body:has(.app-nav) {
    display: block !important;
    grid-template-columns: none !important;
    grid-template-rows: none !important;
    padding: 0 !important;
    min-height: 100vh;
  }

  /* HEADER sticky in alto (occupa il suo spazio e resta visibile allo scroll).
     L'hamburger viene inserito dal JS come primo figlio dell'header. */
  body:has(.app-nav) header {
    position: sticky !important;
    top: 0 !important;
    left: auto !important; right: auto !important;
    width: 100% !important;
    grid-column: auto !important;
    grid-row: auto !important;
    z-index: 50 !important;
    display: flex !important;
    align-items: center !important;
    gap: 8px !important;
    padding: 0 12px !important;
    min-height: 52px !important;
    background: var(--surface) !important;
    border-bottom: 1px solid var(--border) !important;
    box-shadow: 0 1px 6px rgba(0,0,0,.10);
  }

  /* CONTENUTO a tutta larghezza, scroll naturale (niente scroll annidato) */
  body:has(.app-nav) main,
  body:has(.app-nav) aside,
  body:has(.app-nav) .content,
  body:has(.app-nav) .main-scroll,
  body:has(.app-nav) .tab-panel {
    grid-column: auto !important;
    grid-row: auto !important;
    width: 100% !important;
    max-width: 100% !important;
    height: auto !important;
    max-height: none !important;
    overflow: visible !important;
    border-right: none !important;
    box-sizing: border-box !important;
    padding: 16px !important;
  }
  /* Le tabelle interne possono comunque scorrere */
  body:has(.app-nav) .main-scroll { overflow-x: auto !important; }

  /* Sidebar secondarie (aside / .sidebar) → impilate sopra il contenuto */
  body:has(.app-nav) aside,
  body:has(.app-nav) .sidebar {
    border-right: none !important;
    border-bottom: 1px solid var(--border) !important;
    max-height: none !important;
  }

  /* Layout dettaglio (vendite, finanziamenti, ...) → impilato */
  .det-layout {
    display: block !important;
    grid-template-columns: none !important;
    height: auto !important;
    overflow: visible !important;
  }
  .det-sidebar, .det-main {
    width: 100% !important;
    border-right: none !important;
    max-height: none !important;
    overflow: visible !important;
  }
  .det-sidebar { border-bottom: 1px solid var(--border) !important; }
  .det-col-right { position: static !important; }

  /* Layout a 2 colonne generico (es. sys-impostazioni .layout 1fr 380px) */
  .layout,
  .det-content-grid,
  .pnl-hero { grid-template-columns: 1fr !important; }

  /* ── Griglie statistiche/KPI: si auto-dispongono in base allo spazio ── */
  .kpi-grid, .kpi-row,
  .qa-grid,
  .pnl-stats, .pnl-hero-stats, .pnl-row,
  .integ-grid, .sec-grid, .export-grid,
  .arr-grid, .report-stat {
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)) !important;
    gap: 10px !important;
  }
  /* Righe a 2/3 colonne fisse → 2 colonne su tablet */
  .row-2, .row-3, .row2, .row3, .grid-2, .grid-3 {
    grid-template-columns: repeat(2, 1fr) !important;
    gap: 12px !important;
  }

  /* ── Form a più colonne → 1 colonna (più leggibili sul tatto) ── */
  .form-grid, .form-grid-2, .form-grid-3,
  .form-row, .form-row-3,
  .fr, .price-grid, .giac-grid,
  .sconti-grid, .cond-sconti-grid, .margini-grid,
  .preview-grid, .role-perms,
  .doc-grid {
    grid-template-columns: 1fr !important;
    gap: 10px !important;
  }

  /* ── Tabelle: scorrono in orizzontale invece di allargare il layout ── */
  .table-wrap, .distinta-table-scroll, .lista-vendite-wrap,
  .lista-table-wrap, .cal-wrap, #calGrid {
    overflow-x: auto !important;
    -webkit-overflow-scrolling: touch;
    max-width: 100%;
  }
  table { max-width: 100%; font-size: 12px !important; }

  /* ── Barre di tab nell'header: scorrono in orizzontale ── */
  .hd-tabs, .hd-tabs-wrap {
    overflow-x: auto !important;
    flex-wrap: nowrap !important;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: thin;
  }
  .hd-tab, .hd-tabs button { white-space: nowrap !important; flex-shrink: 0; }
  /* Controlli header poco utili su mobile: nascosti per fare spazio */
  .hd-sub, .hd-count, .header-brand-text, .hd-logo-text { display: none !important; }

  /* Sidebar impostazioni (220px) → barra orizzontale scrollabile in alto */
  .settings-nav, .settings-sidebar {
    width: 100% !important;
    flex-direction: row !important;
    overflow-x: auto !important;
    border-right: none !important;
    border-bottom: 1px solid var(--border) !important;
    max-height: none !important;
    height: auto !important;
  }

  /* ── Modali: spazio attorno, mai più larghe del viewport ── */
  .modal, .cloud-dialog, .omg-dialog {
    width: 92vw !important;
    max-width: 92vw !important;
    max-height: 90vh !important;
  }
  .modal-overlay, .cloud-overlay, .omg-overlay, .print-modal { padding: 10px !important; }
}

/* ══════════════════════════════════════════════════════════════════════
 * 2 — TELEFONO  (≤ 640px)
 * ══════════════════════════════════════════════════════════════════════ */
@media (max-width: 640px) {

  body:has(.app-nav) { font-size: 13px; }
  body:has(.app-nav) main,
  body:has(.app-nav) aside,
  body:has(.app-nav) .content,
  body:has(.app-nav) .main-scroll,
  body:has(.app-nav) .tab-panel { padding: 12px !important; }

  .hd-title { font-size: 13px !important; }
  h1 { font-size: 19px !important; }
  h2 { font-size: 16px !important; }
  h3 { font-size: 14px !important; }

  /* Tutte le griglie → 1 colonna */
  .kpi-grid, .kpi-row, .qa-grid,
  .pnl-stats, .pnl-hero-stats, .pnl-row,
  .integ-grid, .sec-grid, .export-grid,
  .arr-grid, .report-stat,
  .row-2, .row-3, .row2, .row3, .grid-2, .grid-3,
  .det-content-grid {
    grid-template-columns: 1fr !important;
  }
  .pnl-hero-value { font-size: 26px !important; }

  /* Contenitori compatti */
  .section, .card, .doc-card, .form-section {
    padding: 12px 14px !important;
    margin-bottom: 12px !important;
  }
  .section-title { font-size: 12px !important; }

  /* Campi form più alti e leggibili */
  .field input, .field select, .field textarea,
  .fld input, .fld select, .fld textarea,
  input[type=text], input[type=number], input[type=email],
  input[type=tel], input[type=date], input[type=time],
  select, textarea {
    font-size: 16px !important;
    padding: 11px 12px !important;
  }

  /* Tabelle ancora più compatte */
  table { font-size: 11px !important; }
  th, td { padding: 7px 9px !important; }

  /* Pulsanti azione in colonna a tutta larghezza */
  .doc-actions, .actions {
    flex-direction: column !important;
    gap: 8px !important;
  }
  .doc-actions .btn, .actions .btn {
    width: 100% !important;
    justify-content: center !important;
  }
  .btn { padding: 9px 14px !important; min-height: 42px; }

  /* Intestazioni "vendita"/"documento" impilate */
  .sale-header, .doc-header {
    flex-direction: column !important;
    align-items: stretch !important;
    gap: 8px !important;
    padding: 12px !important;
  }
  .sale-data { margin-left: 0 !important; align-self: flex-start; }
  .sale-actions {
    width: 100% !important;
    flex-wrap: wrap !important;
    gap: 8px !important;
  }
  .sale-actions .btn, .sale-actions select { flex: 1 1 auto; }

  /* Box "eco" e cartelle */
  .eco-grid { grid-template-columns: 1fr 1fr !important; gap: 6px !important; }
  .eco-box { padding: 10px 6px !important; }
  .eco-val { font-size: 13px !important; }
  .folders-grid { grid-template-columns: repeat(3, 1fr) !important; gap: 6px !important; }
  .folder-card { padding: 10px 6px !important; }
  .folder-icon { font-size: 22px !important; }
  .folder-name { font-size: 9px !important; }

  /* Modali a tutto schermo */
  .modal, .cloud-dialog, .omg-dialog {
    width: 96vw !important;
    max-width: 96vw !important;
    max-height: 92vh !important;
    border-radius: 12px !important;
    padding: 16px !important;
  }
  .modal-buttons, .modal-actions, .modal-footer {
    flex-wrap: wrap !important;
    gap: 6px !important;
  }
  .modal-buttons .btn, .modal-actions .btn { flex: 1 1 auto; justify-content: center; }

  /* Anteprima preventivo: scalata per stare nello schermo */
  .doc-wrap { max-width: 100% !important; }
  .print-page { transform: scale(.48); transform-origin: top left; margin: 0 !important; }
  .preview-hint { display: none !important; }

  /* Calendario: larghezza minima + scroll orizzontale */
  .cal-grid { min-width: 680px; }

  /* Toast sopra il bordo inferiore (niente più bottom-bar da scansare).
     IMPORTANTE: top:auto azzera l'eventuale top impostato dal CSS di pagina
     (es. ops-booking imposta top:60px): senza, il container si stira da top a
     bottom coprendo tutto lo schermo. E pointer-events:none evita che il
     contenitore (spesso vuoto) blocchi i tap; i singoli toast restano cliccabili. */
  #toast-container {
    top: auto !important;
    bottom: 16px !important;
    left: 10px !important;
    right: 10px !important;
    max-width: calc(100vw - 20px) !important;
    pointer-events: none !important;
  }
  #toast-container > * { pointer-events: auto; }
}

/* ══════════════════════════════════════════════════════════════════════
 * 3 — TELEFONI PICCOLI  (≤ 380px)
 * ══════════════════════════════════════════════════════════════════════ */
@media (max-width: 380px) {
  .eco-grid { grid-template-columns: 1fr !important; }
  .folders-grid { grid-template-columns: repeat(2, 1fr) !important; }
  body:has(.app-nav) header { padding: 0 8px !important; }
  body:has(.app-nav) main,
  body:has(.app-nav) .content,
  body:has(.app-nav) .main-scroll,
  body:has(.app-nav) aside { padding: 10px !important; }
}

/* ══════════════════════════════════════════════════════════════════════
 * 4 — PAGINE INDIPENDENTI (login, console, gallery, prenota)
 *     Non hanno l'app shell: solo rifiniture, nessun reset aggressivo.
 * ══════════════════════════════════════════════════════════════════════ */
@media (max-width: 640px) {
  body:not(:has(.app-nav)) {
    overflow-x: clip;
  }
  /* Card/contenitori centrati → larghezza piena con margine */
  body:not(:has(.app-nav)) .login-card,
  body:not(:has(.app-nav)) .card,
  body:not(:has(.app-nav)) .box,
  body:not(:has(.app-nav)) form {
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box;
  }
}

/* ══════════════════════════════════════════════════════════════════════
 * 5 — STAMPA — ripristina un layout pulito a tutta pagina
 * ══════════════════════════════════════════════════════════════════════ */
@media print {
  html, body { overflow: visible !important; height: auto !important; }
  body {
    display: block !important;
    grid-template-columns: none !important;
    grid-template-rows: none !important;
    padding: 0 !important;
  }
  .app-nav, .muzi-burger, .muzi-nav-backdrop,
  header, aside,
  .doc-actions, .actions, .sale-actions,
  .sb-save, .foot-actions, .preview-hint, #toast-container,
  .modal-overlay, .cloud-overlay {
    display: none !important;
  }
  main, .content, .main-scroll, .det-main {
    padding: 0 !important;
    overflow: visible !important;
    width: 100% !important;
  }
}
