/* ============================================================
   Console assistenza — foglio unico.
   Nessuna libreria, nessun CDN, nessun font esterno: la CSP e'
   `default-src 'none'` e in questa pagina passano i dati dei clienti di
   tre prodotti. Un carattere caricato da un dominio terzo direbbe a quel
   dominio chi sta lavorando e quando.

   ⚠️ Gli stili che dipendono dai dati (tinte dei prodotti, larghezze,
   archi dei donut) NON stanno qui e non stanno in attributi `style=`:
   arrivano in un blocco con nonce. Vedi lib/stili.js.
   ============================================================ */

:root{
  --sfondo:#f4f6fa; --carta:#fff; --carta-2:#fbfcfe;
  --testo:#0f172a; --tenue:#64748b; --bordo:#e4e8ef;
  --accento:#4338ca; --accento-2:#6366f1; --accento-tenue:#eef2ff;
  --ok:#15803d; --ok-tenue:#ecfdf5;
  --avviso:#c2410c; --avviso-tenue:#fff7ed;
  --urgente:#b91c1c; --viola:#7c3aed;
  --ombra:0 1px 2px rgba(15,23,42,.06), 0 4px 12px rgba(15,23,42,.05);
  --ombra-alta:0 8px 30px rgba(15,23,42,.14);
  --raggio:12px;
}
@media (prefers-color-scheme:dark){
  :root{
    --sfondo:#0a0e17; --carta:#131a26; --carta-2:#182131;
    --testo:#e8edf5; --tenue:#94a3b8; --bordo:#1f2a3a;
    --accento:#818cf8; --accento-2:#a5b4fc; --accento-tenue:#1e1b4b;
    --ok:#4ade80; --ok-tenue:#052e21;
    --avviso:#fb923c; --avviso-tenue:#2a1a08;
    --urgente:#f87171; --viola:#a78bfa;
    --ombra:0 1px 2px rgba(0,0,0,.4), 0 4px 14px rgba(0,0,0,.3);
    --ombra-alta:0 10px 36px rgba(0,0,0,.55);
  }
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--sfondo);color:var(--testo);
  font:15px/1.55 ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  font-feature-settings:"cv11","ss01";-webkit-font-smoothing:antialiased}
a{color:inherit}
main{max-width:1120px;margin:0 auto;padding:1.6rem 1.1rem 5rem}
h1{font-size:1.5rem;letter-spacing:-.022em;margin:.1rem 0 .3rem;font-weight:680}
h2{font-size:1.02rem;letter-spacing:-.012em;font-weight:640}
.sotto{color:var(--tenue);margin:.2rem 0 1.4rem;max-width:74ch;font-size:.92rem}
.nota{font-size:.83rem;color:var(--tenue);margin-top:.6rem;max-width:74ch}

/* ── Testata ─────────────────────────────────────────────────── */
.testata{display:flex;align-items:center;gap:1.1rem;padding:.62rem 1.1rem;
  background:color-mix(in srgb,var(--carta) 88%,transparent);
  border-bottom:1px solid var(--bordo);position:sticky;top:0;z-index:40;
  backdrop-filter:saturate(1.6) blur(10px)}
/* Un filo dei tre colori sotto la testata: e' l'unico posto in cui i tre
   prodotti compaiono insieme senza bisogno di dirlo a parole. */
.testata::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;
  background:linear-gradient(90deg,#0ea5e9 0 33.3%,#16a34a 33.3% 66.6%,#f59e0b 66.6% 100%);
  opacity:.85}
/* ── Il marchio ──────────────────────────────────────────────────
   Tre archi che convergono in un punto: i tre prodotti, una coda sola.
   Disegnato nel markup e non caricato da un file — la CSP non ammette
   risorse esterne, e un'immagine in piu' e' una richiesta su ogni pagina. */
.marchio{display:flex;align-items:center;gap:.55rem;text-decoration:none;flex:none}
.marchio-segno{width:28px;height:28px;flex:none;color:var(--accento);
  transition:transform .3s cubic-bezier(.34,1.56,.64,1)}
.marchio:hover .marchio-segno{transform:rotate(-8deg) scale(1.06)}
.marchio-testo{display:flex;flex-direction:column;line-height:1.05}
.marchio-testo b{font-size:.96rem;font-weight:720;letter-spacing:-.025em}
.marchio-testo em{font-size:.63rem;font-style:normal;color:var(--tenue);
  letter-spacing:.07em;text-transform:uppercase;font-weight:600}
@media (max-width:900px){ .marchio-testo em{display:none} }
.nav{display:flex;align-items:center;gap:1.05rem;flex:1;font-size:.9rem}
.nav>a{text-decoration:none;color:var(--tenue);padding:.15rem 0;position:relative;
  transition:color .15s}
.nav>a:hover{color:var(--testo)}
.nav>a.qui{color:var(--testo);font-weight:620}
.nav>a.qui::after{content:"";position:absolute;left:0;right:0;bottom:-.68rem;height:2px;
  border-radius:2px;background:linear-gradient(90deg,var(--accento),var(--accento-2))}
.nav .spinta{flex:1}
.presenza{display:inline-flex;align-items:center;gap:.32rem;color:var(--ok);
  font-size:.84rem;font-variant-numeric:tabular-nums}
