.gestionale{display:flex;min-height:100vh}.laterale{width:250px;background:white;border-right:1px solid var(--bordo);padding:30px 23px;position:fixed;inset:0 auto 0 0;overflow:auto}.laterale .occhiello{font-size:9px;margin:32px 0 18px}.laterale nav{display:flex;flex-direction:column;gap:5px}.laterale nav a{text-decoration:none;color:var(--secondario);padding:10px 14px;border-radius:10px;font-size:15px}.laterale nav a[aria-current=page]{color:#086c0a;background:var(--chiaro);font-weight:700}.ritorno{display:block;margin-top:30px;font-size:13px}.area-lavoro{margin-left:250px;width:calc(100% - 250px)}.barra{padding:24px 35px;border-bottom:1px solid var(--bordo);display:flex;justify-content:space-between;align-items:center;font-size:14px;background:#ffffffa0}#pannello{max-width:1500px;padding:30px 35px;margin:0}#pannello h1{font-size:2.6rem}#pannello .griglia{grid-template-columns:repeat(3,1fr)}.tabella{overflow:auto;border:1px solid var(--bordo);border-radius:16px;background:white}table{border-collapse:collapse;width:100%;font-size:14px;text-align:left}th{background:#edf3e8;color:#52664f;font-size:11px;letter-spacing:.05em;text-transform:uppercase}th,td{padding:15px 18px;border-bottom:1px solid var(--bordo);vertical-align:top}tr:last-child td{border:0}td button{padding:6px 10px;font-size:12px;border-radius:8px;margin:3px}.filtri{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap;margin:25px 0}.filtri label{margin:0;min-width:140px}.filtri input,.filtri select{font-size:15px}.moduli{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;align-items:start}.compatto{font-size:14px}.giorno-agenda{margin-bottom:25px}.giorno-agenda h3{text-transform:capitalize}.credito{border:1px solid var(--bordo);padding:12px;border-radius:10px;margin:8px 0}.codice{white-space:pre-wrap;word-break:break-word;font:13px/1.6 ui-monospace,monospace}.strumenti{display:flex;gap:10px;margin:15px 0;flex-wrap:wrap}.sfondo-verde{background:var(--chiaro)}.badge{display:inline-block;font-size:11px;border:1px solid var(--bordo);padding:3px 7px;border-radius:8px}hr{border:0;border-top:1px solid var(--bordo);margin:24px 0}@media(max-width:1100px){.laterale{width:205px;padding:25px 15px}.area-lavoro{margin-left:205px;width:calc(100% - 205px)}#pannello{padding:25px 20px}.moduli{grid-template-columns:1fr}.barra{padding:20px}.griglia{gap:12px}}@media(max-width:740px){.gestionale{display:block}.laterale{position:static;width:auto;padding:20px;border-right:0;border-bottom:1px solid var(--bordo)}.laterale .occhiello,.laterale .ritorno{display:none}.laterale .marchio{font-size:23px}.laterale nav{flex-direction:row;overflow:auto;margin-top:15px;white-space:nowrap}.laterale nav a{padding:8px 12px}.area-lavoro{margin:0;width:auto}.barra{padding:14px 20px;gap:12px}.barra .chip{font-size:9px}#pannello{padding:22px 16px}#pannello .griglia{grid-template-columns:1fr}.colonne{grid-template-columns:1fr}.filtri{align-items:stretch}.filtri label{flex:1}th,td{padding:12px;font-size:13px}#pannello h1{font-size:2.3rem}}

.barra-ore{height:8px;border-radius:6px;background:rgba(255,255,255,.08);overflow:hidden;margin:8px 0}.barra-ore span{display:block;height:100%;background:var(--verde);border-radius:6px}.barra-ore .oltre{background:#e35d5d}.maiuscolo{text-transform:uppercase}
.arrivo-vivo{border:1px solid var(--verde);box-shadow:0 0 0 1px rgba(46,224,90,.15),0 8px 30px rgba(46,224,90,.12)}
#form-codice{align-items:end;margin-top:12px}

/* Campanella delle prenotazioni nuove */
.campanella{position:relative;display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;background:rgba(108,255,156,.12);color:#6cff9c;box-shadow:0 0 14px rgba(108,255,156,.25)}.campanella svg{width:20px;height:20px}.campanella b{position:absolute;top:-4px;right:-4px;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:#6cff9c;color:#07140e;font-size:11px;line-height:18px;text-align:center}
/* Scheda «Nuove prenotazioni» dentro il ritmo di Napa: neon a quattro colori */
.slot-nuove{margin:4px 0 18px}.scheda-arrivate{position:relative;border-radius:20px;padding:2px;background:linear-gradient(100deg,#6cff9c,#c8a8ff 35%,#8fb9ff 65%,#ffd296);box-shadow:0 0 18px rgba(108,255,156,.28),0 0 30px rgba(200,168,255,.18),0 0 40px rgba(143,185,255,.12)}.scheda-arrivate>summary,.scheda-arrivate>div{background:linear-gradient(130deg,#0f1a14,#0a120d);border-radius:18px}.scheda-arrivate summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:18px;padding:18px 24px}.scheda-arrivate[open] summary{border-radius:18px 18px 0 0}.scheda-arrivate[open]>div{border-radius:0 0 18px 18px;padding:4px 24px 20px;margin-top:-2px}.scheda-arrivate summary::-webkit-details-marker{display:none}.campanella-grande{display:inline-flex;align-items:center;justify-content:center;width:52px;height:52px;border-radius:50%;background:rgba(108,255,156,.14);color:#6cff9c;box-shadow:0 0 22px rgba(108,255,156,.35);flex:none}.campanella-grande svg{width:26px;height:26px}.testo-arrivate{display:flex;flex-direction:column;gap:3px;flex:1}.testo-arrivate b{font-size:14px;font-weight:700;letter-spacing:.14em;color:#eafff0}.testo-arrivate small{color:#9ac3a5;font-size:12px}.badge-nuove{background:#6cff9c;color:#07140e;border-radius:999px;padding:5px 14px;font-size:13px;font-weight:700;animation:pulsa 1.6s ease-in-out infinite}.scheda-arrivate .freccia{font-size:28px;color:#c8a8ff;transition:transform .2s}.scheda-arrivate[open] .freccia{transform:rotate(90deg)}
@keyframes pulsa{0%,100%{box-shadow:0 0 0 0 rgba(108,255,156,.5)}50%{box-shadow:0 0 0 8px rgba(108,255,156,0)}}
@media(prefers-reduced-motion:reduce){.badge-nuove{animation:none}}

/* Avviso «tra 20 minuti» */
.avviso-sedute{position:sticky;top:0;z-index:20;margin:0 35px 12px;padding:16px 22px;border-radius:16px;background:linear-gradient(130deg,#163a24,#0d2417);border:1px solid #6cff9c;box-shadow:0 0 24px rgba(108,255,156,.35);display:grid;gap:10px}.avviso-sedute::before{content:'TRA 20 MINUTI · CLIENTE IN ARRIVO';font-size:11px;letter-spacing:.14em;color:#6cff9c;font-weight:700}.voce-avviso{display:flex;gap:14px;align-items:baseline;font-size:16px;color:#eafff0}.voce-avviso b{font-size:22px;color:#6cff9c}.avviso-sedute .riga{display:flex;gap:10px;margin-top:4px}
.avviso-disdette{border-color:#ffd296;background:linear-gradient(130deg,#3a2a14,#24190d);box-shadow:0 0 24px rgba(255,210,150,.35)}.avviso-disdette::before{content:'DISDETTA DALL’APP · POSTO LIBERATO';color:#ffd296}.avviso-disdette .voce-avviso b{color:#ffd296}
/* Ricerca cliente al banco al posto dell'elenco a tendina */
.campo-cliente{display:grid;gap:6px}
.risultati-clienti{display:grid;gap:4px;max-height:260px;overflow:auto}
.risultati-clienti button{text-align:left;justify-content:flex-start;width:100%}
.risultati-clienti small{opacity:.75;margin-left:6px}
.cliente-scelto{margin:0}

/* Cliente non presentato e senza disdetta */
.avviso-assenze{border-color:#ff9a8a;background:linear-gradient(130deg,#3a1714,#240d0b);box-shadow:0 0 24px rgba(255,154,138,.35)}.avviso-assenze::before{content:'NON SI È PRESENTATO · NESSUNA DISDETTA';color:#ff9a8a}.avviso-assenze .voce-avviso b{color:#ff9a8a}.avviso-assenze .voce-avviso{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center}

/* Caselle di spunta nei dialoghi (distinte dalle caselle della tessera timbri) */
.spunta{display:flex !important;gap:10px;align-items:flex-start;width:auto;height:auto;border:0;background:none;font-size:15px;line-height:1.35}
.spunta input{width:20px !important;height:20px;flex:none;margin:2px 0 0;padding:0}

.errore-registro{color:#ff9a8a}
.badge-valuta{display:inline-block;margin-left:6px;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:700;background:#3a2a14;color:#ffd296;border:1px solid #ffd296;white-space:nowrap}
/* Nuove iscrizioni dall'app */
.avviso-iscrizioni{border-color:#8ec5ff;background:linear-gradient(130deg,#142a3a,#0d1a24);box-shadow:0 0 24px rgba(142,197,255,.3)}.avviso-iscrizioni::before{content:'NUOVA ISCRIZIONE ALL’APP';color:#8ec5ff}.avviso-iscrizioni .voce-avviso{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center}.avviso-iscrizioni .voce-avviso b{color:#8ec5ff}
/* Acquisti prenotati dall'app da incassare */
.avviso-incassi{border-color:#c9a2ff;background:linear-gradient(130deg,#2a1a3a,#170d24);box-shadow:0 0 24px rgba(201,162,255,.3)}.avviso-incassi::before{content:'DA INCASSARE · PRENOTATO DALL’APP';color:#c9a2ff}.avviso-incassi .voce-avviso{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center}.avviso-incassi .voce-avviso b{color:#c9a2ff}
.voce-incasso{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px 14px;align-items:center;padding:10px 0;border-bottom:1px solid rgba(255,255,255,.08)}
.azioni-scheda{flex-wrap:wrap;gap:8px}
.scelta-banco{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}.scelta-banco button{display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:18px;text-align:left;min-height:110px}.scelta-banco b{font-size:18px}.scelta-banco small{font-size:13px;opacity:.85;font-weight:400}
/* Prodotti (boutique + cassa) */
.pr-azioni{margin:0 0 26px}.pr-sezione{margin-bottom:30px}.pr-sezione h2{font-size:1.25rem;margin-bottom:12px}
.pr-elenco{display:grid;gap:10px}
.pr-riga{display:grid;grid-template-columns:64px 1fr auto;gap:14px;align-items:center;background:#0d2a21;border:1px solid var(--bordo);border-radius:16px;padding:10px 14px 10px 10px}
.pr-riga.pr-spento{opacity:.55}
.pr-mini{width:64px;height:76px;border-radius:12px;overflow:hidden;background:#153d2e;display:grid;place-items:center;color:var(--secondario);font-size:22px}
.pr-mini img{width:100%;height:100%;object-fit:cover}
.pr-info h3{margin:0 0 2px;font-size:1.02rem}.pr-info p{margin:0}.pr-info .nota{font-size:13px}
.pr-banco{font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--secondario)}
.pr-badge{font-size:11px;background:#dbfa9c;color:#0b2414;border-radius:20px;padding:2px 7px;font-weight:700}
.pr-dialogo{width:min(680px,96vw)}
.pr-modulo textarea{min-height:0}
.pr-foto{display:grid;grid-template-columns:120px 1fr;gap:16px;align-items:center;margin:8px 0 18px}
.pr-anteprima{width:120px;height:150px;border-radius:14px;overflow:hidden;background:#e9f4df;display:grid;place-items:center;font-size:12px;color:#5c6e63;text-align:center}
.pr-anteprima img{width:100%;height:100%;object-fit:cover}
.pr-carica{cursor:pointer;margin:0 8px 8px 0}
.pr-spunte{display:grid;gap:6px;align-content:start}.pr-spunte .check{margin:0;font-size:14px}
@media(max-width:600px){.pr-riga{grid-template-columns:52px 1fr}.pr-riga button{grid-column:1/-1}.pr-mini{width:52px;height:64px}.pr-foto{grid-template-columns:90px 1fr}.pr-anteprima{width:90px;height:112px}}
.gestionale .pr-dialogo{background:linear-gradient(145deg,#153626,#0a261d);color:#e8f5dd;border:1px solid #5c7548;border-radius:24px;padding:28px;box-shadow:0 30px 120px #00120dd9}
.gestionale .pr-dialogo::backdrop{background:#00130ed6;backdrop-filter:blur(10px)}
.gestionale .pr-dialogo .chiudi{float:right;margin:-8px -8px 8px 15px;background:#234c32;color:#d9efbc;border:1px solid #526e42;border-radius:50%;height:36px;min-height:36px;width:36px;padding:0;line-height:1;font-size:25px}
@media(max-width:600px){.gestionale .pr-dialogo{padding:22px 18px}}
/* Scheda individuale UV */
.esposizione{border:1px solid var(--bordo);border-radius:14px;padding:12px 14px;margin:8px 0 12px;background:#0d2a21}
.esposizione p{margin:0 0 6px}.esp-barra{width:100%;height:10px;border-radius:10px;overflow:hidden;appearance:none;-webkit-appearance:none;border:0;background:#153d2e}
.esp-barra::-webkit-progress-bar{background:#153d2e;border-radius:10px}.esp-barra::-webkit-progress-value{background:#67f58e;border-radius:10px}.esp-barra::-moz-progress-bar{background:#67f58e;border-radius:10px}
.esp-giallo .esp-barra::-webkit-progress-value{background:#f5c96b}.esp-giallo .esp-barra::-moz-progress-bar{background:#f5c96b}
.esp-rosso{border-color:#b45343}.esp-rosso .esp-barra::-webkit-progress-value{background:#ff7a66}.esp-rosso .esp-barra::-moz-progress-bar{background:#ff7a66}
.tabella-esp{width:100%;border-collapse:collapse;font-size:13px;margin:6px 0 12px}.tabella-esp th,.tabella-esp td{text-align:left;padding:6px 8px;border-bottom:1px solid var(--bordo)}
.avviso-messaggi{border-color:#ffb36b;background:linear-gradient(130deg,#3a2614,#1f150c);box-shadow:0 0 24px rgba(255,179,107,.3)}.avviso-messaggi::before{content:'MESSAGGIO DA UN CLIENTE';color:#ffb36b}.avviso-messaggi .voce-avviso{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;margin:6px 0}.avviso-messaggi .voce-avviso span{flex:1 1 260px}
