/* ==========================================================================
   Passata mobile/tablet (richiesta esplicita 24/09) — caricato PER ULTIMO su
   tutte le pagine autenticate. Solo media query max-width: il desktop non
   cambia di un pixel. Filosofia: niente scroll orizzontale della pagina,
   tap target ≥ 40px, la barra in alto non ruba lo schermo, i contenuti larghi
   (tabelle, righe del bollettino) si riorganizzano invece di schiacciarsi.
   ========================================================================== */

html { -webkit-text-size-adjust: 100%; }
body { overflow-x: hidden; }

/* ---------- Tablet (≤ 1024px) ---------- */
@media (max-width: 1024px) {
  .dash-main { padding-left: 18px; padding-right: 18px; }
  .card { min-width: 0; }
}

/* ---------- Barra in alto + shell (≤ 980px, sidebar impilata) ---------- */
@media (max-width: 980px) {
  /* La barra sticky occupava ~115px su telefono: resta sticky ma su UNA riga
     scorrevole (le azioni sono pillole, non serve che vadano a capo). */
  .topnav { padding: 8px 12px; row-gap: 6px; }
  .nav-links { flex-wrap: nowrap; overflow-x: auto; width: 100%; gap: 8px; padding-bottom: 2px; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
  .nav-links::-webkit-scrollbar { display: none; }
  .nav-links > * { flex: 0 0 auto; }
  .nav-links .theme-toggle, .nav-links a.theme-toggle { min-height: 40px; display: inline-flex; align-items: center; }

  /* Lista aziende/siti: da colonna lunga a striscia orizzontale scorrevole */
  .dash-shell { min-height: 0; }
  .sidebar { padding: 12px 14px; }
  #farm-list, #asset-list, #site-list { display: flex; flex-direction: row; gap: 8px; overflow-x: auto; padding-bottom: 6px; scroll-snap-type: x proximity; -webkit-overflow-scrolling: touch; }
  #farm-list > *, #asset-list > *, #site-list > * { flex: 0 0 min(72vw, 250px); scroll-snap-align: start; }
}

/* ---------- Telefono (≤ 640px) ---------- */
@media (max-width: 640px) {
  .btn, .btn-sm, button.theme-toggle, a.theme-toggle { min-height: 40px; }
  .btn-sm { padding: 8px 12px; }
  input:not([type="checkbox"]):not([type="radio"]), select, textarea { font-size: 16px; min-height: 42px; } /* 16px = niente zoom automatico di iOS al focus */
  .dash-main { padding: 14px 12px 88px; } /* spazio in fondo per il pulsante chat fisso */
  .dash-header h1, #selected-farm-name, #selected-asset-name, #selected-site-name { font-size: 22px; }
  #map { height: min(320px, 46vh); }
  .card { padding-left: 14px; padding-right: 14px; }
  .card-head { flex-wrap: wrap; gap: 6px; }

  /* Griglie senza collasso */
  .wb-summary { grid-template-columns: 1fr 1fr; }
  .admin-workload-grid, .client-info-grid { grid-template-columns: 1fr 1fr; }
  #conditions { grid-template-columns: 1fr 1fr; }

  /* Bollettino — vista Tabella: da 7 colonne fisse (384px, sforava il
     telefono) a due righe per fascia oraria. Le intestazioni di colonna
     non hanno più senso, il contenuto di ogni cella è già autoesplicativo. */
  .bulletin-row-head { display: none; }
  .bulletin-row { grid-template-columns: 54px 30px 46px minmax(0, 1fr) minmax(0, 1fr); gap: 4px 8px; padding: 10px 2px; font-size: 12px; }
  .bulletin-row-time { grid-row: 1 / span 2; font-size: 11.5px; }
  .bulletin-row-icon { font-size: 22px; }
  .bulletin-row-temp { font-size: 15px; }
  .bulletin-row-precip { grid-column: 2 / 5; }
  .bulletin-row-humidity { grid-column: 5; }
  .bulletin-table-view { min-width: 0; }

  /* Tabelle larghe: scorrono dentro la card, mai la pagina */
  .tri-table-scroll, .bulletin-grid-table-wrap, .bulletin-strip-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; max-width: 100%; }
  /* tabelle senza contenitore scorrevole (es. Analisi avanzata): scorrono da sole */
  .tri-table { display: block; max-width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; }

  /* Pulsante chat + toast: liberano il contenuto e rispettano la safe-area */
  .chat-fab { right: 14px; bottom: calc(14px + env(safe-area-inset-bottom, 0px)); width: 48px; height: 48px; }
  .chat-panel { right: 8px; left: 8px; width: auto; max-width: none; bottom: calc(72px + env(safe-area-inset-bottom, 0px)); max-height: 68vh; }

  /* Login */
  .login-card { max-width: none; width: calc(100vw - 32px); }
  /* Modali (on-demand, storico, confronto, rotta personalizzata…): su schermi
     bassi (es. 375x667) la card più alta dello schermo restava tagliata in
     alto e in basso. L'overlay scorre e la card si centra solo se ci sta
     (margin:auto in un flex non taglia mai il bordo superiore). */
  .login-overlay { overflow-y: auto; -webkit-overflow-scrolling: touch; align-items: flex-start; padding: 12px; }
  .login-overlay > .login-card, .login-overlay > .card { margin: auto; }
  /* Campi data/ora (datetime-local ha una larghezza intrinseca che sforava la card) */
  input[type="datetime-local"], input[type="date"], input[type="time"] { min-width: 0; max-width: 100%; width: 100%; box-sizing: border-box; }
  .ondemand-card [style*="grid-template-columns"], #ondemand-overlay [style*="grid-template-columns"] { grid-template-columns: 1fr !important; }
}

/* ---------- Console admin / meteorologo (console.css) ---------- */
@media (max-width: 700px) {
  .console-main, main.console { padding-left: 12px; padding-right: 12px; }
  /* input con larghezze fisse inline nei form/righe admin: si adattano alla riga */
  [style*="width:110px"], [style*="width:160px"], [style*="width:90px"], [style*="width:120px"], [style*="width:140px"], [style*="width:220px"] {
    width: auto !important; flex: 1 1 130px; min-width: 0;
  }
  [style*="min-width:180px"], [style*="min-width:200px"], [style*="min-width:220px"] { min-width: 0 !important; flex: 1 1 100% !important; }
  .stat-row, .stat-pills { flex-wrap: wrap; }
}

/* ---------- Pannello Vetrina turismo/golf (vetrina-admin.css) ---------- */
@media (max-width: 1180px) and (min-width: 761px) {
  .va-main { padding: 26px 24px 60px; }
}
@media (max-width: 760px) {
  .va-main { padding: 16px 14px 60px; }
  .va-main-header h1 { font-size: 22px; }
  .va-card { padding: 16px 14px; }
  .va-row, .va-row-2, .va-row-3 { grid-template-columns: 1fr !important; }
  .va-nav-btn { min-height: 44px; white-space: nowrap; }
  .va-btn { min-height: 44px; }
  .va-field input, .va-field select, .va-field textarea { font-size: 16px; }
  .va-list-item-head { flex-wrap: wrap; gap: 6px; }
}