.punto{width:7px;height:7px;border-radius:50%;background:currentColor;
  box-shadow:0 0 0 3px color-mix(in srgb,var(--ok) 22%,transparent)}
.io{color:var(--tenue);font-size:.86rem}
.esci{font-size:.82rem;color:var(--tenue)}

/* ── Campanella ──────────────────────────────────────────────── */
.campanella{position:relative}
.campanella summary{list-style:none;cursor:pointer;display:flex;align-items:center;
  position:relative;color:var(--tenue);padding:.2rem;border-radius:8px;transition:.15s}
.campanella summary::-webkit-details-marker{display:none}
.campanella summary:hover{color:var(--testo);background:var(--sfondo)}
.campanella svg{width:19px;height:19px;display:block}
.pallino{position:absolute;top:-3px;right:-4px;min-width:16px;height:16px;padding:0 3px;
  border-radius:999px;background:var(--urgente);color:#fff;font-size:10px;font-style:normal;
  font-weight:700;display:flex;align-items:center;justify-content:center;
  box-shadow:0 0 0 2px var(--carta);animation:pulsa 2.4s ease-in-out infinite}
.pallino.spento{display:none}
@keyframes pulsa{0%,100%{transform:scale(1)}50%{transform:scale(1.14)}}
@media (prefers-reduced-motion:reduce){ .pallino{animation:none} }
.campanella-pannello{position:absolute;right:0;top:calc(100% + .55rem);width:min(360px,88vw);
  background:var(--carta);border:1px solid var(--bordo);border-radius:var(--raggio);
  box-shadow:var(--ombra-alta);z-index:50;overflow:hidden}
.campanella-testa{display:flex;justify-content:space-between;align-items:center;
  padding:.6rem .8rem;border-bottom:1px solid var(--bordo);font-size:.88rem}
.campanella-testa button{background:none;color:var(--accento);border:0;font:inherit;
  font-size:.8rem;cursor:pointer;padding:0}
.campanella-pannello ul{list-style:none;margin:0;padding:0;max-height:64vh;overflow:auto}
.campanella-pannello li a{display:flex;flex-direction:column;gap:.12rem;padding:.6rem .8rem;
  text-decoration:none;border-bottom:1px solid var(--bordo);transition:background .12s}
.campanella-pannello li a:hover{background:var(--sfondo)}
.campanella-pannello li.nuova a{background:var(--accento-tenue)}
.n-tipo{font-size:.68rem;text-transform:uppercase;letter-spacing:.06em;color:var(--accento);font-weight:700}
.n-titolo{font-weight:560;font-size:.9rem}
.n-corpo{font-size:.8rem;color:var(--tenue)}
.campanella-vuota{padding:1.4rem;text-align:center;color:var(--tenue);font-size:.88rem;margin:0}

/* ── Barra dei prodotti ──────────────────────────────────────── */
.prodotti-barra{display:flex;gap:.5rem;flex-wrap:wrap;max-width:1120px;
  margin:1.1rem auto 0;padding:0 1.1rem}
.chip{display:inline-flex;gap:.45rem;align-items:center;text-decoration:none;
  background:var(--carta);border:1px solid var(--bordo);border-radius:999px;
  padding:.34rem .8rem .34rem .6rem;font-size:.83rem;box-shadow:var(--ombra);
  transition:transform .12s,box-shadow .12s}
