:root{
  color-scheme:light;
  --bg:#F6F6F3;--surface:#FFFFFF;--surface-2:#F2F2EE;--surface-3:#EAEAE4;
  --ink:#16181B;--ink-2:#3D4248;--muted:#6E7379;
  --line:#E4E4DE;--line-2:#EFEFEA;
  --giallo:#F7B50B;--giallo-2:#FFC93B;--giallo-ink:#7E5800;--giallo-soft:#FEF6E2;
  --verde:#1B6F48;--verde-soft:#E6F2EB;
  --rosso:#A5271D;--rosso-soft:#FBEAE8;
  --blu:#1F4E8C;--blu-soft:#E9EFF8;
  --scuro:#15181C;
  --o-s:0 1px 2px rgba(21,24,28,.05);
  --o-m:0 2px 4px rgba(21,24,28,.04),0 10px 24px -14px rgba(21,24,28,.22);
  --r:14px;--r-s:9px;
  --disp:'Plus Jakarta Sans','Helvetica Neue',Arial,sans-serif;
  --body:'Source Sans 3','Helvetica Neue',Arial,sans-serif;
  --mono:'JetBrains Mono',ui-monospace,Menlo,monospace;
}
*{box-sizing:border-box}
body{background:var(--bg);color:var(--ink);font-family:var(--body);font-size:15.5px;line-height:1.5;-webkit-font-smoothing:antialiased}
h1,h2,h3,h4{font-family:var(--disp);margin:0;letter-spacing:-.02em;line-height:1.15}
p{margin:0}
a{color:inherit;text-decoration:none}
:focus-visible{outline:2px solid var(--giallo);outline-offset:2px;border-radius:4px}

/* struttura */
.app{display:grid;grid-template-columns:250px 1fr;min-height:100vh}
@media (max-width:900px){.app{grid-template-columns:1fr}.side{display:none}}
.side{background:var(--surface-2);border-right:1px solid var(--line);padding:20px 14px;display:flex;flex-direction:column;gap:22px}
.side .logo{height:34px;width:auto;max-width:150px;align-self:flex-start;object-fit:contain;display:block;margin:4px 8px 0}
.side nav{display:grid;gap:2px}
.side .gruppo{font-family:var(--disp);font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:14px 10px 6px}
.side a.voce{display:flex;align-items:center;gap:10px;padding:9px 11px;border-radius:var(--r-s);font-family:var(--disp);font-weight:600;font-size:14.5px;color:var(--ink-2)}
.side a.voce:hover{background:var(--surface-3)}
.side a.voce.on{background:var(--surface);color:var(--ink);box-shadow:var(--o-s)}
.side a.voce.on::before{content:"";width:3px;height:18px;border-radius:99px;background:var(--giallo);margin-left:-11px;margin-right:8px}
.side a.voce .n{margin-left:auto;font-family:var(--disp);font-size:11.5px;font-weight:700;background:var(--giallo);color:#15181C;border-radius:99px;padding:1px 7px}
.side a.voce .n.grigio{background:var(--surface-3);color:var(--muted)}
.side .utente{margin-top:auto;display:flex;align-items:center;gap:10px;padding:10px;border-top:1px solid var(--line)}
.side .utente .av{width:32px;height:32px;border-radius:50%;background:var(--scuro);color:#F7F7F3;display:grid;place-items:center;font-family:var(--disp);font-weight:700;font-size:13px;flex:none}
.side .utente b{font-family:var(--disp);font-size:14px;font-weight:700;display:block;line-height:1.25}
.side .utente span{font-size:12.5px;color:var(--muted)}

.main{min-width:0;display:flex;flex-direction:column}
.top{background:var(--surface);border-bottom:1px solid var(--line);padding:16px 28px;display:flex;align-items:center;gap:18px;position:sticky;top:0;z-index:20}
.top h1{font-size:21px;font-weight:800}
.top .sub{font-size:13.5px;color:var(--muted);margin-top:2px}
.cerca{margin-left:auto;display:flex;align-items:center;gap:9px;background:var(--surface-2);border:1px solid var(--line);border-radius:99px;padding:8px 15px;min-width:250px;color:var(--muted)}
.cerca input{border:0;background:transparent;font-family:var(--body);font-size:14.5px;color:var(--ink);width:100%}
.cerca input:focus{outline:none}
@media (max-width:760px){.cerca{display:none}}
.cont{padding:26px 28px 48px;display:grid;gap:22px;align-content:start}
@media (max-width:600px){.cont,.top{padding-left:16px;padding-right:16px}}

/* elementi */
.tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
@media (max-width:1100px){.tiles{grid-template-columns:repeat(2,1fr)}}
@media (max-width:520px){.tiles{grid-template-columns:1fr}}
.tile{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:16px 18px;box-shadow:var(--o-s)}
.tile .et{font-family:var(--disp);font-size:12.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);display:flex;align-items:center;gap:7px}
.tile .et i{width:8px;height:8px;border-radius:50%;display:block;flex:none}
.tile .v{font-family:var(--disp);font-size:30px;font-weight:800;letter-spacing:-.03em;margin:8px 0 2px;font-variant-numeric:tabular-nums}
.tile .d{font-size:13.5px;color:var(--muted)}
.tile.urg{border-color:rgba(247,181,11,.55);box-shadow:0 0 0 3px var(--giallo-soft)}

.pannello{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--o-s);overflow:hidden}
.pannello > header{display:flex;align-items:center;gap:14px;padding:15px 18px;border-bottom:1px solid var(--line-2)}
.pannello > header h2{font-size:16.5px;font-weight:700}
.pannello > header .az{margin-left:auto;display:flex;gap:8px;align-items:center}
.pannello .vuoto{padding:18px;color:var(--muted);font-size:14.5px}
.p-foot{padding:12px 18px;border-top:1px solid var(--line-2);display:flex;align-items:center;gap:12px;font-size:13.5px;color:var(--muted)}

