/* ===== Bottoni (solidi: bianco + bordo, primario in verde smorzato) ===== */
.btn{
  border:1px solid var(--g10); border-radius:var(--radius-sm); padding:8px 16px; font-size:var(--fs-14);
  cursor:pointer; background:var(--bianco); color:var(--g60); font-weight:600;
  box-shadow:var(--neu-out-sm);
  transition:box-shadow .15s ease, color .15s ease, border-color .15s ease, transform .12s var(--ease-out);
}
.btn:hover{color:var(--g90); border-color:var(--g30);}
/* Scale sul press: dà un feedback immediato, l'interfaccia "ascolta" il click */
.btn:active{transform:scale(.97);}
.btn.primario{background:var(--verde); color:#fff;}
.btn.primario:hover{background:var(--verde-scuro); color:#fff;}
.btn.pericolo{color:var(--errore);}
.btn.pericolo:hover{background:var(--errore-tenue);}
.btn:disabled{opacity:.45; cursor:default; box-shadow:none; transform:none;}

.btn-mini{border:1px solid var(--g10); background:var(--bianco); border-radius:var(--radius-sm); padding:5px 11px; font-size:12.5px; cursor:pointer; margin-right:4px; color:var(--g60); font-weight:600; box-shadow:var(--neu-out-sm); transition:box-shadow .15s ease, color .15s ease, border-color .15s ease, transform .12s var(--ease-out);}
.btn-mini:hover{color:var(--g90); border-color:var(--g30);}
.btn-mini:active{transform:scale(.96);}
.btn-mini.rosso{color:var(--errore);}
.btn-mini.rosso:hover{background:var(--errore-tenue);}

/* ===== Input / Form (SEMPRE solidi: bianco pieno + bordo netto,
   mai vetro né trasparenze — la leggibilità dei dati viene prima) ===== */
input[type=text], input[type=number], input[type=email], input[type=password], input[type=date], select, textarea{
  border:1px solid var(--bordo); border-radius:var(--radius-sm); padding:9px 12px; font-size:var(--fs-14);
  font-family:inherit; background:var(--bianco); color:var(--g90);
  transition:border-color .15s ease, box-shadow .15s ease;
}
input:hover, select:hover, textarea:hover{border-color:var(--g30);}
input:focus, select:focus, textarea:focus{outline:3px solid var(--verde); outline-offset:0; border-color:transparent;}
input::placeholder, textarea::placeholder{color:var(--g30);}

.campo{margin-bottom:var(--sp-4);}
.campo > label{display:block; font-weight:600; font-size:13px; color:var(--g60); margin-bottom:5px;}
.campo .aiuto{font-size:12.5px; color:var(--g60); margin-top:4px; line-height:1.45; max-width:680px;}
.campo input[type=text], .campo input[type=number], .campo select, .campo textarea{width:100%; max-width:640px;}
.campo input[type=number]{max-width:220px;}
.campo select{max-width:420px;}
.campo textarea{min-height:90px; resize:vertical;}
.con-unita{display:flex; align-items:center; gap:8px;}
.unita{font-size:13px; color:var(--g60); white-space:nowrap;}
.radio-si-no{display:flex; gap:18px;}
.radio-si-no label{display:flex; align-items:center; gap:6px; font-size:14px; cursor:pointer;}
.computed-val{display:inline-block; background:var(--superficie); border-radius:var(--radius-sm); padding:9px 16px; font-weight:700; color:var(--verde-scuro); font-size:15px; min-width:80px; box-shadow:var(--neu-in-sm);}

.guida{background:var(--verde-tenue); border-left:3px solid var(--verde); border-radius:0 var(--radius-sm) var(--radius-sm) 0; padding:10px 14px; font-size:13px; line-height:1.55; margin-bottom:20px; color:var(--verde-scuro); box-shadow:var(--neu-out-sm);}
.guida b{color:var(--verde-scuro);}
.nota{background:var(--superficie); border-left:3px solid var(--g30); border-radius:0 var(--radius-sm) var(--radius-sm) 0; padding:10px 14px; font-size:13px; line-height:1.5; margin-bottom:18px; color:var(--g60); box-shadow:var(--neu-out-sm);}

/* ===== Card (glass: contenitori di sintesi della dashboard,
   NON aree di inserimento dati) ===== */
.card{background:var(--glass-bg); backdrop-filter:var(--glass-blur); -webkit-backdrop-filter:var(--glass-blur); border:var(--glass-bordo); border-radius:var(--radius-lg); padding:var(--sp-6); box-shadow:var(--glass-ombra);}
.card h3{font-size:14.5px; color:var(--g90); margin-bottom:10px;}
.card-testo{font-size:12.5px; color:var(--g60); line-height:1.5; margin-top:10px; border-top:1px solid var(--g10); padding-top:8px;}
.card.vuota{display:flex; flex-direction:column; justify-content:center; align-items:center; min-height:160px; color:var(--g60); font-size:13px; text-align:center;}

/* Le sezioni con form e tabelle di inserimento restano SOLIDE (bianco pieno) */
section.disclosure{display:none; background:var(--bianco); border:1px solid var(--g10); border-radius:var(--radius-lg); padding:28px 32px; box-shadow:var(--neu-out-sm);}
section.disclosure.attiva{display:block;}
section h2{font-size:var(--fs-20); color:var(--g90); margin-bottom:4px;}
section .descrizione{color:var(--g60); font-size:13.5px; margin-bottom:14px; line-height:1.5;}

/* ===== Tabelle ===== */
table.dinamica, table.docs, table.aziende, table.admin-tabella{width:100%; border-collapse:collapse; font-size:13.5px;}
table.dinamica th, table.docs th, table.aziende th, table.admin-tabella th{
  background:transparent; color:var(--g60); text-align:left; text-transform:uppercase; font-size:12px;
  padding:9px 10px; border-bottom:1px solid var(--g10); font-weight:700;
}
table.dinamica td, table.docs td, table.aziende td, table.admin-tabella td{border-bottom:1px solid var(--g10); padding:9px 10px; height:48px;}
table.dinamica tr:hover td, table.docs tr:hover td, table.aziende tr:hover td, table.admin-tabella tr:hover td{background:var(--g05);}
table.dinamica td input, table.dinamica td select{width:100%; border:none; padding:6px 8px; font-size:13.5px; font-family:inherit; background:transparent; box-shadow:none; border-radius:6px;}
table.dinamica td input:focus, table.dinamica td select:focus{outline:3px solid var(--verde); outline-offset:-3px; background:var(--bianco);}
table.aziende tr.corrente td{background:var(--verde-tenue);}
.btn-riga{margin-top:10px; background:var(--superficie); color:var(--verde-scuro); border:none; border-radius:var(--radius-sm); padding:7px 16px; font-size:13px; font-weight:600; cursor:pointer; box-shadow:var(--neu-out-sm); transition:box-shadow .15s ease, color .15s ease, transform .12s var(--ease-out);}
.btn-riga:hover{color:var(--verde);}
.btn-riga:active{box-shadow:var(--neu-in-sm); transform:scale(.97);}
.btn-del{background:none; border:none; color:var(--errore); cursor:pointer; font-size:16px; padding:4px 8px; line-height:1;}
.td-del{width:36px; text-align:center;}

/* ===== Badge / Pill ===== */
.badge-modulo{display:inline-block; font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.05em; border-radius:999px; padding:3px 10px; margin-left:8px; vertical-align:middle; box-shadow:var(--neu-out-sm);}
.badge-modulo.basic{background:var(--verde-tenue); color:var(--verde-scuro);}
.badge-modulo.comp{background:var(--attenzione-tenue); color:var(--attenzione);}
.badge-modulo.extra{background:var(--superficie); color:var(--g60);}
.badge-ruolo{font-size:10px; font-weight:700; text-transform:uppercase; background:var(--verde-tenue); color:var(--verde-scuro); border-radius:999px; padding:2px 8px; margin-left:4px;}

.stato-pill{display:inline-block; padding:3px 12px; border-radius:999px; font-size:11px; font-weight:700; box-shadow:var(--neu-out-sm);}
.stato-pill.attivo{background:var(--verde-tenue); color:var(--verde-scuro);}
.stato-pill.invitato{background:var(--attenzione-tenue); color:var(--attenzione);}
.stato-pill.sospeso{background:var(--superficie); color:var(--g60);}

.doc-chip{background:var(--superficie); color:var(--g60); font-size:12px; border-radius:999px; padding:5px 14px; box-shadow:var(--neu-out-sm);}
.doc-chip.ok{background:var(--verde-tenue); color:var(--verde-scuro); font-weight:600;}

/* ===== Progress ===== */
.barra-progresso{background:var(--superficie); border-radius:999px; height:8px; width:100%; overflow:hidden; box-shadow:var(--neu-in-sm);}
.barra-progresso > div{background:var(--verde); height:100%; border-radius:999px; transition:width .35s var(--ease-out);}
.prog-riga{display:flex; align-items:center; gap:8px; margin-bottom:7px; font-size:12.5px;}
.prog-riga .prog-lab{width:130px; flex-shrink:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
.prog-riga .prog-barra{flex:1; background:var(--superficie); border-radius:999px; height:8px; overflow:hidden; box-shadow:var(--neu-in-sm);}
.prog-riga .prog-fill{height:100%; background:var(--verde); border-radius:999px; transition:width .35s var(--ease-out);}
.prog-riga .prog-pct{width:38px; text-align:right; font-weight:600; font-variant-numeric:tabular-nums;}

/* ===== Dialog (contenitore glass; i campi al suo interno restano solidi) ===== */
dialog{border:var(--glass-bordo); border-radius:var(--radius-lg); padding:26px 30px; max-width:480px; background:rgba(255,255,255,.75); backdrop-filter:var(--glass-blur); -webkit-backdrop-filter:var(--glass-blur); box-shadow:0 18px 48px rgba(31,41,55,.18);}
/* Entrata: scala dal centro (i modali restano centrati) + dissolvenza, con
   ease-out ~180ms. Uso un keyframe su [open] invece di @starting-style: così
   lo stato finale è quello naturale (opacità piena) e il dialog non può MAI
   restare invisibile, anche su browser che non supportano @starting-style.
   Con prefers-reduced-motion l'animazione è azzerata (vedi base.css). */
@keyframes dlg-entra{ from{opacity:0; transform:scale(.96);} to{opacity:1; transform:scale(1);} }
@keyframes dlg-backdrop{ from{opacity:0;} to{opacity:1;} }
dialog[open]{animation:dlg-entra .18s var(--ease-out);}
dialog::backdrop{background:rgba(28,30,32,.45);}
dialog[open]::backdrop{animation:dlg-backdrop .18s ease;}
dialog h3{margin-bottom:10px; color:var(--g90);}
dialog p{font-size:14px; line-height:1.5; margin-bottom:18px; color:var(--g60);}
dialog .azioni{display:flex; gap:10px; justify-content:flex-end;}
dialog .btn{background:var(--superficie); color:var(--g60);}
dialog .btn.pericolo{background:var(--errore); color:#fff;}

/* Editor di testo a tutta finestra (clic su un campo di testo) */
/* ===== Evidenze documentali per campo ===== */
/* Testata del campo: label a sinistra, pulsante "Carica documento" in alto
   a destra. Il pulsante sta fuori dalla label (dentro, ogni clic sulla
   label lo attiverebbe come controllo implicito). */
.cd-testata{display:flex; justify-content:space-between; align-items:baseline; gap:10px; max-width:640px;}
.cd-testata label{display:block; font-weight:600; font-size:13px; color:var(--g60); margin-bottom:5px; min-width:0;}
.cd-btn{border:1px solid var(--g10); background:var(--bianco); border-radius:var(--radius-sm); padding:3px 10px;
  font-size:12px; cursor:pointer; color:var(--g60); font-weight:600; white-space:nowrap; flex-shrink:0;
  box-shadow:var(--neu-out-sm); transition:box-shadow .15s ease, color .15s ease, border-color .15s ease, transform .12s var(--ease-out);}
.cd-btn:hover{color:var(--g90); border-color:var(--g30);}
.cd-btn:active{transform:scale(.96);}
.cd-lista{font-size:12.5px; color:var(--g60); margin-top:5px; max-width:640px; line-height:1.5;}
.cd-lista.vuota{display:none;}
.cd-lista a{color:var(--verde-scuro); text-decoration:underline; text-underline-offset:2px;}

/* Dialog mini-CRUD dei documenti a supporto */
#dlgCampoDoc{max-width:680px; width:min(680px,94vw);}
#dlgCampoDoc .cd-sottotitolo{font-size:13.5px; color:var(--g60); margin-bottom:16px;}
#dlgCampoDoc h4{font-size:13px; font-weight:700; color:var(--g90); margin-bottom:8px;}
#dlgCampoDoc .cd-sezione{margin-bottom:18px;}
#dlgCampoDoc .cd-nota{font-size:12.5px; color:var(--g60); margin-bottom:8px; line-height:1.45;}
#dlgCampoDoc .cd-riga{display:flex; align-items:center; gap:8px; padding:6px 0; border-bottom:1px solid var(--g05, rgba(0,0,0,.05));}
#dlgCampoDoc .cd-riga:last-child{border-bottom:none;}
#dlgCampoDoc .cd-nome{flex:1; min-width:0; font-size:13.5px; color:var(--verde-scuro); text-decoration:underline; text-underline-offset:2px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
#dlgCampoDoc .cd-nome-input{flex:2; min-width:0; font-size:13px; padding:5px 8px;}
#dlgCampoDoc .cd-note-input{flex:2; min-width:0; font-size:13px; padding:5px 8px;}
#dlgCampoDoc .cd-stato{font-size:12px; font-weight:600; color:var(--verde-scuro); white-space:nowrap; flex-shrink:0;}
#dlgCampoDoc .btn-mini{flex-shrink:0; margin-right:0;}
#dlgCampoDoc #cdLibreria{max-height:280px; overflow-y:auto;}

#dlgEditor{max-width:760px; width:min(760px,94vw);}
#dlgEditor h3{margin-bottom:6px; color:var(--g90);}
#dlgEditor .aiuto-dlg{font-size:13px; line-height:1.5; color:var(--g60); margin-bottom:14px;}
#dlgEditor textarea{width:100%; box-sizing:border-box; min-height:min(52vh,420px); resize:vertical;
  font-size:15px; line-height:1.6; margin-bottom:18px;}

/* ===== Tabs ===== */
.tabs{display:flex; gap:8px; margin-bottom:18px; padding:6px; background:var(--superficie); border-radius:var(--radius-lg); box-shadow:var(--neu-in-sm); width:fit-content; max-width:100%; flex-wrap:wrap;}
.tabs button{background:transparent; border:none; border-radius:var(--radius-sm); padding:8px 16px; margin:0; font-size:13.5px; cursor:pointer; color:var(--g60); font-weight:600; transition:box-shadow .15s, color .15s;}
.tabs button:hover{color:var(--g90);}
.tabs button.attiva{color:var(--verde-scuro); background:var(--superficie); box-shadow:var(--neu-out-sm);}
.pannello{display:none;}
.pannello.attivo{display:block;}

/* ===== KPI (card glass; le tabelle dense di dati restano solide) ===== */
.kpi-row, .kpi-riga{display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:16px; margin-bottom:20px;}
.kpi{background:var(--glass-bg); backdrop-filter:var(--glass-blur); -webkit-backdrop-filter:var(--glass-blur); border:var(--glass-bordo); border-radius:var(--radius-lg); padding:18px 20px; box-shadow:var(--glass-ombra);}
.kpi .kpi-val{font-size:24px; font-weight:700; color:var(--g90); line-height:1.2; font-variant-numeric:tabular-nums;}
.kpi .kpi-lab{font-size:11.5px; color:var(--g60); margin-top:2px; line-height:1.3;}
.kpi .kpi-delta{font-size:11.5px; font-weight:700; margin-top:3px;}
.kpi .kpi-delta.su{color:var(--verde-scuro);} .kpi .kpi-delta.giu{color:var(--errore);} .kpi .kpi-delta.neutro{color:var(--g60);}

/* ===== Analisi ===== */
.ana-testata{font-size:15px; font-weight:700; color:var(--g90); margin:22px 0 10px;}
.ana-item{border:none; border-left:4px solid var(--g30); border-radius:0 var(--radius-lg) var(--radius-lg) 0; padding:13px 17px; margin-bottom:12px; background:var(--superficie); box-shadow:var(--neu-out-sm);}
.ana-item.forza{border-left-color:var(--verde); background:var(--verde-tenue);}
.ana-item.migliora{border-left-color:var(--attenzione); background:var(--attenzione-tenue);}
.ana-item.alert{border-left-color:var(--errore); background:var(--errore-tenue);}
.ana-item b{display:block; margin-bottom:3px; color:var(--g90); font-size:14px;}
.ana-item p{font-size:13.5px; line-height:1.5; color:var(--g60); margin:0;}
.ana-proposta{margin-top:8px; background:var(--superficie); border-radius:var(--radius-sm); padding:9px 13px; font-size:13px; line-height:1.5; color:var(--g60); box-shadow:var(--neu-in-sm);}

/* ===== Documenti ===== */
.doc-upload{border:2px dashed var(--g30); border-radius:var(--radius-lg); padding:24px; text-align:center; background:var(--superficie); margin-bottom:18px; cursor:pointer; box-shadow:var(--neu-in-sm); transition:border-color .15s, background .15s;}
.doc-upload:hover{border-color:var(--verde); background:var(--verde-tenue);}
.doc-upload b{color:var(--verde-scuro);}
.doc-upload small{display:block; color:var(--g60); margin-top:4px;}
.doc-scarica{color:var(--verde-scuro); text-decoration:none; font-weight:600; font-size:12.5px;}

/* ===== Legenda ===== */
.legenda{display:flex; flex-wrap:wrap; gap:10px; margin-top:8px; font-size:12px; color:var(--g60);}
.legenda span{display:flex; align-items:center; gap:5px;}
.legenda i{width:11px; height:11px; border-radius:3px; display:inline-block;}

/* ===== Login ===== */
#loginOverlay{position:fixed; inset:0; background:var(--bg); display:flex; align-items:center; justify-content:center; z-index:200;}
.login-box{background:var(--superficie); border:none; border-radius:var(--radius-lg); padding:42px 38px; width:min(400px, 92vw); text-align:center; box-shadow:var(--neu-out);}
.login-box h1{color:var(--g90); font-size:var(--fs-20); margin-bottom:6px;}
.login-box .sotto{color:var(--g60); font-size:13.5px; margin-bottom:22px; line-height:1.5;}
.login-box input{width:100%; margin-bottom:12px;}
.login-box .btn-login{width:100%; background:var(--verde); color:#fff; border:none; border-radius:var(--radius-sm); padding:12px; font-size:15px; font-weight:600; cursor:pointer; box-shadow:var(--neu-out-sm); transition:box-shadow .15s;}
.login-box .btn-login:hover{background:var(--verde-scuro);}
.login-box .btn-login:active{box-shadow:var(--neu-in-sm);}
.login-box .btn-login:disabled{opacity:.5; cursor:default;}
.login-box .link-soin-admin{display:block; margin-top:18px; font-size:13px; color:var(--g60); text-decoration:none;}
.login-box .link-soin-admin:hover{color:var(--verde-scuro); text-decoration:underline;}
#loginMsg{margin-top:12px; font-size:13.5px; line-height:1.45; color:var(--verde-scuro);}
#loginMsg.errore{color:var(--errore);}

/* Login boxes: admin + invito */
#adminLoginBox, #box{max-width:380px; margin:80px auto; background:var(--superficie); border:none; border-radius:var(--radius-lg); padding:34px; box-shadow:var(--neu-out);}
#adminLoginBox h1, #box h1{font-size:var(--fs-20); color:var(--g90); margin-bottom:6px;}
#adminLoginBox .sotto, #box .sotto{color:var(--g60); font-size:13.5px; line-height:1.5; margin-bottom:14px;}
#msg{margin-top:10px; font-size:13px; min-height:16px;}
#msg.errore{color:var(--errore);}
#msg.successo{color:var(--verde-scuro);}
#adminLoginBox input, #box input{display:block; width:100%; margin-top:12px;}
#adminLoginBox button, #box button{margin-top:18px; width:100%; padding:11px; background:var(--verde); color:#fff; border:none; border-radius:var(--radius-sm); font-weight:600; cursor:pointer; box-shadow:var(--neu-out-sm); transition:box-shadow .15s;}
#adminLoginBox button:hover, #box button:hover{background:var(--verde-scuro);}
#adminLoginBox button:active, #box button:active{box-shadow:var(--neu-in-sm);}
#adminMsg{margin-top:10px; font-size:13px; color:var(--errore); min-height:16px;}

/* ---------- Modulo Emissioni (pagina "Emissioni") ---------- */
.emis-riepilogo{display:grid; grid-template-columns:repeat(auto-fit, minmax(170px, 1fr)); gap:14px; margin:14px 0 6px;}
.emis-card{background:var(--superficie); border-radius:var(--radius); padding:14px 16px; box-shadow:var(--neu-out-sm); display:flex; flex-direction:column; gap:2px;}
.emis-card small{font-size:11.5px; color:var(--g60); text-transform:uppercase; letter-spacing:.03em;}
.emis-card b{font-size:20px; color:var(--g90); line-height:1.2;}
.emis-card span{font-size:12px; color:var(--g60);}
.emis-card.evidenza{background:var(--verde); }
.emis-card.evidenza small, .emis-card.evidenza b, .emis-card.evidenza span{color:#fff;}
.emis-scope{margin:22px 0 4px; font-size:var(--fs-16); color:var(--verde-scuro);}
.emis-blocco{margin:10px 0 16px;}
.emis-blocco h4{margin:8px 0 4px; font-size:14px; color:var(--g90);}
.emis-tab .emis-um{background:var(--g05); padding:6px 8px; color:var(--g60); white-space:nowrap;}
.emis-tab .emis-val{text-align:right; font-variant-numeric:tabular-nums; font-weight:600; padding:6px 8px; white-space:nowrap;}

/* ---------- Conferma di salvataggio documenti ----------
   Pagina Documenti (barra sotto l'elenco) e dialog "Documenti a
   supporto": esito verde rassicurante dopo caricamento/salvataggio. */
.doc-azioni{display:flex; align-items:center; justify-content:flex-end; gap:12px; margin-top:14px;}
.esito-salvataggio{color:var(--verde-scuro); font-weight:600; font-size:13px;}
.esito-salvataggio:empty{display:none;}
dialog .esito-salvataggio{margin:10px 0 0; text-align:right;}

/* Libreria a tendina nel dialog "Documenti a supporto": il menu evita
   liste lunghe che spingerebbero i pulsanti fuori dallo schermo; anche
   l'elenco degli associati scorre invece di allungare il dialog. */
#dlgCampoDoc #cdAssociati{max-height:170px; overflow-y:auto;}
#dlgCampoDoc .cd-lib-riga{display:flex; align-items:center; gap:8px; margin-bottom:8px;}
#dlgCampoDoc .cd-lib-riga select{flex:1; min-width:0; font-size:13px; padding:6px 8px; max-width:none;}