.chip::before{content:"";width:8px;height:8px;border-radius:50%;
  background:var(--tinta,#64748b);box-shadow:0 0 0 3px color-mix(in srgb,var(--tinta,#64748b) 20%,transparent)}
.chip:hover{transform:translateY(-1px);box-shadow:var(--ombra-alta)}
.chip span{color:var(--tenue);font-variant-numeric:tabular-nums}
.chip.spento{opacity:.42}

/* ── Filtri ──────────────────────────────────────────────────── */
.filtri{display:flex;gap:.9rem;align-items:center;margin-bottom:1rem;flex-wrap:wrap}
.filtri input[type=search]{flex:1;min-width:220px}
.interruttore{color:var(--tenue);font-size:.87rem;display:inline-flex;gap:.35rem;align-items:center}
.pulisci{font-size:.83rem;color:var(--accento);text-decoration:none}

/* ── Coda ────────────────────────────────────────────────────── */
.coda{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.42rem}
.riga a{display:flex;gap:.8rem;align-items:flex-start;background:var(--carta);
  border:1px solid var(--bordo);border-radius:var(--raggio);padding:.72rem .85rem;
  text-decoration:none;box-shadow:var(--ombra);transition:transform .12s,box-shadow .12s,border-color .12s}
.riga a:hover{transform:translateY(-1px);box-shadow:var(--ombra-alta);border-color:color-mix(in srgb,var(--accento) 35%,var(--bordo))}
.riga.nuova a{border-left:3px solid var(--accento)}
.tinta{display:block;width:9px;height:9px;border-radius:50%;margin-top:.42rem;flex:none}
.tinta.grande{width:15px;height:15px;margin-top:.4rem}
.corpo-riga{flex:1;min-width:0}
.alto{display:flex;gap:.5rem;align-items:baseline;flex-wrap:wrap}
.oggetto{font-weight:600;letter-spacing:-.008em}
.basso,.anteprima{display:block;color:var(--tenue);font-size:.83rem}
.anteprima{margin-top:.18rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:.82}
.sep{opacity:.42;margin:0 .3rem}
.data{color:var(--tenue);font-size:.78rem;white-space:nowrap;font-variant-numeric:tabular-nums}
.attende{color:var(--avviso);font-weight:660}
.scoperta{color:var(--avviso)}
.prio{font-size:.66rem;text-transform:uppercase;letter-spacing:.07em;font-weight:800;
  padding:.08rem .38rem;border-radius:5px}
.prio-urgente{color:#fff;background:var(--urgente)}
.prio-alta{color:var(--avviso);background:var(--avviso-tenue);
  box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--avviso) 32%,transparent)}
.tag-inoltro{font-size:.68rem;color:var(--viola);font-weight:700}
.stato{font-weight:560}
.s-aperto{color:var(--accento)} .s-in_lavorazione{color:var(--avviso)}
.s-in_attesa{color:var(--viola)} .s-risolto{color:var(--ok)} .s-chiuso{color:var(--tenue)}
.vuoto{color:var(--tenue);padding:3rem 1rem;text-align:center;background:var(--carta);
  border:1px dashed var(--bordo);border-radius:var(--raggio)}

/* ── Ticket ──────────────────────────────────────────────────── */
.ticket{background:var(--carta);border:1px solid var(--bordo);border-radius:16px;
  padding:1.3rem;box-shadow:var(--ombra)}
.ticket header{display:flex;gap:.8rem;align-items:flex-start}
.ticket header>div{flex:1;min-width:0}
.meta{color:var(--tenue);font-size:.86rem;margin:.25rem 0 0}
.stato-grande{font-size:.74rem;text-transform:uppercase;letter-spacing:.06em;font-weight:800;
  padding:.28rem .6rem;border-radius:999px;background:var(--sfondo);white-space:nowrap}
.indietro{display:inline-block;margin-bottom:1rem;color:var(--tenue);font-size:.87rem;text-decoration:none}
.indietro:hover{color:var(--accento)}
.inoltrato{background:var(--avviso-tenue);border:1px solid color-mix(in srgb,var(--avviso) 40%,transparent);
  border-radius:10px;padding:.55rem .8rem;font-size:.88rem;margin:1rem 0}
.rapide{display:flex;gap:.55rem;flex-wrap:wrap;align-items:center;margin:1.1rem 0}
.rapide .inline{display:inline-flex;gap:.4rem;align-items:center}
.rapide .inoltra{flex:1;min-width:290px;justify-content:flex-end}
.rapide .inoltra input[type=text]{flex:1;min-width:110px}
.governo{display:flex;gap:.9rem;align-items:end;flex-wrap:wrap;margin:1rem 0;
  padding:.85rem;background:var(--carta-2);border:1px solid var(--bordo);border-radius:10px}
.governo label{display:flex;flex-direction:column;gap:.22rem;font-size:.78rem;color:var(--tenue);
  text-transform:uppercase;letter-spacing:.04em;font-weight:600}

.filo{list-style:none;margin:1.6rem 0;padding:0;display:flex;flex-direction:column;gap:.75rem}
.msg{border:1px solid var(--bordo);border-radius:12px;padding:.75rem .95rem;background:var(--carta-2)}
.msg.operatore{background:var(--accento-tenue);border-color:color-mix(in srgb,var(--accento) 24%,var(--bordo))}
.msg.sistema{background:transparent;border-style:dashed;font-size:.88rem}
.msg.interno{background:var(--avviso-tenue);border-color:color-mix(in srgb,var(--avviso) 38%,transparent)}
.chi{font-size:.8rem;color:var(--tenue);margin-bottom:.32rem;font-weight:560}
.tag-interno{background:var(--avviso);color:#fff;border-radius:5px;padding:.02rem .3rem;
  font-size:.66rem;text-transform:uppercase;letter-spacing:.05em;font-weight:700;margin-left:.35rem}
.q{float:right;font-weight:400;font-variant-numeric:tabular-nums}
.testo{white-space:pre-wrap;overflow-wrap:anywhere}
.risposta{display:flex;flex-direction:column;gap:.45rem}
.risposta label{font-size:.78rem;text-transform:uppercase;letter-spacing:.04em;
  color:var(--tenue);font-weight:600}
.risposta textarea{width:100%;resize:vertical}
.azioni{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap}
.interna{font-size:.85rem;color:var(--tenue);text-transform:none;letter-spacing:0}

/* ── Comandi ─────────────────────────────────────────────────── */
button{background:linear-gradient(180deg,var(--accento-2),var(--accento));color:#fff;border:0;
  border-radius:9px;padding:0 .95rem;height:2.45rem;font:inherit;font-weight:560;cursor:pointer;
  box-shadow:0 1px 2px rgba(15,23,42,.18);transition:transform .1s,filter .15s}
button:hover{filter:brightness(1.07)} button:active{transform:translateY(1px)}
.btn-ok{background:linear-gradient(180deg,#22c55e,var(--ok))}
.btn-avviso{background:linear-gradient(180deg,#fb923c,var(--avviso))}
.btn-neutro{background:var(--carta);color:var(--tenue);border:1px solid var(--bordo);box-shadow:none}
.btn-neutro:hover{color:var(--testo);filter:none;border-color:var(--accento)}
/* ⚠️ DIRETTIVA: tutti i campi dati hanno LA STESSA ALTEZZA.
   Lasciati ai valori predefiniti, `input`, `select`, `input[type=date]` e
   `input[type=color]` vengono disegnati dal browser con altezze diverse fra
   loro — e in una griglia di campi affiancati il risultato e' una fila
   scalinata che sembra rotta anche quando funziona tutto. L'unica eccezione
   sono i testi lunghi (`textarea`), che devono poter crescere. */
select,input,textarea{
  padding:.48rem .65rem;border:1px solid var(--bordo);border-radius:9px;
  background:var(--carta);color:inherit;font:inherit;line-height:1.2;
  transition:border-color .15s,box-shadow .15s}
select,input:not([type=checkbox]):not([type=radio]){
  height:2.45rem;box-sizing:border-box}
input[type=checkbox],input[type=radio]{height:auto;padding:0;accent-color:var(--accento)}
input[type=color]{padding:.2rem;cursor:pointer}
input[type=date]{min-width:0}
textarea{height:auto;min-height:4.5rem}
select{appearance:none;-webkit-appearance:none;padding-right:1.9rem;
  background-image:linear-gradient(45deg,transparent 50%,var(--tenue) 50%),
                   linear-gradient(135deg,var(--tenue) 50%,transparent 50%);
  background-position:calc(100% - 15px) 50%,calc(100% - 10px) 50%;
  background-size:5px 5px,5px 5px;background-repeat:no-repeat}
select:focus,input:focus,textarea:focus{outline:none;border-color:var(--accento);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--accento) 18%,transparent)}

/* ── Schede periodo/prodotto ─────────────────────────────────── */
.tab{display:flex;gap:.4rem;align-items:center;flex-wrap:wrap;margin:0 0 1.2rem;
  padding-bottom:.55rem;border-bottom:1px solid var(--bordo)}
.tab a{text-decoration:none;font-size:.86rem;color:var(--tenue);padding:.3rem .7rem;
  border-radius:999px;transition:.14s;display:inline-flex;align-items:center;gap:.4rem}
.tab a::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--tinta);display:none}
.tab a[class*="d"]::before{display:inline-block}
.tab a:hover{background:var(--sfondo);color:var(--testo)}
.tab a.qui{background:var(--accento);color:#fff;font-weight:600}
.tab a.qui::before{background:#fff}
.tab .spinta{flex:1}
.tab .periodo{font-variant-numeric:tabular-nums;font-size:.8rem}

/* ── Statistiche ─────────────────────────────────────────────── */
.attesa{background:var(--avviso-tenue);border:1px solid color-mix(in srgb,var(--avviso) 40%,transparent);
  border-radius:14px;padding:1rem;margin-bottom:1.6rem}
.attesa.serena{background:var(--ok-tenue);border-color:color-mix(in srgb,var(--ok) 38%,transparent)}
.attesa h2{margin:0 0 .7rem;font-size:.98rem}
.attesa.serena h2{margin:0;color:var(--ok)}
.misure{display:grid;gap:.8rem;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));margin-bottom:2rem}
.misura{background:var(--carta);border:1px solid var(--bordo);border-radius:14px;padding:1rem;
  box-shadow:var(--ombra);position:relative;overflow:hidden}
.misura::before{content:"";position:absolute;inset:0 auto 0 0;width:3px;background:var(--accento)}
.misura-verde::before{background:var(--ok)}
.misura-avviso::before{background:var(--avviso)}
.misura-viola::before{background:var(--viola)}
.misura-titolo{font-size:.72rem;text-transform:uppercase;letter-spacing:.07em;color:var(--tenue);font-weight:700}
.misura-valore{font-size:1.75rem;font-weight:700;margin:.25rem 0 .1rem;letter-spacing:-.03em;
  font-variant-numeric:tabular-nums;line-height:1.1}
.misura-nota{font-size:.78rem;color:var(--tenue)}
.pochi{font-size:.9rem;font-weight:400;color:var(--tenue);font-style:italic;letter-spacing:0}

main section{margin-bottom:2.2rem}
main section h2{margin:0 0 .85rem;display:flex;align-items:center;gap:.5rem}
main section h2::before{content:"";width:3px;height:1em;border-radius:2px;flex:none;
  background:linear-gradient(180deg,var(--accento-2),var(--accento))}

/* ── Donut ───────────────────────────────────────────────────── */
/* ⚠️ Tre colonne fisse quando c'e' spazio, non `auto-fit`: con l'adattamento
   automatico su uno schermo largo i donut diventavano enormi, uno per riga. */
.donut-fila{display:grid;gap:.9rem;grid-template-columns:repeat(3,1fr)}
@media (max-width:940px){ .donut-fila{grid-template-columns:repeat(2,1fr)} }
@media (max-width:620px){ .donut-fila{grid-template-columns:1fr} }
.donut-blocco{background:var(--carta);border:1px solid var(--bordo);border-radius:14px;
  padding:1.1rem;box-shadow:var(--ombra);display:flex;gap:1rem;align-items:center}
.donut{position:relative;flex:none;width:126px;height:126px}
.donut svg{width:100%;height:100%;display:block;overflow:visible}
.fetta{transition:opacity .15s;stroke-linecap:butt}
.donut:hover .fetta{opacity:.42}
.donut .fetta:hover{opacity:1;filter:brightness(1.12)}
.donut-centro{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;
  justify-content:center;pointer-events:none}
.donut-centro b{font-size:1.45rem;font-weight:700;letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.donut-centro span{font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;color:var(--tenue);font-weight:600}
.donut-legenda{list-style:none;margin:0;padding:0;flex:1;min-width:0;
  display:flex;flex-direction:column;gap:.32rem;font-size:.83rem}
.donut-legenda li{display:flex;align-items:center;gap:.45rem}
.donut-legenda i{width:9px;height:9px;border-radius:3px;flex:none}
.donut-legenda .voce{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--tenue)}
.donut-legenda b{font-variant-numeric:tabular-nums}
.donut-legenda .quota{color:var(--tenue);font-size:.75rem;min-width:2.4em;text-align:right}
.donut-vuoto{width:126px;height:126px;border-radius:50%;border:14px solid var(--bordo);
  display:flex;align-items:center;justify-content:center;color:var(--tenue);font-size:.8rem}
.donut-titolo{font-size:.8rem;color:var(--tenue);margin:.5rem 0 0}
@media (max-width:420px){ .donut-blocco{flex-direction:column} }

/* ── Grafici a barre ─────────────────────────────────────────── */
.grafico{background:var(--carta);border:1px solid var(--bordo);border-radius:14px;
  padding:1.1rem;box-shadow:var(--ombra)}
.grafico svg{width:100%;height:auto;display:block}
.grafico .base{stroke:var(--bordo);stroke-width:1}
.grafico .asse{font-size:10px;fill:var(--tenue)}
.legenda{display:flex;gap:1rem;flex-wrap:wrap;margin:.7rem 0 0;font-size:.79rem;color:var(--tenue)}
.legenda i{display:inline-block;width:9px;height:9px;border-radius:3px;margin-right:.32rem}
.legenda .scala{margin-left:auto;font-variant-numeric:tabular-nums}
.vuoto-grafico{color:var(--tenue);padding:2rem;text-align:center;background:var(--carta);
  border:1px dashed var(--bordo);border-radius:14px}
.barre-h{list-style:none;margin:0;padding:1.1rem;display:flex;flex-direction:column;gap:.6rem;
  background:var(--carta);border:1px solid var(--bordo);border-radius:14px;box-shadow:var(--ombra)}
.barre-h li{display:grid;grid-template-columns:170px 1fr auto;gap:.75rem;align-items:center;font-size:.87rem}
.barre-h .traccia{background:var(--sfondo);border-radius:999px;height:.62rem;overflow:hidden}
.barre-h .riempimento{display:block;height:100%;border-radius:999px;
  transition:width .5s cubic-bezier(.22,1,.36,1)}
.barre-h .valore{color:var(--tenue);font-size:.79rem;white-space:nowrap;font-variant-numeric:tabular-nums}
@media (max-width:560px){ .barre-h li{grid-template-columns:1fr;gap:.2rem} }

/* ── Tabelle ─────────────────────────────────────────────────── */
.tabella{width:100%;border-collapse:separate;border-spacing:0;background:var(--carta);
  border:1px solid var(--bordo);border-radius:14px;overflow:hidden;box-shadow:var(--ombra)}
.tabella th,.tabella td{padding:.65rem .8rem;text-align:left;border-bottom:1px solid var(--bordo);
  vertical-align:middle;font-size:.88rem}
.tabella tbody tr:last-child td{border-bottom:0}
.tabella th{color:var(--tenue);font-weight:700;font-size:.7rem;text-transform:uppercase;
  letter-spacing:.07em;background:var(--carta-2)}
.tabella tbody tr{transition:background .12s}
.tabella tbody tr:hover{background:var(--carta-2)}
.tabella tr.spento{opacity:.48}
.slug{color:var(--tenue);font-size:.76rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.inline{display:inline}
.pillola{font-size:.72rem;padding:.12rem .5rem;border-radius:999px;background:var(--sfondo);
  border:1px solid var(--bordo);color:var(--tenue);text-transform:uppercase;
  letter-spacing:.05em;font-weight:700}
.p-attivo{color:var(--ok);border-color:color-mix(in srgb,var(--ok) 40%,transparent);background:var(--ok-tenue)}
.p-sospeso{color:var(--avviso);border-color:color-mix(in srgb,var(--avviso) 40%,transparent);background:var(--avviso-tenue)}
.ambiti{display:flex;gap:.6rem;flex-wrap:wrap;align-items:center;font-size:.84rem}
.avviso{color:var(--avviso);font-size:.8rem;font-weight:600}
.azioni-cella{display:flex;gap:.4rem;flex-wrap:wrap}

.riquadro{background:var(--carta);border:1px solid var(--bordo);border-radius:14px;
  padding:1.15rem;margin-top:1.6rem;display:flex;flex-direction:column;gap:.65rem;
  max-width:540px;box-shadow:var(--ombra)}
.riquadro h2{margin:0 0 .2rem}
.riquadro label{display:flex;flex-direction:column;gap:.22rem;font-size:.78rem;color:var(--tenue);
  text-transform:uppercase;letter-spacing:.04em;font-weight:600}
.riquadro button{align-self:flex-start;margin-top:.3rem}

.chiave-nuova{background:var(--ok-tenue);border:1px solid color-mix(in srgb,var(--ok) 45%,transparent);
  border-radius:14px;padding:1.15rem;margin-bottom:1.6rem}
.chiave-nuova h2{margin-top:0}
.chiave-nuova code{display:block;background:var(--carta);padding:.5rem .65rem;border-radius:8px;
  overflow-wrap:anywhere;font-size:.82rem;border:1px solid var(--bordo);
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.chiave-nuova dt{font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;
  color:var(--tenue);margin-top:.7rem;font-weight:700}
.chiave-nuova dd{margin:.2rem 0 0}

.errore{background:color-mix(in srgb,var(--urgente) 12%,var(--carta));
  color:var(--urgente);padding:.65rem .85rem;border-radius:10px;font-size:.9rem;
  border:1px solid color-mix(in srgb,var(--urgente) 30%,transparent)}
.ok{color:var(--ok);font-size:.9rem}

/* ── Accesso ─────────────────────────────────────────────────── */
body:has(.accesso){background:
  radial-gradient(1100px 520px at 12% -10%, color-mix(in srgb,#0ea5e9 13%,transparent), transparent 60%),
  radial-gradient(900px 480px at 88% 8%, color-mix(in srgb,#16a34a 11%,transparent), transparent 60%),
  radial-gradient(800px 520px at 50% 108%, color-mix(in srgb,#f59e0b 10%,transparent), transparent 60%),
  var(--sfondo)}
.accesso{max-width:372px;margin:10vh auto;background:var(--carta);border:1px solid var(--bordo);
  border-radius:20px;padding:2rem 1.9rem;box-shadow:var(--ombra-alta);position:relative;
  overflow:hidden}
.accesso::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;
  background:linear-gradient(90deg,#0ea5e9,#16a34a,#f59e0b)}
.accesso-marchio{display:flex;justify-content:center;margin-bottom:1.2rem}
.accesso-marchio svg{width:46px;height:46px;color:var(--accento)}
.accesso .sotto b{color:var(--testo);font-weight:600}
.accesso h1{text-align:center;font-size:1.5rem;letter-spacing:-.03em;margin:0}
/* L'occhiello segue il titolo: centrato come lui, o la carta va in croce. */
.occhiello{text-align:center;margin:.15rem 0 1.1rem;font-size:.68rem;
  text-transform:uppercase;letter-spacing:.16em;color:var(--tenue);font-weight:700}
.accesso .sotto{text-align:center;margin-bottom:1.4rem}
.accesso form{display:flex;flex-direction:column;gap:.28rem}
.accesso label{font-size:.76rem;text-transform:uppercase;letter-spacing:.05em;
  color:var(--tenue);margin-top:.65rem;font-weight:600}
.accesso button{margin-top:1.2rem;padding:.62rem}

/* ── Avvisi in sovrimpressione ───────────────────────────────── */
.avvisi{position:fixed;right:1rem;bottom:1rem;z-index:100;display:flex;
  flex-direction:column;gap:.6rem;max-width:min(360px,92vw)}
.avviso-carta{background:var(--carta);border:1px solid var(--bordo);
  border-left:4px solid var(--accento);border-radius:12px;padding:.85rem 2rem .85rem .95rem;
  box-shadow:var(--ombra-alta);position:relative;display:flex;flex-direction:column;gap:.15rem;
  animation:entra .34s cubic-bezier(.22,1,.36,1)}
@keyframes entra{from{opacity:0;transform:translateY(14px) scale(.97)}to{opacity:1;transform:none}}
.avviso-carta.esce{opacity:0;transform:translateY(8px);transition:opacity .28s,transform .28s}
@media (prefers-reduced-motion:reduce){ .avviso-carta{animation:none} }
.avviso-carta strong{font-size:.7rem;text-transform:uppercase;letter-spacing:.07em;color:var(--accento)}
.avviso-oggetto{font-weight:600;font-size:.92rem}
.avviso-corpo{font-size:.8rem;color:var(--tenue)}
.avviso-apri{margin-top:.4rem;font-size:.83rem;color:var(--accento);text-decoration:none;font-weight:600}
.avviso-chiudi{position:absolute;top:.35rem;right:.35rem;background:none;color:var(--tenue);
  border:0;font-size:1.15rem;line-height:1;padding:.15rem .3rem;box-shadow:none;cursor:pointer}
.avviso-chiudi:hover{color:var(--testo);filter:none}

/* ── Una fila di donut per ciascun prodotto ──────────────────── */
.prodotto-riga{background:var(--carta);border:1px solid var(--bordo);border-radius:14px;
  padding:.9rem 1rem 1rem;box-shadow:var(--ombra);margin-bottom:.9rem}
.prodotto-testa{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;
  padding-bottom:.7rem;border-bottom:1px solid var(--bordo);margin-bottom:.85rem}
.prodotto-testa b{font-size:.98rem;letter-spacing:-.01em}
.prodotto-testa .tinta{margin-top:0}
.prodotto-cifre{color:var(--tenue);font-size:.83rem;font-variant-numeric:tabular-nums}
.tutto-ok{color:var(--ok)}
.prodotto-apri{margin-left:auto;font-size:.8rem;color:var(--accento);text-decoration:none;font-weight:600}
.prodotto-apri:hover{text-decoration:underline}
.donut-tre{display:grid;grid-template-columns:repeat(3,1fr);gap:.7rem}
@media (max-width:780px){ .donut-tre{grid-template-columns:1fr} }

.donut-blocco.compatto{padding:.65rem;gap:.7rem;box-shadow:none;background:var(--carta-2)}
.donut-blocco.compatto .donut{width:92px;height:92px}
.donut-blocco.compatto .donut-vuoto{width:92px;height:92px;border-width:11px}
.donut-blocco.compatto .donut-centro b{font-size:1.1rem}
.donut-blocco.compatto .donut-centro span{font-size:.6rem}
.donut-blocco.compatto .donut-legenda{font-size:.76rem;gap:.22rem}
.donut-blocco.compatto .donut-legenda .quota{display:none}

/* ── La scheda personale ─────────────────────────────────────── */
.scheda{display:flex;flex-direction:column;gap:1rem;max-width:840px}
.scheda fieldset{border:1px solid var(--bordo);border-radius:14px;padding:1rem 1.1rem 1.15rem;
  background:var(--carta);box-shadow:var(--ombra);margin:0}
.scheda legend{font-size:.7rem;text-transform:uppercase;letter-spacing:.09em;
  color:var(--tenue);font-weight:700;padding:0 .45rem;margin-left:-.45rem}
.scheda fieldset{padding:1.1rem 1.15rem 1.25rem}
/* ⚠️ QUATTRO COLONNE FISSE, non `auto-fit`.
   Con l'adattamento automatico ogni riquadro finiva per avere un numero
   diverso di colonne — quattro in «Chi sei», due in «Come ti si raggiunge» —
   e «CAP» sotto «Cellulare» risultava largo il doppio. Con la griglia fissa
   e le larghezze dichiarate campo per campo, tutto si incolonna. */
.griglia{display:grid;gap:.8rem 1rem;grid-template-columns:repeat(4,minmax(0,1fr));
  align-items:start}
.col-1{grid-column:span 1} .col-2{grid-column:span 2}
.col-3{grid-column:span 3} .col-4{grid-column:span 4}
@media (max-width:820px){
  .griglia{grid-template-columns:repeat(2,minmax(0,1fr))}
  .col-3,.col-4{grid-column:span 2}
}
@media (max-width:520px){
  .griglia{grid-template-columns:1fr}
  .col-1,.col-2,.col-3,.col-4{grid-column:span 1}
}
.scheda label{display:flex;flex-direction:column;gap:.28rem;font-size:.7rem;
  text-transform:uppercase;letter-spacing:.06em;color:var(--tenue);font-weight:700;
  min-width:0}
/* Un'etichetta lunga non deve allargare la sua colonna e sfasare tutta la
   riga: va a capo, e la griglia resta in squadra. */
.scheda label{overflow-wrap:anywhere}
.scheda input,.scheda textarea{width:100%;text-transform:none;letter-spacing:0;
  font-weight:400;color:var(--testo)}
.scheda textarea{resize:vertical}
.scheda .aiuto{font-size:.82rem;color:var(--tenue);margin:.9rem 0 0;line-height:1.5;
  text-transform:none;letter-spacing:0;font-weight:400;max-width:78ch}
.scheda .aiuto + .aiuto{margin-top:.5rem}
.scheda-piede{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}
.scheda-piede .aiuto{font-size:.8rem;color:var(--tenue)}
.riquadro .aiuto{font-size:.8rem;color:var(--tenue);text-transform:none;letter-spacing:0;
  font-weight:400;margin:.2rem 0 0}

/* La scheda di un collega, in sola lettura */
.scheda-lettura{background:var(--carta);border:1px solid var(--bordo);border-radius:14px;
  padding:1.1rem;box-shadow:var(--ombra);max-width:640px}
.scheda-lettura dl{display:grid;grid-template-columns:auto 1fr;gap:.45rem 1rem;margin:0}
.scheda-lettura dt{font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;
  color:var(--tenue);font-weight:700;white-space:nowrap}
.scheda-lettura dd{margin:0}
.scheda-lettura .assente{color:var(--tenue);font-style:italic}

/* ── Passaggio di consegne ───────────────────────────────────── */
.passaggio{margin:1rem 0;border:1px solid var(--bordo);border-radius:12px;
  background:var(--carta-2);overflow:hidden}
.passaggio summary{list-style:none;cursor:pointer;padding:.7rem .9rem;font-size:.9rem;
  font-weight:560;color:var(--accento);transition:background .12s}
.passaggio summary::-webkit-details-marker{display:none}
.passaggio summary:hover{background:var(--accento-tenue)}
.passaggio-corpo{padding:0 .9rem 1rem}
.passaggio .aiuto{font-size:.82rem;color:var(--tenue);margin:0 0 .8rem;max-width:70ch}
.modulo-passaggio{display:grid;gap:.7rem;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));
  align-items:end}
.modulo-passaggio label{display:flex;flex-direction:column;gap:.22rem;font-size:.76rem;
  text-transform:uppercase;letter-spacing:.04em;color:var(--tenue);font-weight:600}
.modulo-passaggio label.lungo{grid-column:1 / -1}
.modulo-passaggio input,.modulo-passaggio select{text-transform:none;letter-spacing:0;font-weight:400}
.modulo-passaggio button{align-self:end}

.storico-passaggi{background:var(--avviso-tenue);
  border:1px solid color-mix(in srgb,var(--avviso) 34%,transparent);
  border-radius:12px;padding:.8rem .95rem;margin:1rem 0;font-size:.87rem}
.storico-passaggi ol{margin:.5rem 0 0;padding-left:1.2rem;display:flex;flex-direction:column;gap:.35rem}
.tipo-passaggio{font-size:.68rem;text-transform:uppercase;letter-spacing:.05em;font-weight:700;
  padding:.05rem .35rem;border-radius:5px;margin:0 .3rem}
.tipo-passaggio.superiore{background:var(--viola);color:#fff}
.tipo-passaggio.collega{background:var(--bordo);color:var(--tenue)}
.storico-passaggi .motivo{color:var(--tenue)}
.nota-passaggio{display:block;color:var(--tenue);font-style:italic;font-size:.83rem}
.riga-spunta{flex-direction:row !important;align-items:center;gap:.4rem !important;
  text-transform:none !important;letter-spacing:0 !important;font-weight:400 !important}

/* ── Registro ────────────────────────────────────────────────── */
.registro .quando{white-space:nowrap;font-variant-numeric:tabular-nums;color:var(--tenue)}
.registro .azione{font-weight:560}
.registro tr.cat-sicurezza .azione{color:var(--urgente)}
.registro tr.cat-passaggi .azione{color:var(--avviso)}
.registro tr.cat-personali .azione{color:var(--viola)}
.registro tr.cat-configurazione .azione{color:#0891b2}
.tab a b{font-variant-numeric:tabular-nums;opacity:.7;font-weight:700}

/* ── Presenze ────────────────────────────────────────────────── */
.a-riguardo{background:var(--accento-tenue);
  border:1px solid color-mix(in srgb,var(--accento) 28%,transparent);
  border-radius:12px;padding:.9rem 1rem;margin:0 0 1.4rem;font-size:.88rem;max-width:88ch}
.periodo-blocco{margin-bottom:1.6rem}
.periodo-blocco h2{font-size:.9rem;color:var(--tenue);text-transform:uppercase;
  letter-spacing:.06em;font-weight:700}
.copertura li{grid-template-columns:56px 1fr 56px}
.copertura .etichetta{font-variant-numeric:tabular-nums;color:var(--tenue);font-size:.8rem}

/* ── Chi e collegato ─────────────────────────────────────────── */
.presenza-menu{position:relative}
.presenza-menu summary{list-style:none;cursor:pointer;border-radius:999px;
  padding:.2rem .5rem;transition:background .14s}
.presenza-menu summary::-webkit-details-marker{display:none}
.presenza-menu summary:hover{background:var(--ok-tenue)}
.punto.spenta{background:var(--tenue);box-shadow:0 0 0 3px color-mix(in srgb,var(--tenue) 20%,transparent)}
.presenza-pannello{position:absolute;right:0;top:calc(100% + .55rem);width:min(300px,88vw);
  background:var(--carta);border:1px solid var(--bordo);border-radius:var(--raggio);
  box-shadow:var(--ombra-alta);z-index:50;overflow:hidden}
.presenza-pannello ul{list-style:none;margin:0;padding:0}
.presenza-pannello li{display:flex;align-items:center;gap:.5rem;padding:.5rem .8rem;
  border-bottom:1px solid var(--bordo);font-size:.87rem}
.presenza-pannello li .punto{color:var(--ok);flex:none}
.chi-nome{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:560}
.chi-nome em{color:var(--tenue);font-style:normal;font-weight:400}
.chi-carico{color:var(--tenue);font-size:.78rem;white-space:nowrap;font-variant-numeric:tabular-nums}
.chi-da{color:var(--tenue);font-size:.74rem;white-space:nowrap}
.presenza-nota{margin:0;padding:.6rem .8rem;font-size:.75rem;color:var(--tenue);
  background:var(--carta-2);line-height:1.45}

/* ── Qualifica: si legge, non si scrive ──────────────────────── */
.campo-letto{display:flex;flex-direction:column;gap:.22rem;justify-content:flex-start}
.etichetta-letta{font-size:.76rem;text-transform:uppercase;letter-spacing:.04em;
  color:var(--tenue);font-weight:600}
.valore-letto{height:2.45rem;display:flex;align-items:center;padding:0 .65rem;
  border:1px dashed var(--bordo);border-radius:9px;background:var(--carta-2);
  color:var(--testo);font-size:.95rem}
.assente{color:var(--tenue);font-style:italic;font-size:.9rem}
.qualifica-scelta{display:block;margin-top:.35rem}
.qualifica-scelta select{font-size:.82rem;height:2rem;padding:0 1.8rem 0 .5rem}
.dichiarata{font-size:.74rem;color:var(--avviso);margin-top:.25rem;font-style:italic}