.btn{display:inline-flex;align-items:center;gap:7px;font-family:var(--disp);font-weight:700;font-size:14px;padding:8px 15px;border-radius:99px;border:1px solid transparent;cursor:pointer;background:none}
.btn-g{background:var(--giallo);color:#15181C}
.btn-g:hover{background:var(--giallo-2)}
.btn-d{background:var(--scuro);color:#F7F7F3}
.btn-o{border-color:var(--line);background:var(--surface);color:var(--ink)}
.btn-o:hover{border-color:var(--muted)}
.btn-t{color:var(--muted)}
.btn-t:hover{color:var(--ink)}

.tab{width:100%;border-collapse:collapse;font-size:14.5px}
.tab th{font-family:var(--disp);font-size:11.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);text-align:left;padding:10px 18px;background:var(--surface-2);border-bottom:1px solid var(--line-2);white-space:nowrap}
.tab td{padding:12px 18px;border-bottom:1px solid var(--line-2);vertical-align:middle}
.tab tr:last-child td{border-bottom:none}
.tab tr:hover td{background:var(--surface-2)}
.tabwrap{overflow-x:auto}
.targa{font-family:var(--disp);font-weight:700;font-size:13.5px;letter-spacing:.05em;background:var(--surface-2);border:1px solid var(--line);border-radius:5px;padding:4px 8px;white-space:nowrap;display:inline-block}
.sotto{display:block;font-size:12.5px;color:var(--muted);margin-top:2px}
.num{font-variant-numeric:tabular-nums;white-space:nowrap;font-family:var(--disp);font-weight:600}

.st{font-family:var(--disp);font-size:11.5px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;padding:4px 10px;border-radius:99px;white-space:nowrap;display:inline-block}
.st-g{background:var(--giallo-soft);color:var(--giallo-ink)}
.st-v{background:var(--verde-soft);color:var(--verde)}
.st-r{background:var(--rosso-soft);color:var(--rosso)}
.st-b{background:var(--blu-soft);color:var(--blu)}
.st-n{background:var(--surface-2);color:var(--muted)}

.gg{font-family:var(--disp);font-weight:700;font-size:13px;padding:3px 9px;border-radius:99px;background:var(--surface-2);color:var(--muted)}
.gg.caldo{background:var(--rosso-soft);color:var(--rosso)}
.gg.medio{background:var(--giallo-soft);color:var(--giallo-ink)}

.barra{height:6px;border-radius:99px;background:var(--surface-2);overflow:hidden}
.barra i{display:block;height:100%;border-radius:99px;background:var(--giallo)}
.barra i.pieno{background:var(--verde)}

/* ——— la porta: accesso e registrazione ——— */
.porta{min-height:100vh;display:grid;place-items:center;padding:32px 20px;
  background:radial-gradient(120% 90% at 50% -10%,rgba(247,181,11,.16),transparent 60%),var(--bg)}
.porta .scatola{background:var(--surface);border:1px solid var(--line);border-radius:18px;
  box-shadow:var(--o-m);padding:32px;width:100%;max-width:440px}
.porta .scatola.larga{max-width:620px}
.porta img.marchio{height:38px;width:auto;max-width:170px;object-fit:contain;display:block;margin-bottom:24px}
.porta h1{font-family:var(--disp);font-size:25px;font-weight:800;letter-spacing:-.03em;margin-bottom:6px}
.porta p.occhiello{color:var(--muted);font-size:15.5px;margin-bottom:22px}
.campo{display:grid;gap:6px;margin-bottom:14px}
.campo label{font-family:var(--disp);font-size:12px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.campo input,.campo select{font-family:var(--body);font-size:16px;padding:11px 13px;border:1px solid var(--line);
  border-radius:var(--r-s);background:var(--surface);color:var(--ink);width:100%}
.campo input:focus,.campo select:focus{outline:2px solid var(--giallo);outline-offset:1px;border-color:transparent}
.campo .aiuto{font-size:13px;color:var(--muted)}
.coppia{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media (max-width:520px){.coppia{grid-template-columns:1fr}}
.btn.pieno{width:100%;justify-content:center;padding:12px}
.google{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;padding:11px;
  border:1px solid var(--line);border-radius:99px;background:var(--surface);font-family:var(--disp);
  font-weight:700;font-size:15px;color:var(--ink);cursor:pointer}
.google:hover{border-color:var(--muted);background:var(--surface-2)}
.oppure{display:flex;align-items:center;gap:12px;color:var(--muted);font-size:13.5px;margin:18px 0}
.oppure::before,.oppure::after{content:"";height:1px;background:var(--line);flex:1}
.avviso{border-radius:var(--r-s);padding:12px 14px;font-size:14.5px;margin-bottom:18px;line-height:1.45}
.avviso.male{background:var(--rosso-soft);color:var(--rosso)}
.avviso.bene{background:var(--verde-soft);color:var(--verde)}
.avviso.attesa{background:var(--giallo-soft);color:var(--giallo-ink)}
.sotto-porta{text-align:center;font-size:14.5px;color:var(--muted);margin-top:20px}
.sotto-porta a{color:var(--giallo-ink);font-weight:600}
.fascia-prova{background:var(--giallo-soft);color:var(--giallo-ink);font-family:var(--disp);font-weight:600;
  font-size:13.5px;padding:9px 18px;border-bottom:1px solid var(--line)}
.riga-utente{display:grid;grid-template-columns:1fr auto auto auto;gap:12px;align-items:center;
  padding:13px 0;border-bottom:1px solid var(--line-2)}
.riga-utente:last-child{border-bottom:none}
@media (max-width:700px){.riga-utente{grid-template-columns:1fr;gap:6px}}
.pannello form.in-riga{display:inline}
