/* Gestionale Palestra — l'aspetto: barra laterale notte, numeri grandi,
   stati a colori (verde va bene, ambra attenzione, rosso non va). Si aggiunge
   allo stile di base (app.css) e a quello delle schermate di accesso
   (studio.css), che vengono dalla Cartella Nutrizionale. */

body{font-size:14.5px;}
h1,h2,h3,h4{letter-spacing:-.005em;}
.num, td.num{font-family:var(--font-body); font-variant-numeric:tabular-nums;}
.maiuscolo{text-transform:uppercase;}
:focus-visible{outline:2px solid var(--accent); outline-offset:2px;}
.ic svg, .btn svg, .cerca svg{width:18px; height:18px; flex:none;}
.btn svg{width:16px; height:16px;}

/* ---------- ingresso: due metà ---------- */
#gate{display:grid; grid-template-columns:minmax(0,1.1fr) minmax(380px,1fr); padding:0; background:var(--bg-elev); align-items:stretch;}
.gate-lato{position:relative; overflow:hidden; background:var(--notte); color:#fff; display:flex; flex-direction:column; justify-content:space-between; padding:48px 56px;}
.gate-corsie{position:absolute; inset:0; width:100%; height:100%;}
.gate-corsie g{stroke:rgba(201,210,236,.16); stroke-width:1.2;}
.gate-corsie .viva{stroke:#4D6BF0; stroke-width:2;}
.gate-marchio{position:relative; font-weight:650; font-size:15px; letter-spacing:.01em; color:var(--notte-testo);}
.gate-titolo{position:relative; max-width:560px;}
.gate-titolo .nome-palestra{font-size:clamp(34px,4.6vw,60px); line-height:1.02; font-weight:780; font-stretch:115%; letter-spacing:-.02em;}
.gate-titolo p{color:var(--notte-testo); font-size:15.5px; line-height:1.55; margin:16px 0 0; max-width:440px;}
.gate-card{align-self:center; justify-self:center; border:none; border-top:none; box-shadow:none; background:transparent; max-width:400px; padding:40px 24px;}
.gate-card h1{color:var(--accent); text-align:left; font-size:11.5px;}
.gate-sub{text-align:left; font-size:14px;}
#gate-body{border-top:none; padding-top:6px;}
.gate-base{display:none;}
.gate-error{text-align:left;}
@media (max-width:900px){
  #gate{grid-template-columns:1fr;}
  .gate-lato{min-height:220px; padding:28px 24px;}
  .gate-titolo .nome-palestra{font-size:34px;}
}

/* ---------- barra laterale scura ---------- */
.sidebar{background:var(--notte); border-right:none; color:var(--notte-testo); padding:20px 12px;}
.brand{padding:4px 10px 18px;}
.logo-base.brand-base{display:none;}
.brand-sotto{font-size:17px; font-weight:750; letter-spacing:-.005em; text-transform:none; color:#fff; padding:0; line-height:1.2;}
.nav-gruppo{font-size:11.5px; font-weight:600; color:rgba(201,210,236,.6); padding:10px 12px 6px;}
.nav-btn{color:var(--notte-testo); font-weight:550; font-size:14.5px; padding:10px 12px; border-radius:10px; position:relative;}
.nav-btn .ic{width:20px; display:inline-flex;}
.nav-btn:hover{background:rgba(255,255,255,.06); color:#fff;}
.nav-btn.active{background:var(--notte-2); color:#fff;}
.nav-btn.active::before{content:''; position:absolute; left:-12px; top:9px; bottom:9px; width:3px; border-radius:0 3px 3px 0; background:#7B96FF;}
.sidebar-foot{border-top:1px solid rgba(255,255,255,.1);}
.sidebar-foot .nav-btn{color:var(--notte-testo); font-size:13.5px; padding:8px 12px;}
@media (max-width:860px){ .sidebar-foot{border-left:1px solid rgba(255,255,255,.1);} .nav-gruppo{display:none;} .nav-btn.active::before{display:none;} }

.topbar{padding:18px 32px; background:var(--bg); border-bottom:none;}
.topbar h2{font-size:26px; font-weight:750; font-stretch:105%;}
.topbar .crumb{font-size:12.5px;}
.content{max-width:1180px; padding:4px 32px 64px;}
@media (max-width:860px){ .topbar{padding:14px 16px;} .content{padding:4px 16px 48px;} }

.card{border-radius:16px; box-shadow:none; padding:22px;}
.card-head h3{font-size:16px; font-weight:680;}
.btn{border-radius:10px;}
.btn-primary{box-shadow:0 1px 0 rgba(14,27,61,.08);}

/* ---------- numeri grandi ---------- */
.tabellone{display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); background:var(--surface); border:1px solid var(--border); border-radius:16px; margin:8px 0 18px;}
.tabellone > div{padding:18px 22px 20px; border-left:1px solid var(--border); min-width:0;}
.tabellone > div:first-child{border-left:0;}
.tabellone .l{display:block; font-size:13.5px; font-weight:620;}
.tabellone .n{display:block; font-size:50px; line-height:1; font-weight:640; font-stretch:68%; letter-spacing:-.015em; margin:8px 0 8px; font-variant-numeric:tabular-nums;}
.tabellone .n-no{color:var(--danger);} .tabellone .n-warn{color:var(--warn);}
.tabellone .s{font-size:13px; color:var(--text-muted);}
@media (max-width:700px){ .tabellone > div{border-left:0; border-top:1px solid var(--border);} .tabellone > div:first-child{border-top:0;} }

/* ---------- ricerca, filtri, elenco ---------- */
.cerca{position:relative; flex:1; display:block;}
.cerca svg{position:absolute; left:12px; top:50%; transform:translateY(-50%); color:var(--text-muted);}
.cerca input{padding-left:40px; height:44px; font-size:15px;}
.filtri{display:flex; gap:6px; flex-wrap:wrap; margin:0 0 14px;}
.filtri button{border:1px solid var(--border); background:none; padding:5px 13px; border-radius:99px; font-size:13px; color:var(--text-2); font-weight:550;}
.filtri button:hover{border-color:var(--border-strong); color:var(--text);}
.filtri button.on{background:var(--text); border-color:var(--text); color:var(--bg-elev);}
.plist{gap:0;}
.prow{border:none; border-bottom:1px solid var(--border); border-radius:0; background:none; padding:12px 6px; gap:12px; font:inherit; color:inherit; cursor:pointer;}
.prow:last-child{border-bottom:none;}
.prow:hover{background:var(--surface-2);}
.prow.spento{opacity:.62;}
.prow-name{display:block;} .prow-sub{display:block;}
.avatar{background:var(--accent-soft); color:var(--accent-strong); font-family:var(--font-body); font-weight:700; font-size:13px;}
.avatar.grande{width:64px; height:64px; font-size:22px;}

/* ---------- stati ---------- */
.pill{font-size:12px; white-space:nowrap;}
.pill-ok{background:var(--good-soft); color:var(--good);}
.pill-no{background:var(--danger-soft); color:var(--danger);}
.pill-warn{background:var(--warn-soft); color:var(--warn);}
.avviso{padding:9px 12px; border-radius:10px; font-size:13.5px; margin:4px 0 8px;}
.avviso-warn{background:var(--warn-soft); color:var(--warn);}
.avviso-no{background:var(--danger-soft); color:var(--danger);}
.stato-cert{display:flex; gap:14px; align-items:center; padding:16px 18px; border-radius:14px; margin-bottom:16px; border:1px solid;}
.stato-cert svg{width:30px; height:30px; flex:none;}
.stato-cert b{display:block; font-size:15.5px;}
.stato-cert span{font-size:13.5px; opacity:.9;}
.stato-ok{background:var(--good-soft); color:var(--good); border-color:color-mix(in srgb, var(--good) 28%, transparent);}
.stato-warn{background:var(--warn-soft); color:var(--warn); border-color:color-mix(in srgb, var(--warn) 30%, transparent);}
.stato-no{background:var(--danger-soft); color:var(--danger); border-color:color-mix(in srgb, var(--danger) 30%, transparent);}

/* ---------- scheda dell'iscritto ---------- */
.persona{display:flex; gap:18px; align-items:center; flex-wrap:wrap;}
.persona-testo{flex:1; min-width:220px;}
.persona-testo h3{font-size:22px; font-weight:750; margin-bottom:3px;}
.persona-pill{display:flex; gap:6px; flex-wrap:wrap; margin-top:8px;}
.persona-azioni{display:flex; gap:6px; flex-wrap:wrap;}
.scelte{display:flex; flex-wrap:wrap; gap:8px 18px; margin:0 0 14px;}
.scelte.colonna{flex-direction:column;}
.scelta{display:inline-flex; align-items:center; gap:8px; font-size:14px; cursor:pointer;}
.scelta input{width:18px; height:18px; margin:0; accent-color:var(--accent);}
dl.dati{display:grid; grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); gap:12px 24px; margin:0;}
dl.dati dt{font-size:12px; color:var(--text-muted); font-weight:600;}
dl.dati dd{margin:2px 0 0; font-size:14.5px;}
.barra-fissa{position:sticky; bottom:0; background:color-mix(in srgb, var(--bg) 92%, transparent); backdrop-filter:blur(6px); padding:12px 0; margin-top:-4px; z-index:4; border-top:1px solid var(--border);}
input[readonly], select:disabled{background:var(--surface-2); color:var(--text-2);}
tr.riga-spenta td{opacity:.55;}

/* ---------- registro ---------- */
.sigillo{display:flex; flex-direction:column; gap:2px; padding:12px 16px; border-radius:14px; margin-bottom:14px; border:1px solid;}
.sigillo b{font-size:15px;} .sigillo span{font-size:13px;}
.sigillo.si{background:var(--good-soft); color:var(--good); border-color:color-mix(in srgb, var(--good) 28%, transparent);}
.sigillo.no{background:var(--danger-soft); color:var(--danger); border-color:color-mix(in srgb, var(--danger) 32%, transparent);}
.reg-campo{margin-top:2px;} .reg-campo b{font-weight:600; color:var(--text-2);}

/* ---------- elementi della base che servono anche qui ---------- */
.link-btn{background:none; border:none; color:var(--accent); font-weight:600; font-size:13px; cursor:pointer; padding:2px 3px; font-family:inherit;}
.link-btn:hover{text-decoration:underline;}
.inline-check{display:inline-flex; align-items:center; gap:7px; font-size:13.5px; font-weight:600; color:var(--text-2); cursor:pointer;}
.inline-check input{width:auto; margin:0;}
details.fold{border:1px solid var(--border); border-radius:12px; margin-bottom:14px; background:var(--bg-elev);}
details.fold > summary{list-style:none; cursor:pointer; padding:12px 14px; display:flex; align-items:center; gap:10px; font-weight:600; font-size:14.5px; border-radius:12px;}
details.fold > summary::-webkit-details-marker{display:none;}
.fold-body{padding:2px 14px 14px;}
.pv-sotto{margin:16px 0 8px; font-size:14px;}

/* ---------- stampa ---------- */
#print-sheet{display:none;}
@media print{
  #gate, #app, #modal-root, #toast-root{display:none !important;}
  html, body{background:#fff !important;}
  #print-sheet.active{display:block !important;}
  @page{margin:15mm 14mm;}
}
/* il logo proprio della palestra, se c'è, sopra il nome */
body.con-logo .logo-base.brand-base{display:block; max-width:150px; margin-bottom:8px;}
table.data td.num, table.data th.num{font-family:var(--font-body); text-align:left; white-space:nowrap;}
.persona-dati{font-size:14.5px; color:var(--text-2);}
.persona-dati b{color:var(--text);}
.gate-note{text-align:left;}
.gate-link{margin-left:0;}
.tbl-wrap.registro td:nth-child(2), .tbl-wrap.registro td:nth-child(3){white-space:nowrap;}
