/*
 * se-ui.css — design system della nuova interfaccia Smartevent (restyling 2026-09).
 *
 * Quattro parti, nell'ordine in cui vanno lette:
 *   1. TOKEN      — colori, font, raggi. Tutto il resto li usa, niente valori a mano.
 *   2. GUSCIO     — sidebar (chiara o scura col tema), barra alta, pagina, componenti nuovi (.se-*).
 *   3. PONTE      — regole che portano Bootstrap 4, AdminLTE 3 e i widget Kartik
 *                   (GridView, Select2, DatePicker, modali) dentro il nuovo look,
 *                   cosi' le viste non ancora riscritte non sembrano di un'altra app.
 *   4. AREE       — i componenti scritti area per area nella conversione delle viste
 *                   (30/09/2026); stanno in coda perche' e' l'ordine in cui venivano
 *                   caricati, e il cascade va conservato.
 *
 * Il ponte e' provvisorio per costruzione: ogni vista riscritta usa le classi della
 * parte 2 e non ha piu' bisogno delle regole della parte 3. Quando l'ultima vista sara'
 * passata, la parte 3 (e AdminLTE) si tolgono.
 *
 * Prefisso: le classi nuove iniziano con `se-` quando il nome nudo esisterebbe gia'
 * in Bootstrap/AdminLTE (.card, .btn, .modal, .nav...). Quelle che non collidono
 * (.chip, .pill, .kpi, .ph...) restano nude, come nel mockup.
 *
 * Sorgente di verita' del design: Restyling Yii/mockup (p1.html). Ogni token e ogni
 * componente qui corrisponde a uno del mockup, stesso nome.
 */

/* =====================================================================
   1. TOKEN
   ===================================================================== */
:root {
  --bg:#f3f3ef; --surface:#ffffff; --surface-2:#f8f8f4; --surface-3:#efeee8;
  --ink:#1c1b17; --ink-2:#48453d; --muted:#76726a; --line:#e2e0d8; --line-2:#ecebe5;
  --brand:#f4b400; --brand-hover:#e2a600; --brand-ink:#2a2000; --brand-soft:#fff3c9; --brand-line:#f0d680;
  /* barra laterale: chiara nel tema chiaro (logo a colori), scura nel tema scuro (logo in bianco) */
  --nav:#ffffff; --nav-2:#f3f2ec; --nav-ink:#1c1b17; --nav-ink-2:#48453d; --nav-muted:#7a766c; --nav-line:#e6e4dc;
  --nav-hover:#cfccc2; --nav-av:#6f6b61; --nav-danger:#b3382a; --nav-pop:#ffffff; --nav-shadow:0 -8px 24px rgba(28,27,23,.12);
  --ok:#1d7a4c; --ok-soft:#e2f2e9; --warn:#9c5c00; --warn-soft:#fcefd6; --bad:#b3382a; --bad-soft:#fae4df; --info:#2a64a0; --info-soft:#e3edf8;
  --e1:#0f7a70; --e2:#6a4fd0; --e3:#b8326a;
  --focus:#2a64a0; --shadow:0 1px 2px rgba(28,27,23,.06),0 8px 24px rgba(28,27,23,.08);
  --f-display:"Bricolage Grotesque",ui-sans-serif,system-ui,sans-serif;
  --f-body:"Instrument Sans",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;
  --f-mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  --r:10px; --r-sm:7px;
  /* grafici: al massimo 3 serie, stati a parte */
  --s1:#2a78d6; --s2:#eb6834; --s3:#1baf7a; --grid:#e9e7e0;
  --side-w:236px; --side-w-c:68px;
}
/* Tema scuro: si sceglie dal menu utente (chiaro / scuro / segui il sistema), vedi
   js/se-ui.js e lo script in testa al layout. Le viste vecchie passano dal ponte
   (parte 3), che usa questi stessi token. */
:root[data-theme="dark"] {
  --bg:#12120f; --surface:#1b1a16; --surface-2:#211f1b; --surface-3:#2a2823;
  --ink:#eeebe2; --ink-2:#c8c4b8; --muted:#9a9589; --line:#302e28; --line-2:#28261f;
  --brand:#f6c230; --brand-hover:#ffd257; --brand-ink:#1b1500; --brand-soft:#3a2f0b; --brand-line:#6b5614;
  --nav:#0d0c09; --nav-2:#191812; --nav-ink:#e4e1d6; --nav-ink-2:#c9c5b8; --nav-muted:#8a867a; --nav-line:#25241d;
  --nav-hover:#4a483c; --nav-av:#3b392e; --nav-danger:#f0a090; --nav-pop:#191812; --nav-shadow:0 -8px 24px rgba(0,0,0,.35);
  --ok:#52c48d; --ok-soft:#16301f; --warn:#f0a940; --warn-soft:#382810; --bad:#f07e6e; --bad-soft:#3b1c17; --info:#72a9e6; --info-soft:#162a40;
  --e1:#35b3a7; --e2:#9a84f0; --e3:#e3689b; --focus:#72a9e6; --shadow:0 1px 2px rgba(0,0,0,.4),0 10px 28px rgba(0,0,0,.45);
  --s1:#3987e5; --s2:#d95926; --s3:#199e70; --grid:#2c2a25; color-scheme:dark;
}

/* =====================================================================
   2. GUSCIO E COMPONENTI
   ===================================================================== */
*,*::before,*::after{box-sizing:border-box}
html{font-size:14px}
html,body{height:100%}
body.se-body{background:var(--bg);color:var(--ink);font-family:var(--f-body);font-size:14px;line-height:1.45;-webkit-font-smoothing:antialiased;margin:0}
body.se-body button,body.se-body input,body.se-body select,body.se-body textarea{font:inherit;color:inherit}
body.se-body a{color:var(--info)}
body.se-body a:hover{color:var(--info);text-decoration:underline}
/* i componenti-link (righe, card, menu) restano color inchiostro: il blu e' per i link nel testo */
body.se-body a.task,body.se-body a.evcard,body.se-body a.kpi,body.se-body a.stat,body.se-body a.kcard,body.se-body .smart a,body.se-body .subnav a,body.se-body .rowlink,body.se-body .path a,body.se-body .set-card li a,body.se-body .pal .ri,body.se-body .se-menu .mi,body.se-body .chip,body.se-body .views a,body.se-body .seg a,body.se-body .flow a{color:var(--ink);text-decoration:none}
body.se-body .subnav a,body.se-body .chip,body.se-body .views a{color:var(--ink-2)}
body.se-body .chip.on,body.se-body .views a.on,body.se-body .subnav a.on{color:var(--ink)}
body.se-body .chip.on{color:var(--surface)}
body.se-body a.task:hover,body.se-body a.evcard:hover,body.se-body .smart a:hover,body.se-body .subnav a:hover,body.se-body .set-card li a:hover{text-decoration:none;color:var(--ink)}
:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:4px}
.mono{font-family:var(--f-mono);font-size:12.5px;letter-spacing:-.01em}
.num{font-variant-numeric:tabular-nums}
.muted{color:var(--muted)}
.se-hide{display:none!important}
@media (prefers-reduced-motion: reduce){*{transition:none!important;animation:none!important}}

/* ---------- guscio ---------- */
.app{display:grid;grid-template-columns:var(--side-w) minmax(0,1fr);min-height:100%}
.side{background:var(--nav);color:var(--nav-ink);border-right:1px solid var(--nav-line);position:sticky;top:0;height:100vh;display:flex;flex-direction:column;padding:14px 10px 12px;gap:6px;overflow-y:auto;z-index:1040;scrollbar-width:thin;scrollbar-color:var(--nav-line) transparent}
.side a{color:var(--nav-ink)}
.side a:hover{text-decoration:none;color:var(--nav-ink)}
.logo{display:flex;align-items:center;gap:9px;padding:4px 8px 12px;font-family:var(--f-display);font-weight:750;letter-spacing:.02em;font-size:17px;color:var(--nav-ink)}
.logo .mark{width:24px;height:24px;border-radius:6px;background:var(--brand);display:grid;place-items:center;color:#1b1500;font-size:14px;transform:skewX(-8deg);flex:none}
.logo small{font-family:var(--f-body);font-weight:500;font-size:10.5px;color:var(--nav-muted);letter-spacing:.08em;margin-left:auto}
.logo small.test{color:var(--brand)}
/* il logo originale: a colori sulla barra chiara, in bianco sulla barra scura (niente piu' fascia bianca) */
.logo.logo-img{background:none;border-radius:8px;padding:6px 6px;margin:0;flex:1;min-width:0}
/* tema nel menu utente */
.me-menu .tema{padding:8px 10px 6px;border-top:1px solid var(--nav-line);border-bottom:1px solid var(--nav-line);margin:4px 0}
.me-menu .tema .lbl{display:block;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--nav-muted);margin-bottom:6px}
.me-menu .tema .seg{display:flex;width:100%;background:var(--nav-2);border-color:var(--nav-line)}
.me-menu .tema .seg button{flex:1;justify-content:center;color:var(--nav-muted);font-size:12px;padding:0 6px;height:30px}
.me-menu .tema .seg button+button{border-left-color:var(--nav-line)}
.me-menu .tema .seg button.on{background:var(--nav-line);color:var(--nav-ink)}
.me-menu .tema .seg svg{width:13px;height:13px}
.me-menu .tema{border-top:0;margin-top:0}
.me-menu .ms{height:1px;background:var(--nav-line);margin:5px 4px}
/* pagina Profilo */
.field .hint.err{color:var(--bad)}
.se-input.is-invalid{border-color:var(--bad)}
img.logo-ente{width:44px;height:44px;object-fit:contain;border-radius:8px;background:#fff;border:1px solid var(--line);padding:2px}
.seg.tema-pagina{align-self:flex-start}
/* foto o iniziali di un'anagrafica (components/ui/Avatar.php): le iniziali su un colore fisso per scheda */
.se-av{display:inline-grid;place-items:center;width:26px;height:26px;border-radius:50%;flex:none;font-family:var(--f-display);font-weight:700;font-size:11px;letter-spacing:.02em;line-height:1;user-select:none;--av:var(--e1);background:var(--av);color:#fff}
@supports (background:color-mix(in srgb,#fff 50%,transparent)){.se-av{background:color-mix(in srgb,var(--av) 16%,var(--surface));color:var(--av)}}
.se-av.c1{--av:var(--e2)}.se-av.c2{--av:var(--e3)}.se-av.c3{--av:var(--info)}.se-av.c4{--av:var(--ok)}.se-av.c5{--av:var(--warn)}
.se-av.lg{width:44px;height:44px;font-size:16px}
.se-av.xl{width:132px;height:132px;border-radius:24px;font-size:46px;letter-spacing:.01em}
/* il riquadro della foto (kartik FileInput dentro .se-foto): niente cornici, la foto o le iniziali e due pulsanti */
.se-foto{display:flex;justify-content:center;padding:6px 0 14px}
.se-foto .file-input{display:flex;flex-direction:column;align-items:center;gap:12px;width:100%}
body.se-body .se-foto .file-preview{border:0;padding:0;margin:0;background:none;box-shadow:none;width:auto;border-radius:0}
body.se-body .se-foto .file-drop-zone{border:0;margin:0;padding:0;min-height:0;background:none}
.se-foto .file-drop-zone.clickable{cursor:pointer}
.se-foto .file-drop-zone.clickable:hover .se-av,.se-foto .file-drop-zone.clickable:hover .se-foto-img{outline:2px solid var(--brand);outline-offset:3px}
.se-foto .file-default-preview{display:grid;place-items:center}
.se-foto img.se-foto-img{width:132px;height:132px;object-fit:cover;border-radius:24px;display:block}
.se-foto .se-foto-az{display:flex;gap:6px;justify-content:center;flex-wrap:wrap}
.se-foto .se-foto-az svg{width:14px;height:14px}
/* la foto appena scelta, prima di «Salva»: stessa misura delle iniziali, senza la barra di pulsantini di kartik */
.se-foto .file-preview-thumbnails{display:flex;justify-content:center}
body.se-body .se-foto .file-preview-frame{float:none;margin:0;padding:0;border:0;box-shadow:none;background:none;width:auto;height:auto}
body.se-body .se-foto .file-preview-frame .kv-file-content{width:132px;height:132px}
body.se-body .se-foto .file-preview-frame img.file-preview-image{width:132px!important;height:132px!important;max-width:none!important;max-height:none!important;object-fit:cover;border-radius:24px}
.se-foto .file-thumbnail-footer,.se-foto .kv-zoom-cache,.se-foto .file-preview .fileinput-remove{display:none}
/* relazione annuale e pagine-report con tabelle semplici */
.se-card>.tbl-wrap.piatta{border:0;border-radius:0;border-top:1px solid var(--line-2)}
.tbl-wrap.alto{max-height:420px;overflow:auto}
.tbl td.nowrap{white-space:nowrap}
.tbl tr.riga-bad td{background:var(--bad-soft)}
.note .grow,.se-row .grow{flex:1;min-width:0}
.note ul.lacune{margin:6px 0 0;padding-left:18px}
/* relazione annuale: le informazioni mancanti, ognuna con il collegamento dove si completa */
.note ul.mancanti{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:0}
.note ul.mancanti>li{display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:9px 0;border-top:1px solid color-mix(in srgb,var(--warn) 22%,transparent)}
.note ul.mancanti>li:first-child{border-top:0;padding-top:4px}
.note ul.mancanti .se-btn{white-space:normal;height:auto;min-height:28px;padding-top:5px;padding-bottom:5px;text-align:left;line-height:1.3}
.note ul.mancanti .se-btn svg{width:13px;height:13px;flex:none}
.note ul.mancanti details.adv{width:100%}
.note ul.mancanti details.adv>summary{padding:7px 12px;font-size:12.5px}
.note ul.mancanti ul.ev{margin:0 12px 10px;padding-left:18px;max-height:220px;overflow:auto;columns:2 260px;column-gap:24px;font-size:12.5px}
.note ul.mancanti ul.ev li{break-inside:avoid;padding:1px 0}
.kv.larga{grid-template-columns:minmax(0,320px) minmax(0,1fr)}
form.inline{display:inline-flex;margin:0}
.logo.logo-img img{height:32px;width:auto;display:block;max-width:100%}
.logo.logo-img small.test{color:var(--bad);font-weight:700}
/* logo dell'ente al posto delle iniziali, dove c'e' */
.ente-sw .dot.img,.se-menu .mi .dot.img{background:#fff;padding:2px;overflow:hidden}
.ente-sw .dot.img img,.se-menu .mi .dot.img img{width:100%;height:100%;object-fit:contain;display:block;border-radius:5px}
.ente-sw{display:flex;align-items:center;gap:10px;width:100%;background:var(--nav-2);border:1px solid var(--nav-line);border-radius:10px;padding:9px 10px;cursor:pointer;text-align:left;color:var(--nav-ink)}
.ente-sw:hover{border-color:var(--nav-hover)}
.ente-sw[aria-disabled="true"]{cursor:default}
/* la card dell ente e un link (va alla scheda): niente blu dei link nel testo (body.se-body a) */
body.se-body a.ente-sw,body.se-body a.ente-sw:hover,body.se-body a.ente-sw:focus{text-decoration:none;color:var(--nav-ink)}
.ente-sw .dot{width:26px;height:26px;border-radius:7px;display:grid;place-items:center;font-weight:700;font-size:12px;color:#fff;flex:none;background:var(--nav-av)}
.ente-sw .t{min-width:0;flex:1}
.ente-sw .t b{display:block;font-size:13.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ente-sw .t span{font-size:11.5px;color:var(--nav-muted);display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ente-sw .chev{color:var(--nav-muted);display:flex}
.ente-sw .chev svg{width:14px;height:14px}
.search-btn{display:flex;align-items:center;gap:8px;width:100%;margin:6px 0 6px;padding:8px 10px;border-radius:9px;background:transparent;border:1px solid var(--nav-line);color:var(--nav-muted);cursor:pointer;font-size:13px}
.search-btn:hover{color:var(--nav-ink);border-color:var(--nav-hover)}
.search-btn svg{width:15px;height:15px}
.search-btn kbd{margin-left:auto;font-family:var(--f-mono);font-size:11px;border:1px solid var(--nav-line);border-radius:5px;padding:1px 5px;background:none;color:inherit}
.se-nav{display:flex;flex-direction:column;gap:1px}
.se-nav .lbl{font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--nav-muted);padding:12px 10px 5px}
.se-nav a,.se-nav button.area{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:8px;text-decoration:none;color:var(--nav-ink);font-size:13.5px;font-weight:500;cursor:pointer;background:none;border:0;width:100%;text-align:left}
.se-nav a:hover,.se-nav button.area:hover{background:var(--nav-2);text-decoration:none}
.se-nav a.on,.se-nav button.area.on{background:var(--brand);color:#1b1500}
.se-nav a.on .ic,.se-nav button.area.on .ic{color:#1b1500}
.se-nav .ic{width:18px;height:18px;flex:none;color:var(--nav-muted);display:inline-flex}
.se-nav .ic svg{width:18px;height:18px}
.se-nav .cnt{margin-left:auto;font-size:11px;font-weight:600;background:var(--nav-line);color:var(--nav-ink);border-radius:20px;padding:1px 7px}
.se-nav a.on .cnt{background:rgba(0,0,0,.14);color:#1b1500}
.se-nav .tw{margin-left:auto;color:var(--nav-muted);display:flex;transition:transform .15s}
.se-nav .tw svg{width:14px;height:14px}
.se-nav .area[aria-expanded="true"] .tw{transform:rotate(90deg)}
.se-nav .area.on .tw{color:#1b1500}
/* i link della barra non prendono il blu dei link nel testo (body.se-body a, piu' specifico di .se-nav a):
   senza queste righe le voci d'area che sono link (Oggi, Eventi...) uscivano blu, e blu sottolineate al passaggio */
body.se-body .se-nav a,body.se-body .se-nav a:hover{color:var(--nav-ink);text-decoration:none}
body.se-body .se-nav a.on,body.se-body .se-nav a.on:hover{color:#1b1500}
body.se-body .se-nav .sub a{color:var(--nav-ink-2)}
body.se-body .se-nav .sub a:hover,body.se-body .se-nav .sub a.on{color:var(--nav-ink)}
body.se-body .se-nav .sub a.dis{color:var(--nav-muted)}
/* sotto-voci dell'area (le rotte di oggi, raggruppate): compaiono aprendo l'area */
.se-nav .sub{display:none;flex-direction:column;gap:1px;padding:2px 0 6px 20px;border-left:1px solid var(--nav-line);margin:2px 0 4px 18px}
.se-nav .sub.open{display:flex}
.se-nav .sub .g{font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--nav-muted);padding:8px 8px 2px}
.se-nav .sub a{padding:5px 8px;font-size:12.5px;font-weight:450;border-radius:6px;color:var(--nav-ink-2)}
.se-nav .sub a.on{background:var(--nav-2);color:var(--nav-ink);font-weight:600;box-shadow:inset 2px 0 0 var(--brand)}
.se-nav .sub a.dis{color:var(--nav-muted);opacity:.6}
.se-nav .sub a.dis::after{content:"";width:10px;height:10px;margin-left:auto;flex:none;background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2'%3E%3Crect x='5' y='11' width='14' height='10' rx='2'/%3E%3Cpath d='M8 11V7a4 4 0 0 1 8 0v4'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2'%3E%3Crect x='5' y='11' width='14' height='10' rx='2'/%3E%3Cpath d='M8 11V7a4 4 0 0 1 8 0v4'/%3E%3C/svg%3E") center/contain no-repeat}
.side-foot{margin-top:auto;display:flex;flex-direction:column;gap:1px;padding-top:10px;border-top:1px solid var(--nav-line)}
.me{display:flex;align-items:center;gap:9px;padding:8px 10px;font-size:13px;border-radius:8px;cursor:pointer;color:var(--nav-ink);background:none;border:0;width:100%;text-align:left}
.me:hover{background:var(--nav-2)}
.me .av{width:26px;height:26px;border-radius:50%;background:var(--nav-av);color:#fff;display:grid;place-items:center;font-size:11.5px;font-weight:700;flex:none}
.me .who{min-width:0;flex:1}
.me .who b{display:block;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.me .who span{color:var(--nav-muted);font-size:11.5px;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.me .tw{color:var(--nav-muted);display:flex}
.me .tw svg{width:14px;height:14px}
.me-menu{display:none;flex-direction:column;gap:1px;padding:4px 0 2px 8px}
/* il menu utente si apre SOPRA il nome, come un riquadro: aperto in coda alla barra finiva
   sotto il bordo dello schermo (la barra scorre e non si vedeva che c'era altro) */
.side-foot{position:relative}
.side-foot .me-menu{position:absolute;left:0;right:0;bottom:calc(100% - 4px);padding:6px;background:var(--nav-pop);border:1px solid var(--nav-line);border-radius:10px;box-shadow:var(--nav-shadow);z-index:5}
.me-menu.open{display:flex}
.me-menu a,.me-menu button{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:6px;font-size:12.5px;color:var(--nav-ink-2);background:none;border:0;width:100%;text-align:left;cursor:pointer}
.me-menu a:hover,.me-menu button:hover{background:var(--nav-2);color:var(--nav-ink)}
.side-foot .me-menu a:hover,.side-foot .me-menu button:hover{background:var(--nav-line)}
/* la voce della pagina corrente (a.on: fondo giallo, testo scuro) resta gialla anche sotto il mouse: col fondo
   del passaggio il testo scuro spariva nel tema scuro (08/10) */
.side-foot .me-menu a.on:hover{background:var(--brand)}
.me-menu .danger{color:var(--nav-danger)}
.me-menu svg{width:14px;height:14px;flex:none}
/* testa della barra: il logo e la freccia che la riduce alle sole icone (sul telefono la chiude) */
.side-hd{display:flex;align-items:center;gap:4px;margin:0 0 10px}
.side-tg{flex:none;width:30px;height:30px;border-radius:8px;border:0;background:none;color:var(--nav-muted);display:grid;place-items:center;cursor:pointer;padding:0}
.side-tg:hover{background:var(--nav-2);color:var(--nav-ink)}
.side-tg svg{width:16px;height:16px;transition:transform .18s}
.logo.logo-img img.lg-mar{display:none;width:34px;height:34px}
.se-nav .area .t{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* immagini in due versioni: a colori sul chiaro, in bianco sullo scuro */
:root[data-theme="dark"] img.su-chiaro,:root:not([data-theme="dark"]) img.su-scuro{display:none!important}
.app{transition:grid-template-columns .18s ease}
/* barra ridotta alle icone (solo sul computer): i nomi compaiono al passaggio del mouse (data-tip-c, se-ui.js) */
@media (min-width:961px){
  :root[data-barra="compatta"]{--side-w:var(--side-w-c)}
  :root[data-barra="compatta"] .side{overflow-x:hidden}
  :root[data-barra="compatta"] .side-hd{flex-direction:column;gap:6px}
  :root[data-barra="compatta"] .logo.logo-img{flex:none;padding:2px}
  :root[data-barra="compatta"] .logo.logo-img img.lg-est,:root[data-barra="compatta"] .logo small{display:none}
  :root[data-barra="compatta"] .logo.logo-img img.lg-mar{display:block}
  :root[data-barra="compatta"] .side-tg svg{transform:rotate(180deg)}
  :root[data-barra="compatta"] .se-nav .area .t,:root[data-barra="compatta"] .ente-sw .t,:root[data-barra="compatta"] .ente-sw .chev,
  :root[data-barra="compatta"] .search-btn .t,:root[data-barra="compatta"] .search-btn kbd,:root[data-barra="compatta"] .me .who,:root[data-barra="compatta"] .me .tw{display:none}
  :root[data-barra="compatta"] .ente-sw{justify-content:center;padding:6px 0;background:none;border-color:transparent}
  :root[data-barra="compatta"] .search-btn,:root[data-barra="compatta"] nav.se-nav a,:root[data-barra="compatta"] .me{justify-content:center;padding-left:0;padding-right:0}
  :root[data-barra="compatta"] .se-nav .lbl{font-size:0;padding:0;margin:8px 6px;border-top:1px solid var(--nav-line)}
  /* il menu utente esce dalla barra, a destra (la barra scorre e lo taglierebbe) */
  :root[data-barra="compatta"] .side-foot .me-menu{position:fixed;left:calc(var(--side-w-c) + 6px);right:auto;bottom:12px;width:250px}
}
/* il marchio fisso nella barra alta, solo sul telefono */
.top-logo{display:none;align-items:center;flex:none}
.top-logo img{width:30px;height:30px;display:block}

.main{min-width:0;display:flex;flex-direction:column;min-height:100vh}
.top{position:sticky;top:0;z-index:1030;display:flex;align-items:center;gap:10px;height:54px;padding:0 28px;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-bottom:1px solid var(--line-2)}
@supports not (background:color-mix(in srgb,#fff 50%,transparent)){.top{background:var(--bg)}}
.crumbs{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--muted);min-width:0;overflow:hidden;white-space:nowrap;margin:0;padding:0;list-style:none}
.crumbs a{text-decoration:none;cursor:pointer;color:var(--muted)}
.crumbs a:hover{color:var(--ink);text-decoration:none}
.crumbs b{color:var(--ink);font-weight:600;overflow:hidden;text-overflow:ellipsis}
.top .sp{flex:1}
.iconbtn{width:34px;height:34px;border-radius:8px;border:1px solid transparent;background:transparent;display:grid;place-items:center;cursor:pointer;position:relative;color:var(--ink-2);padding:0;text-decoration:none}
.iconbtn:hover{background:var(--surface-3);color:var(--ink);text-decoration:none}
.top .burger{display:none}
.iconbtn .badge{position:absolute;top:4px;right:4px;min-width:15px;height:15px;border-radius:10px;background:var(--bad);color:#fff;font-size:9.5px;font-weight:700;display:grid;place-items:center;padding:0 3px;line-height:1}
.scope-bar{display:flex;align-items:center;gap:8px;padding:7px 28px;font-size:12.5px;background:var(--surface-2);border-bottom:1px solid var(--line-2);color:var(--ink-2)}
.scope-bar b{font-weight:600;color:var(--ink)}
.scope-bar svg{width:15px;height:15px;flex:none}
.page{width:100%;max-width:1240px;padding:22px 28px 90px;margin:0 auto;flex:1}
.page.wide{max-width:1440px}
.page.full{max-width:none}
.se-foot{padding:10px 28px;font-size:11.5px;color:var(--muted);border-top:1px solid var(--line-2)}

/* ---------- intestazione pagina ---------- */
.ph{display:flex;align-items:flex-start;gap:16px;margin-bottom:18px;flex-wrap:wrap}
.ph .tt{flex:1;min-width:240px}
.ph h1{font-family:var(--f-display);font-weight:650;font-size:26px;line-height:1.15;margin:0;letter-spacing:-.015em;text-wrap:balance;color:var(--ink)}
.ph .sub{color:var(--muted);margin-top:4px;font-size:13.5px}
.ph .acts{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
h2.sec{font-family:var(--f-display);font-weight:650;font-size:17px;margin:0;letter-spacing:-.01em}
h3.sec,body.se-body h3.sec{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:0 0 8px;font-weight:600}

/* ---------- controlli ---------- */
.se-btn{display:inline-flex;align-items:center;gap:7px;height:34px;padding:0 13px;border-radius:8px;border:1px solid var(--line);background:var(--surface);color:var(--ink);font-weight:500;font-size:13.5px;cursor:pointer;white-space:nowrap;text-decoration:none;line-height:1}
.se-btn:hover{background:var(--surface-2);border-color:#cfccc2;color:var(--ink);text-decoration:none}
.se-btn.pri{background:var(--brand);border-color:var(--brand);color:var(--brand-ink);font-weight:600}
.se-btn.pri:hover{background:var(--brand-hover);border-color:var(--brand-hover);color:var(--brand-ink)}
.se-btn.ghost{background:transparent;border-color:transparent}
.se-btn.ghost:hover{background:var(--surface-3)}
.se-btn.sm{height:28px;padding:0 10px;font-size:12.5px;border-radius:7px}
.se-btn.danger{color:var(--bad)}
.se-btn:disabled,.se-btn.dis{opacity:.5;cursor:not-allowed}
.se-btn .k{font-family:var(--f-mono);font-size:10.5px;color:var(--muted);border:1px solid var(--line);border-radius:4px;padding:0 4px}
.se-btn svg,.iconbtn svg{width:16px;height:16px;flex:none}
.se-btn i.fa,.se-btn i.fas,.se-btn i.far{font-size:13px}
.link{color:var(--info);text-decoration:none;cursor:pointer;font-weight:500}
.link:hover{text-decoration:underline}
.rowlink{font-weight:600;text-decoration:none;cursor:pointer;color:var(--ink)}
.rowlink:hover{text-decoration:underline;text-underline-offset:2px;color:var(--ink)}
.se-input,.se-select,textarea.se-input{height:34px;border:1px solid var(--line);border-radius:8px;background:var(--surface);padding:0 10px;min-width:0;width:100%;color:var(--ink)}
textarea.se-input{height:auto;padding:8px 10px;min-height:70px}
.se-input:focus,.se-select:focus{outline:2px solid var(--focus);outline-offset:-1px;border-color:transparent}
.field{display:flex;flex-direction:column;gap:5px;min-width:0}
.field label{font-size:12.5px;font-weight:600;color:var(--ink-2);margin:0}
.field label .req{color:var(--bad)}
.field .hint{font-size:12px;color:var(--muted)}
.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.grid4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.span2{grid-column:span 2}

/* chip = FILTRO (si clicca). pill = STATO (si legge). Forme diverse di proposito. */
.chips{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.chip{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 11px;border-radius:999px;border:1px solid var(--line);background:var(--surface);font-size:13px;cursor:pointer;color:var(--ink-2);white-space:nowrap;text-decoration:none}
.chip:hover{border-color:#c9c6bb;color:var(--ink);text-decoration:none}
.chip.on{background:var(--ink);border-color:var(--ink);color:var(--surface)}
.chip.on:hover{color:var(--surface)}
.chip .n{font-size:11.5px;color:var(--muted);font-variant-numeric:tabular-nums}
.chip.on .n{color:inherit;opacity:.7}
.chip.add{border-style:dashed}
.pill{display:inline-flex;align-items:center;gap:5px;height:22px;padding:0 8px;border-radius:5px;font-size:12px;font-weight:600;white-space:nowrap;background:var(--surface-3);color:var(--ink-2)}
.pill::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.85}
.pill.ok{background:var(--ok-soft);color:var(--ok)} .pill.warn{background:var(--warn-soft);color:var(--warn)} .pill.bad{background:var(--bad-soft);color:var(--bad)} .pill.info{background:var(--info-soft);color:var(--info)} .pill.brand{background:var(--brand-soft);color:var(--brand-ink)}
/* nel tema scuro --brand-ink e' scuro come il fondo: la pill gialla usa il giallo */
:root[data-theme="dark"] .pill.brand{color:var(--brand)}
.pill.plain::before{display:none}
.tag{display:inline-flex;align-items:center;height:20px;padding:0 6px;border-radius:4px;font-size:11px;font-weight:700;letter-spacing:.03em;border:1px solid var(--line);color:var(--ink-2);background:var(--surface)}
.tag.ecm{border-color:var(--brand-line);background:var(--brand-soft);color:var(--brand-ink)}
.ent{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;white-space:nowrap;color:var(--ink-2)}
.ent i{width:9px;height:9px;border-radius:3px;display:inline-block;flex:none}

/* ---------- superfici ---------- */
.se-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r)}
.se-card .hd{display:flex;align-items:center;gap:10px;padding:13px 16px;border-bottom:1px solid var(--line-2)}
.se-card .hd h2{font-size:14.5px;font-weight:650;margin:0;font-family:var(--f-body)}
.se-card .hd .sp{flex:1}
.se-card .bd{padding:14px 16px}
.se-card.flat{background:transparent;border-style:dashed}
.cols{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:18px;align-items:start}
.cols.even{grid-template-columns:repeat(2,minmax(0,1fr))}
.stack{display:flex;flex-direction:column;gap:16px;min-width:0}
.se-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.se-row.between{justify-content:space-between}
.sp{flex:1}
.kv{display:grid;grid-template-columns:170px minmax(0,1fr);gap:9px 16px;font-size:13.5px;margin:0}
.kv dt{color:var(--muted);font-weight:normal}
.kv dd{margin:0;min-width:0}
.empty{padding:28px;text-align:center;color:var(--muted)}
.note{display:flex;gap:10px;padding:11px 14px;border-radius:9px;font-size:13px;border:1px solid var(--line);background:var(--surface-2)}
.note.warn{background:var(--warn-soft);border-color:transparent;color:var(--ink)}
.note.info{background:var(--info-soft);border-color:transparent}
.note.bad{background:var(--bad-soft);border-color:transparent}
.note.ok{background:var(--ok-soft);border-color:transparent}
.note b{font-weight:650}
.note>svg{width:16px;height:16px;flex:none;margin-top:2px}
.note .x{margin-left:auto}

/* ---------- tabelle ---------- */
.tbl-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r);background:var(--surface)}
/* le griglie kartik delle viste nuove scorrono dentro il loro riquadro: il ponte (parte 3) mette overflow:hidden a .kv-grid-container e taglierebbe le colonne di destra */
body.se-body .tbl-wrap.se-grid.kv-grid-container{overflow-x:auto}
.tbl{width:100%;border-collapse:collapse;font-size:13.5px;min-width:640px;margin:0}
.tbl th{position:sticky;top:0;background:var(--surface-2);text-align:left;font-size:11.5px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);padding:9px 12px;border-bottom:1px solid var(--line);white-space:nowrap}
.tbl td{padding:10px 12px;border-bottom:1px solid var(--line-2);vertical-align:middle}
.tbl tr:last-child td{border-bottom:0}
.tbl tbody tr:hover{background:var(--surface-2)}
.tbl tr.sel{background:var(--brand-soft)!important}
.tbl .ck{width:38px;padding-right:0}
.tbl .r,.se-tbl .r{text-align:right}
.tbl .sub,.se-tbl .sub{display:block;font-size:12px;color:var(--muted);margin-top:1px}
.tbl .acts{width:40px;text-align:right}
.tbl-foot{display:flex;align-items:center;gap:10px;padding:10px 2px;font-size:12.5px;color:var(--muted)}
body.se-body input[type=checkbox]{width:16px;height:16px;accent-color:var(--ink);cursor:pointer}
.bar{height:6px;border-radius:4px;background:var(--surface-3);overflow:hidden;min-width:60px}
.bar i{display:block;height:100%;background:var(--ink-2);border-radius:4px}
.bar.ok i{background:var(--ok)} .bar.warn i{background:var(--warn)} .bar.brand i{background:var(--brand)}

/* ---------- toolbar liste ---------- */
.tools{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:12px}
.searchbox{position:relative;flex:0 1 300px;min-width:180px}
.searchbox input{padding-left:32px}
.searchbox svg{position:absolute;left:10px;top:9px;width:16px;height:16px;color:var(--muted)}
.views{display:flex;gap:2px;border-bottom:1px solid var(--line);margin-bottom:14px;overflow-x:auto}
.views a,.views button{background:none;border:0;padding:9px 12px;font-size:13.5px;font-weight:500;color:var(--muted);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap;text-decoration:none;display:inline-flex;align-items:center}
.views a:hover,.views button:hover{color:var(--ink);text-decoration:none}
.views a.on,.views button.on{color:var(--ink);border-bottom-color:var(--ink);font-weight:600}
.views a>svg{width:15px;height:15px;flex:none;margin-right:7px;color:var(--muted)}
.views a:hover>svg,.views a.on>svg{color:var(--ink)}
.views .n{font-size:11.5px;color:var(--muted);margin-left:4px}
.views .star{margin-left:auto}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--surface)}
.seg a,.seg button{border:0;background:none;padding:0 11px;height:32px;font-size:13px;cursor:pointer;color:var(--muted);display:flex;align-items:center;gap:6px;text-decoration:none}
.seg a+a,.seg button+button{border-left:1px solid var(--line)}
.seg .on{background:var(--surface-3);color:var(--ink);font-weight:600}

/* ---------- barra azioni di massa ---------- */
.bulk{position:fixed;left:50%;bottom:22px;transform:translateX(-50%) translateY(200%);visibility:hidden;z-index:1060;background:var(--ink);color:var(--surface);border-radius:12px;padding:8px 8px 8px 16px;display:flex;align-items:center;gap:6px;box-shadow:var(--shadow);transition:transform .2s ease;max-width:calc(100vw - 32px);overflow-x:auto}
.bulk.show{transform:translateX(-50%) translateY(0);visibility:visible}
.bulk b{font-weight:650;margin-right:8px;white-space:nowrap}
.bulk .se-btn{background:transparent;color:var(--surface);border-color:rgba(255,255,255,.18)}
.bulk .se-btn:hover{background:rgba(255,255,255,.1)}
.bulk .se-btn.pri{background:var(--brand);color:var(--brand-ink);border-color:var(--brand)}

/* ---------- hub record (scheda evento / persona / commessa) ---------- */
.rec-head{display:flex;gap:16px;align-items:flex-start;flex-wrap:wrap;margin-bottom:14px}
.rec-head .tt{flex:1;min-width:260px}
.rec-head h1{font-family:var(--f-display);font-weight:650;font-size:24px;line-height:1.2;margin:0 0 6px;letter-spacing:-.015em;text-wrap:balance}
.rec-head .acts{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.facts{display:flex;flex-wrap:wrap;gap:6px 18px;font-size:13px;color:var(--ink-2)}
.facts span{display:inline-flex;align-items:center;gap:6px}
.facts svg{width:15px;height:15px;color:var(--muted)}
.path{display:flex;margin:4px 0 16px;overflow-x:auto;padding-bottom:2px}
.path .st{flex:1;min-width:120px;position:relative;padding:8px 14px 8px 22px;background:var(--surface);border:1px solid var(--line);border-left:0;font-size:12.5px;cursor:pointer;color:var(--muted);text-decoration:none}
.path .st:first-child{border-left:1px solid var(--line);border-radius:9px 0 0 9px;padding-left:14px}
.path .st:last-child{border-radius:0 9px 9px 0}
.path .st b{display:block;font-size:13px;color:var(--ink-2);font-weight:600}
.path .st.done{background:var(--surface-2)}
.path .st.done b::after{content:" ✓";color:var(--ok)}
.path .st.cur{background:var(--ink);border-color:var(--ink);color:#d8d5ca}
.path .st.cur b{color:var(--surface)}
.smart{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:18px}
.smart a,.smart button{display:flex;flex-direction:column;align-items:flex-start;gap:1px;padding:8px 13px;min-width:104px;border:1px solid var(--line);border-radius:9px;background:var(--surface);cursor:pointer;text-align:left;text-decoration:none;color:var(--ink)}
.smart a:hover,.smart button:hover{border-color:#c9c6bb;background:var(--surface-2);text-decoration:none;color:var(--ink)}
.smart b{font-family:var(--f-display);font-size:19px;font-weight:650;font-variant-numeric:tabular-nums;line-height:1.1}
.smart span{font-size:12px;color:var(--muted)}
.smart .alert b{color:var(--bad)}
.hub{display:grid;grid-template-columns:212px minmax(0,1fr);gap:22px;align-items:start}
.subnav{position:sticky;top:70px;display:flex;flex-direction:column;gap:1px}
/* titoletti dei sottomenu in neretto, con un filo fino al bordo; icona accanto a ogni voce (30/09) */
.subnav .g{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--ink);padding:14px 10px 5px;font-weight:700}
.subnav .g::after{content:"";flex:1;height:1px;background:var(--line)}
.subnav a svg{width:16px;height:16px;flex:none;color:var(--muted)}
.subnav a:hover svg,.subnav a.on svg{color:var(--ink)}
.subnav .g:first-child{padding-top:0}
.subnav a{display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:7px;font-size:13.5px;cursor:pointer;text-decoration:none;color:var(--ink-2)}
.subnav a:hover{background:var(--surface-3);color:var(--ink);text-decoration:none}
.subnav a.on{background:var(--surface);color:var(--ink);font-weight:600;box-shadow:inset 3px 0 0 var(--brand),0 0 0 1px var(--line)}
.subnav a .n{margin-left:auto;font-size:11.5px;color:var(--muted);font-variant-numeric:tabular-nums}
.subnav a .dot{width:7px;height:7px;border-radius:50%;background:var(--bad);margin-left:auto}
.subnav a .dot.w{background:var(--warn)}
/* navigazione secondaria dell'area, resa dal layout (Navigazione::navArea) */
.area-views{margin:-4px 0 18px}
.area-hub .area-body{min-width:0}
.area-hub .subnav{top:18px}

/* checklist + timeline */
.tl{position:relative;height:74px;margin:6px 8px 4px}
.tl .ax{position:absolute;left:0;right:0;top:34px;height:2px;background:var(--line)}
.tl .ev{position:absolute;top:22px;width:2px;height:26px;background:var(--ink);transform:translateX(-1px)}
.tl .ev span{position:absolute;top:-19px;left:50%;transform:translateX(-50%);font-size:11px;font-weight:700;white-space:nowrap}
.tl .today{position:absolute;top:18px;width:0;height:34px;border-left:2px dashed var(--info)}
.tl .today span{position:absolute;top:-14px;left:4px;font-size:11px;color:var(--info);font-weight:600;white-space:nowrap}
.tl .p{position:absolute;top:29px;width:12px;height:12px;border-radius:50%;transform:translateX(-6px);border:2px solid var(--surface);background:var(--muted);cursor:default}
.tl .p.ok{background:var(--ok)} .tl .p.bad{background:var(--bad)} .tl .p.warn{background:var(--warn)} .tl .p.todo{background:var(--surface);border-color:var(--muted)}
.tl .tk{position:absolute;top:44px;white-space:nowrap;font-size:10.5px;color:var(--muted);transform:translateX(-50%);font-variant-numeric:tabular-nums}
.chk{display:flex;flex-direction:column}
.chk .it{display:grid;grid-template-columns:22px minmax(0,1fr) auto;gap:10px;align-items:start;padding:10px 0;border-bottom:1px solid var(--line-2)}
.chk .it:last-child{border-bottom:0}
.chk .box{width:18px;height:18px;border-radius:5px;border:1.5px solid var(--muted);display:grid;place-items:center;margin-top:1px;font-size:12px;color:#fff}
.chk .it.done .box{background:var(--ok);border-color:var(--ok)}
.chk .it.done .t{color:var(--muted);text-decoration:line-through;text-decoration-color:var(--line)}
.chk .t{font-weight:500}
.chk .d{font-size:12px;color:var(--muted);margin-top:2px}
.chk .when{font-size:12.5px;text-align:right;white-space:nowrap}
/* checklist della scheda evento (progetti-adempimenti/_grid.php): quarta colonna per le azioni, stati della data */
.chk .it.has-acts{grid-template-columns:22px minmax(0,1fr) auto auto;align-items:center}
.chk .tx{min-width:0}
.chk a.box{cursor:pointer;text-decoration:none}
.chk a.box:hover{border-color:var(--ok);background:var(--ok-soft)}
.chk .it.na .box{background:var(--muted);border-color:var(--muted)}
.chk .when.bad{color:var(--bad);font-weight:600} .chk .when.warn{color:var(--warn);font-weight:600} .chk .when.muted{color:var(--muted)}
.chk .when svg{width:13px;height:13px;vertical-align:-2px;color:var(--muted)}
.chk .ac{display:flex;gap:2px}
.chk .ac .iconbtn{width:30px;height:30px}
h3.sec.gap{margin-top:16px}
details.adv.gap{margin-top:16px}
.link.ic svg{width:13px;height:13px;vertical-align:-2px}
/* rate dentro la riga di un documento (progetti-fatture/_grid.php) */
.rata{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:2px 0}
.rata .ac{display:inline-flex;gap:2px}
.rata .iconbtn,.se-tbl .iconbtn{width:28px;height:28px}
.link svg{width:13px;height:13px;vertical-align:-2px}
/* servizi della logistica (progetti-logistica/_giornate.php): una riga per servizio, dettaglio che si apre */
.srv{border-top:1px solid var(--line-2)}
.srv-h{display:grid;grid-template-columns:32px minmax(0,1fr) auto auto;gap:12px;align-items:center;padding:11px 16px}
.srv .ico{width:32px;height:32px;border-radius:8px;background:var(--surface-3);display:grid;place-items:center;color:var(--ink-2)}
.srv .ico svg{width:16px;height:16px}
.srv .t{font-weight:500;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.srv .t .tg{color:var(--ink);text-decoration:none;display:inline-flex;align-items:center;gap:4px}
.srv .t .tg svg{width:14px;height:14px;color:var(--muted);transition:transform .15s}
.srv .t .tg[aria-expanded="true"] svg{transform:rotate(90deg)}
.srv .m{font-size:12.5px;color:var(--muted);margin-top:2px}
.srv .m.ok{color:var(--ok)}
.srv.chiuso .t .tg{color:var(--muted)}
.srv .ac{display:flex;gap:4px}
.srv-bd{padding:0 16px 12px 60px}
.srv-bd.show,.srv-bd.collapsing{display:block}
button.pill.as-btn{border:0;cursor:pointer;height:26px}
button.pill.as-btn svg{width:12px;height:12px}
@media (max-width:640px){.srv-h{grid-template-columns:32px minmax(0,1fr)}.srv-h>.pill,.srv-h>.ac{grid-column:2;justify-self:start}.srv .ac .lbl{display:none}.srv-bd{padding-left:16px}}
@media (max-width:640px){.chk .it.has-acts{grid-template-columns:22px minmax(0,1fr) auto}.chk .ac{grid-column:2/-1}}

/* oggi */
.task{display:grid;grid-template-columns:4px minmax(0,1fr) auto;gap:12px;align-items:center;padding:11px 14px;border-bottom:1px solid var(--line-2);color:inherit;text-decoration:none}
.task:last-child{border-bottom:0}
a.task:hover{background:var(--surface-2);text-decoration:none;color:inherit}
.task .sv{align-self:stretch;border-radius:3px;background:var(--line)}
.task .sv.bad{background:var(--bad)} .task .sv.warn{background:var(--warn)} .task .sv.info{background:var(--info)}
.task .t{font-weight:500}
.task .m{font-size:12.5px;color:var(--muted);margin-top:2px;display:flex;gap:8px;flex-wrap:wrap;align-items:center}
/* scadenze (components/ui/Scadenze, views/site/_voce.php): le righe del «Da fare» in home e
   nella pagina «Da fare» — etichetta del tipo con l'icona, l'ente con «tutti gli enti», a
   destra la data e sotto lo stato in parole; in fondo al box quante altre e «Vedi tutte» */
.task .sc-tx{min-width:0}
.task .tag.sc-tipo{gap:4px;letter-spacing:0;font-weight:600}
.task .tag.sc-tipo svg{width:12px;height:12px;flex:none}
.task .sc-ente{display:inline-flex;align-items:center;gap:5px}
.task .sc-ente::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--e1)}
.task .sc-quando{display:flex;flex-direction:column;align-items:flex-end;gap:1px;text-align:right;white-space:nowrap;font-size:12.5px}
.task .sc-quando .qd{color:var(--ink-2);font-variant-numeric:tabular-nums}
.task .sc-quando .qs{font-size:11.5px;color:var(--muted)}
.task .sc-quando .qs.bad{color:var(--bad);font-weight:600}
.task .sc-quando .qs.warn{color:var(--warn);font-weight:600}
.sc-piede{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 14px;border-top:1px solid var(--line-2)}
.sc-piede .link{margin-left:auto}
.stat{display:flex;flex-direction:column;gap:2px;padding:12px 14px;text-decoration:none;color:inherit}
a.stat:hover{background:var(--surface-2);text-decoration:none;color:inherit}
.stat b{font-family:var(--f-display);font-size:24px;font-weight:650;font-variant-numeric:tabular-nums;letter-spacing:-.01em}
.stat span{font-size:12.5px;color:var(--muted)}
.stat em{font-style:normal;font-size:12px;color:var(--ok);font-weight:600}
.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr))}
.stats>*+*{border-left:1px solid var(--line-2)}
.evcard{display:grid;grid-template-columns:52px minmax(0,1fr);gap:12px;padding:12px 14px;border-bottom:1px solid var(--line-2);cursor:pointer;text-decoration:none;color:inherit}
.evcard:last-child{border-bottom:0}
.evcard:hover{background:var(--surface-2);text-decoration:none;color:inherit}
.cal-d{border:1px solid var(--line);border-radius:8px;text-align:center;overflow:hidden;background:var(--surface);align-self:start}
.cal-d i{display:block;font-style:normal;font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;background:var(--ink);color:var(--surface);padding:2px 0;font-weight:600}
.cal-d b{display:block;font-family:var(--f-display);font-size:19px;padding:2px 0 3px;font-weight:650}

/* kanban */
.kan{display:grid;grid-template-columns:repeat(5,minmax(220px,1fr));gap:12px;overflow-x:auto;padding-bottom:6px}
.kan .col{background:var(--surface-3);border-radius:10px;padding:10px;display:flex;flex-direction:column;gap:8px;min-height:200px}
.kan .col h4{margin:2px 4px 4px;font-size:12.5px;font-weight:650;display:flex;gap:6px}
.kan .col h4 span{color:var(--muted);font-weight:500}
.kcard{background:var(--surface);border:1px solid var(--line);border-radius:9px;padding:10px 11px;cursor:pointer;display:flex;flex-direction:column;gap:7px;text-decoration:none;color:inherit}
.kcard:hover{border-color:#c9c6bb;text-decoration:none;color:inherit}
.kcard .t{font-weight:600;font-size:13px;line-height:1.3}
.kcard .m{display:flex;gap:6px;flex-wrap:wrap;align-items:center;font-size:12px;color:var(--muted)}

/* persona 360 */
.p360{display:grid;grid-template-columns:280px minmax(0,1fr) 280px;gap:18px;align-items:start}
.avatar{width:56px;height:56px;border-radius:14px;display:grid;place-items:center;font-family:var(--f-display);font-weight:700;font-size:20px;background:var(--surface-3);color:var(--ink-2);overflow:hidden}
.avatar img{width:100%;height:100%;object-fit:cover}
.feed{display:flex;flex-direction:column}
.feed .fi{display:grid;grid-template-columns:28px minmax(0,1fr) auto;gap:10px;padding:11px 0;border-bottom:1px solid var(--line-2)}
.feed .fi:last-child{border-bottom:0}
.feed .ico{width:28px;height:28px;border-radius:8px;background:var(--surface-3);display:grid;place-items:center;color:var(--ink-2)}
.feed .ico svg{width:15px;height:15px}
.feed .when{font-size:12px;color:var(--muted);white-space:nowrap}

/* impostazioni */
.set-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.set-card{padding:14px 16px}
.set-card h3{margin:0 0 3px;font-size:14.5px;font-weight:650;display:flex;gap:8px;align-items:center}
.set-card h3 svg{width:16px;height:16px;color:var(--muted)}
.set-card p{margin:0 0 10px;font-size:12.5px;color:var(--muted)}
.set-card ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.set-card li{border-top:1px solid var(--line-2)}
.set-card li a{display:flex;align-items:center;gap:8px;padding:6px 0;font-size:13.5px;color:var(--ink);text-decoration:none}
.set-card li a:hover .nm{text-decoration:underline;text-underline-offset:2px}
.set-card li a.dis{color:var(--muted)}
.set-card li .inh{margin-left:auto}
.set-card li .desc{display:block;font-size:12px;color:var(--muted)}
.toggle{position:relative;width:36px;height:20px;border-radius:20px;background:var(--line);border:0;cursor:pointer;flex:none}
.toggle::after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;transition:left .15s;box-shadow:0 1px 2px rgba(0,0,0,.25)}
.toggle.on{background:var(--ok)}
.toggle.on::after{left:18px}
.steps{display:flex;flex-direction:column}
.steps .s{display:grid;grid-template-columns:28px minmax(0,1fr) auto;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line-2)}
.steps .s:last-child{border-bottom:0}
.steps .s .i{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:700;background:var(--surface-3);color:var(--ink-2)}
.steps .s.done .i{background:var(--ok);color:#fff}
.steps .s.prob .i{background:var(--bad);color:#fff}

/* documento (fattura) */
.doc-grid{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:18px;align-items:start}
.sticky{position:sticky;top:70px}
.tot{display:flex;flex-direction:column;gap:6px;font-size:13.5px}
.tot div{display:flex;justify-content:space-between}
.tot .g{font-family:var(--f-display);font-size:22px;font-weight:650;border-top:1px solid var(--line);padding-top:10px;margin-top:4px}
details.adv{border:1px solid var(--line);border-radius:var(--r);background:var(--surface)}
details.adv summary{padding:12px 16px;cursor:pointer;font-weight:600;list-style:none;display:flex;gap:8px;align-items:center}
details.adv summary::-webkit-details-marker{display:none}
details.adv summary::before{content:"▸";color:var(--muted);transition:transform .15s}
details.adv[open] summary::before{transform:rotate(90deg)}
details.adv .bd{padding:0 16px 16px}
.flow{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.flow .fx{display:flex;flex-direction:column;gap:2px;padding:9px 12px;border:1px solid var(--line);border-radius:9px;background:var(--surface);min-width:132px;cursor:pointer;text-decoration:none;color:inherit}
.flow .fx span{font-size:11.5px;color:var(--muted)}
.flow .fx b{font-size:13px}
.flow .ar{color:var(--muted)}
.flow .fx.ghost{border-style:dashed;background:transparent;color:var(--muted)}

/* ---------- sovrapposizioni proprie (palette, menu, toast) ---------- */
.scrim{position:fixed;inset:0;background:rgba(20,19,15,.42);z-index:1080;display:none}
.scrim.show{display:block}
.pal{position:fixed;z-index:1095;left:50%;top:12vh;transform:translateX(-50%);width:min(640px,calc(100vw - 32px));background:var(--surface);border-radius:14px;box-shadow:var(--shadow);border:1px solid var(--line);display:none;flex-direction:column;overflow:hidden}
.pal.show{display:flex}
.pal input{border:0;border-bottom:1px solid var(--line);height:52px;padding:0 18px;font-size:16px;background:transparent;outline:0;width:100%;color:var(--ink)}
.pal .res{max-height:52vh;overflow-y:auto;padding:6px}
.pal .grp{font-size:10.5px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);padding:10px 12px 4px;font-weight:600}
.pal .ri{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:8px;cursor:pointer;font-size:13.5px;color:var(--ink);text-decoration:none}
.pal .ri.on,.pal .ri:hover{background:var(--surface-3);text-decoration:none;color:var(--ink)}
.pal .ri .w{margin-left:auto;font-size:12px;color:var(--muted);white-space:nowrap}
.pal .ri svg{width:16px;height:16px;color:var(--muted);flex:none}
.pal .ri .old{font-size:11.5px;color:var(--muted)}
.pal .ft{border-top:1px solid var(--line-2);padding:8px 14px;font-size:12px;color:var(--muted);display:flex;gap:14px}
.pal .ft kbd{font-family:var(--f-mono);font-size:11px;background:none;color:inherit;padding:0}
.se-menu{position:fixed;z-index:1096;background:var(--surface);border:1px solid var(--line);border-radius:11px;box-shadow:var(--shadow);padding:6px;min-width:240px;display:none}
.se-menu.show{display:block}
.se-menu .mi{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:7px;cursor:pointer;font-size:13.5px;color:var(--ink);text-decoration:none;background:none;border:0;width:100%;text-align:left}
.se-menu .mi:hover{background:var(--surface-3);text-decoration:none;color:var(--ink)}
.se-menu .mi small{margin-left:auto;color:var(--muted);font-size:11.5px}
.se-menu .mi.on{font-weight:600}
.se-menu .mi .dot{width:22px;height:22px;border-radius:6px;display:grid;place-items:center;font-weight:700;font-size:11px;color:#fff;flex:none}
.se-menu .ms{height:1px;background:var(--line-2);margin:5px 4px}
.se-menu .mg{font-size:12.5px;color:var(--ink);padding:10px 10px 3px;font-weight:700}
.se-menu .mg:first-child{padding-top:4px}
.se-menu .mi.dis{opacity:.45;pointer-events:none}
.se-menu .mi svg{width:15px;height:15px;flex:none;color:var(--muted)}
/* griglie (js/se-ui.js, «griglie»): colonne nascoste, titolo-collegamento, scelta delle colonne */
.se-col-off{display:none!important}
/* piede delle griglie: conteggio e pagine vanno a capo su schermi stretti (prima il pager
   usciva dalla pagina e la faceva scorrere in orizzontale) */
.tbl-foot{flex-wrap:wrap;row-gap:6px}
.tbl-foot .pagination,body.se-body .pagination{flex-wrap:wrap;max-width:100%}
body.se-body .table tbody a.rowlink:not(.btn){color:var(--ink);font-weight:600;text-decoration:none}
body.se-body .table tbody a.rowlink:not(.btn):hover{color:var(--ink);text-decoration:underline}
.se-menu .mc{display:flex;align-items:center;gap:8px;padding:6px 10px;border-radius:7px;font-size:13px;cursor:pointer;margin:0;font-weight:400}
.se-menu .mc:hover{background:var(--surface-3)}
.se-colbar{display:flex;justify-content:flex-end;margin-bottom:8px}
.btn-toolbar .se-colonne{margin-right:6px}
.se-toast{position:fixed;z-index:1099;left:50%;bottom:24px;transform:translateX(-50%) translateY(30px);opacity:0;background:var(--ink);color:var(--surface);padding:10px 16px;border-radius:10px;font-size:13.5px;transition:all .2s;pointer-events:none;max-width:calc(100vw - 32px)}
.se-toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* ---------- grafici ---------- */
.viz{display:block;width:100%;height:auto;overflow:visible}
.viz text{font-family:var(--f-body);font-size:12px;fill:var(--muted)}
.viz .gl{stroke:var(--grid);stroke-width:1}
/* Grafico.php: zone del passaggio del mouse, valore finale della linea, legenda tratteggiata */
.viz .hit{fill:transparent}
.viz text.lv{fill:var(--ink-2);font-weight:600}
.legend i.dash{background:none!important;border-top:2px dashed var(--ink-2);height:0;border-radius:0}
/* barre orizzontali: colori dalla serie, righe che possono essere link */
.hb .t i.s1{background:var(--s1)} .hb .t i.s2{background:var(--s2)} .hb .t i.s3{background:var(--s3)}
a.r{color:inherit;text-decoration:none} a.r:hover span:first-child{color:var(--ink)}
/* cruscotto (site/index.php) */
.stack.gap-s{gap:8px}
.num.big{font-family:var(--f-display);font-size:21px;font-weight:650;line-height:1.2}
.ev-tx{min-width:0}
.evcard .t{font-weight:600;line-height:1.3}
.evcard .m{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:5px;font-size:12.5px;color:var(--muted)}
.task .q-bad,.q-bad{color:var(--bad);font-weight:600}
.se-tbl td.nowrap{white-space:nowrap} .se-tbl td.strong{font-weight:600}
.se-tbl td.cella-espandi{vertical-align:top}
.se-tbl td.cella-espandi .se-btn svg{width:14px;height:14px}
.se-select.sm{height:32px;padding:0 28px 0 10px;font-size:13px;width:auto}
/* schede della home dei Report (site/report.php): tutta la scheda e' il link */
body.se-body a.rep-card{display:flex;align-items:center;gap:12px;padding:14px 16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);color:var(--ink);text-decoration:none;min-width:0}
body.se-body a.rep-card:hover{border-color:var(--ink-2);background:var(--surface-2);text-decoration:none;color:var(--ink)}
a.rep-card .tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
body.se-body a.rep-card>svg{flex:none;width:84px;height:auto}
a.rep-card>.muted svg{width:16px;height:16px}
/* indicatori su telefono: due per riga, curvetta che si adatta (una colonna sola occupava tre schermate) */
@media (max-width:640px){body.se-body .kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.kpi .v{font-size:20px}.kpi svg{width:100%;height:auto}.kpi .d{font-size:11.5px}}
.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--ink-2);margin-top:6px}
.legend span{display:inline-flex;align-items:center;gap:6px}
.legend i{width:10px;height:10px;border-radius:3px;display:inline-block}
.hb{display:flex;flex-direction:column;gap:7px}
.hb .r{display:grid;grid-template-columns:minmax(90px,38%) minmax(0,1fr) auto;gap:10px;align-items:center;font-size:12.5px}
.hb .r span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink-2)}
.hb .t{height:10px;background:var(--surface-3);border-radius:4px;overflow:hidden}
.hb .t i{display:block;height:100%;border-radius:0 4px 4px 0}
.hb .v{font-variant-numeric:tabular-nums;font-weight:600;min-width:42px;text-align:right}
.stk{display:flex;gap:2px;height:14px;border-radius:5px;overflow:hidden}
.stk i{display:block;height:100%}
.kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px}
.kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:12px 14px;display:flex;flex-direction:column;gap:2px;min-width:0;text-decoration:none;color:inherit}
a.kpi:hover{border-color:#c9c6bb;text-decoration:none;color:inherit}
.kpi .l{font-size:12px;color:var(--muted)}
.kpi .v{font-family:var(--f-display);font-size:23px;font-weight:650;font-variant-numeric:tabular-nums;letter-spacing:-.01em;line-height:1.15}
.kpi .d{font-size:12px;font-weight:600}
.kpi .d.up{color:var(--ok)} .kpi .d.down{color:var(--bad)} .kpi .d.flat{color:var(--muted)}
.kpi svg{margin-top:4px}
#se-tip{position:fixed;z-index:1120;pointer-events:none;background:var(--ink);color:var(--surface);font-size:12px;line-height:1.35;padding:6px 9px;border-radius:7px;box-shadow:var(--shadow);opacity:0;transition:opacity .08s;max-width:260px;white-space:pre-line}
#se-tip.show{opacity:1}

/* ---------- responsive ---------- */
@media (max-width:1180px){.p360{grid-template-columns:260px minmax(0,1fr)}.p360 .rt{grid-column:1/-1}.set-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:1040px){.cols,.doc-grid{grid-template-columns:minmax(0,1fr)}.sticky{position:static}.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.stats>*:nth-child(3){border-left:0}.stats>*:nth-child(n+3){border-top:1px solid var(--line-2)}.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.grid4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:960px){
  .app{grid-template-columns:minmax(0,1fr)}
  /* il cassetto sta SOPRA il velo (.scrim 1080): prima era sotto e le voci non si potevano toccare */
  .side{position:fixed;left:0;top:0;bottom:0;width:280px;max-width:86vw;z-index:1090;transform:translateX(-102%);transition:transform .2s ease;padding-top:calc(14px + env(safe-area-inset-top,0px));overscroll-behavior:contain;height:auto;height:100dvh;padding-bottom:0}
  /* iPhone: il cassetto e' alto quanto lo schermo visibile (100dvh: la barra di Safari non lo copre) e la riga
     dell'utente resta ferma in fondo anche quando le aree sono piu' dello schermo */
  .side-foot{position:sticky;bottom:0;z-index:2;background:var(--nav);padding-bottom:calc(12px + env(safe-area-inset-bottom,0px))}
  .side.open{transform:none;box-shadow:var(--shadow)}
  body.se-nav-aperta{overflow:hidden}
  nav.se-nav a{padding:10px 10px}
  .side-tg{width:38px;height:38px}
  .top .burger{display:grid;width:40px;height:40px;margin-left:-6px}
  .top-logo{display:flex}
  .top{padding:0 16px;top:env(safe-area-inset-top,0px)}
  .scope-bar{padding:7px 16px}
  .page{padding:18px 16px 90px}
  .se-foot{padding:10px 16px}
  .hub{grid-template-columns:minmax(0,1fr)}
  .subnav{position:static;flex-direction:row;overflow-x:auto;gap:4px;padding-bottom:4px;border-bottom:1px solid var(--line)}
.area-hub .subnav .g{display:none}
.area-hub .subnav a{white-space:nowrap}
  .subnav .g{display:none}
  .subnav a{white-space:nowrap;flex:none}
  .subnav a.on{box-shadow:inset 0 -2px 0 var(--brand)}
  .p360{grid-template-columns:minmax(0,1fr)}
  .cols.even{grid-template-columns:minmax(0,1fr)}
}
@media (max-width:640px){
  .grid2,.grid3,.grid4{grid-template-columns:minmax(0,1fr)}.span2{grid-column:auto}
  .set-grid{grid-template-columns:minmax(0,1fr)}
  .kv{grid-template-columns:minmax(0,1fr);gap:2px 0}.kv dd{margin-bottom:8px}
  .ph h1{font-size:22px}.rec-head h1{font-size:20px}
  .crumbs .mid{display:none}
  .se-card .hd{flex-wrap:wrap}
  .scope-bar .long{display:none}
  .rec-head .acts{width:100%}
  .kpis{grid-template-columns:minmax(0,1fr)}
}
@media (min-width:641px){.scope-bar .short{display:none}}

/* ---------- crea al volo (components/ui/CreaAlVolo.php, js/se-ui.js) ----------
   Il pannello che, dentro una modale, crea l'elemento che manca in una tendina. */
.cav{margin:8px 0 16px;padding:14px 16px 12px;border:1px solid var(--line);border-radius:var(--r);background:var(--surface-2)}
.cav[hidden]{display:none}
.cav-hd{display:flex;align-items:center;justify-content:space-between;gap:8px}
.cav-hd b{display:inline-flex;align-items:center;gap:6px;font-weight:650;color:var(--ink)}
.cav-hd b svg{width:16px;height:16px}
.cav-hd .iconbtn{width:28px;height:28px}
.cav-nota{margin:4px 0 12px;font-size:13px;line-height:1.45;color:var(--muted)}
.cav-campi{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 14px}
.cav-f{display:flex;flex-direction:column;gap:4px;min-width:0}
.cav-f[hidden]{display:none}
.cav-largo{grid-column:1/-1}
.cav-l{font-size:12.5px;font-weight:600;color:var(--ink-2);margin:0}
.cav-obbl{color:var(--bad)}
.cav-aiuto{font-size:12px;line-height:1.4;color:var(--muted)}
.cav-radio{display:flex;flex-wrap:wrap;gap:6px}
.cav-radio .chip{position:relative;margin:0}
.cav-radio input{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}
.cav-radio .chip:focus-within{outline:2px solid var(--brand);outline-offset:1px}
.cav-check{display:flex;align-items:center;gap:8px;font-size:13.5px;font-weight:400;margin:0;color:var(--ink-2)}
body.se-body .cav .form-control[data-noautofill][readonly]{background:var(--surface);color:var(--ink)}
.cav-az{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px}
.cav-esito{font-size:13px;color:var(--muted)}
.cav-esito.ok{color:var(--ok)}
.cav-esito.bad{color:var(--bad)}
.se-btn.cav-apri{white-space:nowrap}
.se-btn.cav-apri svg{width:14px;height:14px}
@media (max-width:560px){.cav-campi{grid-template-columns:minmax(0,1fr)}}

/* =====================================================================
   3. PONTE: Bootstrap 4 + AdminLTE 3 + Kartik dentro il nuovo look
   Vale per le viste NON ancora riscritte. Ogni regola qui e' un debito che
   la riscrittura della vista estingue.
   ===================================================================== */
/* AdminLTE: il body non porta piu' le classi di layout, ma il suo css tocca
   ancora font e sfondo di body e .content-wrapper: si riportano ai token. */
/* il body no: il suo sfondo e' var(--bg) della parte 2 (se trasparente si vede lo sfondo di default del browser, scuro col tema scuro del sistema) */
body.se-body .content-wrapper,body.se-body .content{background:transparent;color:var(--ink);font-family:var(--f-body)}
body.se-body .wrapper{min-height:0}
body.se-body h1,body.se-body h2,body.se-body h3,body.se-body h4,body.se-body h5,body.se-body h6,body.se-body .h1,body.se-body .h2,body.se-body .h3,body.se-body .h4,body.se-body .h5{font-family:var(--f-body);color:var(--ink);font-weight:650}
body.se-body h1,body.se-body .h1{font-family:var(--f-display);font-size:24px;letter-spacing:-.015em}
body.se-body h2,body.se-body .h2{font-size:19px}
body.se-body h3,body.se-body .h3{font-size:16px}
body.se-body h4,body.se-body .h4{font-size:14.5px}
body.se-body h5,body.se-body .h5{font-size:13.5px}
body.se-body .text-muted{color:var(--muted)!important}
body.se-body hr{border-top-color:var(--line-2)}
body.se-body .small,body.se-body small{font-size:12.5px}

/* card di Bootstrap/AdminLTE → superficie nuova */
body.se-body .card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:none;margin-bottom:16px}
body.se-body .card-header{background:transparent;border-bottom:1px solid var(--line-2);padding:13px 16px;border-radius:var(--r) var(--r) 0 0}
body.se-body .card-header .card-title{font-size:14.5px;font-weight:650;margin:0;float:none;display:inline-flex;align-items:center;gap:8px}
body.se-body .card-body{padding:14px 16px}
body.se-body .card-footer{background:var(--surface-2);border-top:1px solid var(--line-2);padding:10px 16px;border-radius:0 0 var(--r) var(--r)}
body.se-body .card.card-primary:not(.card-outline)>.card-header,body.se-body .card.card-info:not(.card-outline)>.card-header,body.se-body .card.card-success:not(.card-outline)>.card-header,body.se-body .card.card-warning:not(.card-outline)>.card-header,body.se-body .card.card-danger:not(.card-outline)>.card-header,body.se-body .card.card-secondary:not(.card-outline)>.card-header,body.se-body .card.card-dark:not(.card-outline)>.card-header{background:var(--surface-2);color:var(--ink)}
body.se-body .card.card-primary:not(.card-outline)>.card-header .card-title,body.se-body .card.card-info:not(.card-outline)>.card-header .card-title,body.se-body .card.card-success:not(.card-outline)>.card-header .card-title,body.se-body .card.card-warning:not(.card-outline)>.card-header .card-title,body.se-body .card.card-danger:not(.card-outline)>.card-header .card-title{color:var(--ink)}
body.se-body .card-outline{border-top-width:1px}
body.se-body .card.card-outline.card-primary,body.se-body .card.card-outline.card-info,body.se-body .card.card-outline.card-success,body.se-body .card.card-outline.card-warning,body.se-body .card.card-outline.card-danger{border-top:1px solid var(--line)}
body.se-body .card .btn-tool{color:var(--muted)}
body.se-body .callout{background:var(--surface-2);border:1px solid var(--line);border-left:3px solid var(--info);border-radius:var(--r-sm);box-shadow:none}
body.se-body .callout.callout-warning{border-left-color:var(--warn)}
body.se-body .callout.callout-danger{border-left-color:var(--bad)}
body.se-body .callout.callout-success{border-left-color:var(--ok)}
body.se-body .info-box,body.se-body .small-box{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:none;color:var(--ink)}
body.se-body .small-box .inner h3{font-family:var(--f-display)}
body.se-body .small-box>.small-box-footer{background:var(--surface-2);color:var(--ink-2)}
body.se-body .small-box.bg-info,body.se-body .small-box.bg-success,body.se-body .small-box.bg-warning,body.se-body .small-box.bg-danger,body.se-body .small-box.bg-primary,body.se-body .info-box.bg-info,body.se-body .info-box.bg-success,body.se-body .info-box.bg-warning,body.se-body .info-box.bg-danger{background:var(--surface)!important;color:var(--ink)!important}
body.se-body .small-box .icon{color:rgba(28,27,23,.08)}
body.se-body .info-box .info-box-icon{border-radius:var(--r-sm) 0 0 var(--r-sm);background:var(--surface-3)!important;color:var(--ink-2)}

/* bottoni Bootstrap → forme nuove. `btn-primary`/`btn-success` = azione principale. */
body.se-body .btn{border-radius:8px;font-weight:500;font-size:13.5px;padding:0 13px;height:34px;display:inline-flex;align-items:center;gap:7px;line-height:1;box-shadow:none;white-space:nowrap}
body.se-body .btn-sm,body.se-body .btn-group-sm>.btn{height:28px;padding:0 10px;font-size:12.5px;border-radius:7px}
body.se-body .btn-xs{height:24px;padding:0 8px;font-size:12px;border-radius:6px}
body.se-body .btn-lg,body.se-body .btn-group-lg>.btn{height:40px;padding:0 16px;font-size:14.5px}
body.se-body .btn-block{width:100%;justify-content:center}
body.se-body .btn-primary,body.se-body .btn-success,body.se-body .btn-info{background:var(--brand);border-color:var(--brand);color:var(--brand-ink);font-weight:600}
body.se-body .btn-primary:hover,body.se-body .btn-success:hover,body.se-body .btn-info:hover,body.se-body .btn-primary:focus,body.se-body .btn-success:focus,body.se-body .btn-info:focus{background:var(--brand-hover);border-color:var(--brand-hover);color:var(--brand-ink);box-shadow:none}
body.se-body .btn-primary:not(:disabled):not(.disabled):active,body.se-body .btn-success:not(:disabled):not(.disabled):active{background:var(--brand-hover);border-color:var(--brand-hover);color:var(--brand-ink)}
body.se-body .btn-secondary,body.se-body .btn-default,body.se-body .btn-light,body.se-body .btn-outline-primary,body.se-body .btn-outline-secondary,body.se-body .btn-outline-info,body.se-body .btn-outline-success,body.se-body .btn-outline-dark{background:var(--surface);border-color:var(--line);color:var(--ink)}
body.se-body .btn-secondary:hover,body.se-body .btn-default:hover,body.se-body .btn-light:hover,body.se-body .btn-outline-primary:hover,body.se-body .btn-outline-secondary:hover,body.se-body .btn-outline-info:hover,body.se-body .btn-outline-success:hover,body.se-body .btn-outline-dark:hover{background:var(--surface-2);border-color:#cfccc2;color:var(--ink)}
body.se-body .btn-danger,body.se-body .btn-outline-danger{background:var(--surface);border-color:var(--line);color:var(--bad)}
body.se-body .btn-danger:hover,body.se-body .btn-outline-danger:hover{background:var(--bad-soft);border-color:var(--bad-soft);color:var(--bad)}
body.se-body .btn-warning,body.se-body .btn-outline-warning{background:var(--surface);border-color:var(--line);color:var(--warn)}
body.se-body .btn-warning:hover{background:var(--warn-soft);border-color:var(--warn-soft);color:var(--warn)}
body.se-body .btn-dark{background:var(--ink);border-color:var(--ink);color:var(--surface)}
body.se-body .btn-link{color:var(--info);height:auto;padding:0;display:inline}
body.se-body .btn:focus,body.se-body .btn.focus{box-shadow:0 0 0 2px var(--focus)}
body.se-body .btn-group>.btn{border-radius:0}
body.se-body .btn-group>.btn:first-child{border-radius:8px 0 0 8px}
body.se-body .btn-group>.btn:last-child{border-radius:0 8px 8px 0}
body.se-body .btn-group>.btn:only-child{border-radius:8px}
body.se-body .btn .fa,body.se-body .btn .fas,body.se-body .btn .far{font-size:12.5px}

/* form Bootstrap + kartik */
body.se-body .form-control,body.se-body .custom-select,body.se-body .form-control-sm{height:34px;border:1px solid var(--line);border-radius:8px;background:var(--surface);padding:0 10px;color:var(--ink);font-size:13.5px;box-shadow:none}
body.se-body textarea.form-control{height:auto;padding:8px 10px;min-height:70px}
body.se-body .form-control:focus,body.se-body .custom-select:focus{outline:2px solid var(--focus);outline-offset:-1px;border-color:transparent;box-shadow:none}
body.se-body .form-control.is-invalid,body.se-body .has-error .form-control{border-color:var(--bad)}
body.se-body .invalid-feedback,body.se-body .help-block{font-size:12px;color:var(--bad)}
body.se-body label,body.se-body .control-label,body.se-body .col-form-label{font-size:12.5px;font-weight:600;color:var(--ink-2);margin-bottom:5px}
body.se-body .form-group{margin-bottom:14px}
body.se-body .input-group-text{border:1px solid var(--line);background:var(--surface-2);border-radius:8px;color:var(--muted);font-size:13px;height:34px}
body.se-body .input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}
body.se-body .input-group>.input-group-append>.btn,body.se-body .input-group>.input-group-append>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}
body.se-body .input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}
body.se-body .custom-control-label::before{border-color:var(--line);background:var(--surface)}
body.se-body .custom-control-input:checked~.custom-control-label::before{background:var(--ink);border-color:var(--ink)}
body.se-body .custom-switch .custom-control-input:checked~.custom-control-label::before{background:var(--ok);border-color:var(--ok)}
/* Select2 (kartik/krajee) */
body.se-body .select2-container--krajee-bs4 .select2-selection,body.se-body .select2-container--default .select2-selection--single,body.se-body .select2-container--default .select2-selection--multiple{border:1px solid var(--line);border-radius:8px;background:var(--surface);min-height:34px;box-shadow:none}
body.se-body .select2-container--krajee-bs4 .select2-selection--single{height:34px}
body.se-body .select2-container--krajee-bs4 .select2-selection--single .select2-selection__rendered{line-height:32px;padding-left:10px;color:var(--ink);font-size:13.5px}
body.se-body .select2-container--krajee-bs4 .select2-selection--single .select2-selection__arrow{height:32px}
body.se-body .select2-container--krajee-bs4.select2-container--focus .select2-selection,body.se-body .select2-container--krajee-bs4.select2-container--open .select2-selection{border-color:transparent;outline:2px solid var(--focus);outline-offset:-1px;box-shadow:none}
body.se-body .select2-container--krajee-bs4 .select2-dropdown{border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);overflow:hidden;background:var(--surface)}
body.se-body .select2-container--krajee-bs4 .select2-results__option--highlighted[aria-selected]{background:var(--surface-3);color:var(--ink)}
body.se-body .select2-container--krajee-bs4 .select2-results__option[aria-selected=true]{background:var(--brand-soft);color:var(--ink)}
body.se-body .select2-container--krajee-bs4 .select2-search--dropdown .select2-search__field{border:1px solid var(--line);border-radius:7px;height:32px}
body.se-body .select2-container--krajee-bs4 .select2-selection--multiple .select2-selection__choice{background:var(--surface-3);border:1px solid var(--line);border-radius:5px;color:var(--ink);font-size:12.5px}
/* datepicker / datecontrol */
body.se-body .kv-drp-dropdown .form-control,body.se-body .krajee-datepicker{border-radius:8px}
body.se-body .datepicker{border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);font-family:var(--f-body)}
body.se-body .datepicker table tr td.active,body.se-body .datepicker table tr td.active:hover{background:var(--ink)!important;background-image:none;color:var(--surface)}
body.se-body .datepicker table tr td.today{background:var(--brand-soft)!important;background-image:none;color:var(--ink)}

/* tabelle Bootstrap + GridView (kartik e yii) */
body.se-body .table{color:var(--ink);font-size:13.5px;margin-bottom:0}
body.se-body .table th,body.se-body .table thead th{background:var(--surface-2);font-size:11.5px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);padding:9px 12px;border-bottom:1px solid var(--line);border-top:0;vertical-align:middle;white-space:nowrap}
body.se-body .table td{padding:10px 12px;border-top:0;border-bottom:1px solid var(--line-2);vertical-align:middle}
body.se-body .table tbody tr:last-child td{border-bottom:0}
body.se-body .table-hover tbody tr:hover,body.se-body .table-striped tbody tr:nth-of-type(odd):hover{background:var(--surface-2);color:var(--ink)}
body.se-body .table-striped tbody tr:nth-of-type(odd){background:transparent}
body.se-body .table-bordered,body.se-body .table-bordered td,body.se-body .table-bordered th{border-color:var(--line-2)}
body.se-body .table-sm td,body.se-body .table-sm th{padding:6px 10px}
body.se-body .table .filters td{background:var(--surface);padding:6px 8px}
body.se-body .table .filters .form-control{height:30px;font-size:12.5px}
body.se-body .table a:not(.btn){color:var(--info)}
body.se-body .table .action-column a,body.se-body .table .kv-action-column a{color:var(--ink-2);margin:0 3px}
body.se-body .table .action-column a:hover,body.se-body .table .kv-action-column a:hover{color:var(--ink)}
body.se-body .table thead th a{color:var(--muted)}
body.se-body .table thead th a.asc::after,body.se-body .table thead th a.desc::after{color:var(--ink)}
body.se-body .kv-grid-container{border-radius:var(--r);overflow:hidden}
body.se-body .kv-grid-table{margin:0}
body.se-body .kv-panel-before,body.se-body .kv-panel-after{background:var(--surface);border:0;padding:10px 12px}
body.se-body .kv-grid-container .card-header,body.se-body .kv-grid-container .panel-heading{background:var(--surface);padding:12px 16px}
body.se-body .kv-grid-container .card-header .card-title,body.se-body .kv-grid-container .panel-title{font-size:14.5px;font-weight:650;color:var(--ink)}
body.se-body .kv-grid-container.card-primary>.card-header,body.se-body .kv-grid-container.card-info>.card-header,body.se-body .kv-grid-container.card-success>.card-header,body.se-body .kv-grid-container.card-default>.card-header{background:var(--surface);color:var(--ink);border-bottom:1px solid var(--line-2)}
body.se-body .kv-grid-container .card-footer,body.se-body .kv-grid-container .panel-footer{background:var(--surface-2);border-top:1px solid var(--line-2)}
body.se-body .kv-grid-container .card-footer .summary,body.se-body .summary{font-size:12.5px;color:var(--muted)}
body.se-body .kv-table-wrap{border-radius:0}
body.se-body .kv-grid-container .kv-toolbar-container,body.se-body .kv-grid-toolbar{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
body.se-body .kv-grid-container .btn-toolbar .btn{height:30px;padding:0 10px;font-size:12.5px}
body.se-body .kv-page-summary td{background:var(--surface-2);font-weight:600}
body.se-body .grid-view .empty,body.se-body .kv-grid-table .empty{padding:24px;text-align:center;color:var(--muted)}
body.se-body .pagination{margin:12px 0 0;gap:2px}
body.se-body .page-link{border:1px solid transparent;border-radius:7px!important;color:var(--ink-2);padding:5px 10px;font-size:13px;margin:0 1px;background:transparent}
body.se-body .page-link:hover{background:var(--surface-3);color:var(--ink)}
body.se-body .page-item.active .page-link{background:var(--ink);border-color:var(--ink);color:var(--surface)}
body.se-body .page-item.disabled .page-link{color:var(--muted);background:transparent}

/* DetailView */
body.se-body .detail-view th{width:220px;background:var(--surface-2);color:var(--muted);font-weight:500;text-transform:none;letter-spacing:0;font-size:13px}
body.se-body .detail-view td{font-size:13.5px}
/* DetailView (kartik): tutte le righe sulla stessa griglia (30/09).
   kartik mette ogni riga a piu' campi in una tabella annidata (kv-child-table) che il browser
   dimensiona per conto suo: da una riga all'altra le colonne non si allineavano mai, e le
   larghezze scritte nelle viste (10%, 20%) peggioravano le cose. Ogni riga diventa una griglia
   etichetta | valore | etichetta | valore, con l'etichetta sempre larga --kv-l. */
body.se-body{--kv-l:clamp(150px,20%,230px)}
body.se-body .kv-detail-view{overflow-x:visible}
body.se-body table.detail-view{width:100%}
body.se-body table.detail-view>tbody,body.se-body table.kv-child-table>tbody{display:block;width:100%}
body.se-body table.detail-view>tbody>tr{display:grid;grid-template-columns:var(--kv-l) minmax(0,1fr);width:100%}
body.se-body table.detail-view>tbody>tr>th[colspan],body.se-body table.detail-view>tbody>tr>td[colspan]{grid-column:1/-1}
body.se-body table.detail-view>tbody>tr>td.kv-child-table-cell{padding:0;border:0}
body.se-body table.kv-child-table{width:100%;margin:0;border:0}
body.se-body table.kv-child-table tr{display:grid;grid-template-columns:var(--kv-l) minmax(0,1fr) var(--kv-l) minmax(0,1fr);width:100%}
body.se-body table.detail-view th,body.se-body table.detail-view td{width:auto!important;min-width:0}
body.se-body table.detail-view th{display:flex;align-items:center;white-space:normal;line-height:1.3}
body.se-body table.detail-view th[hidden]{display:none}
/* una coppia sola (o l'ultima di tre) prende il resto della riga */
body.se-body table.kv-child-table td:last-child:not(:nth-child(4n)){grid-column:span 3}
/* riga che comincia con un interruttore (etichetta nascosta, interruttore, etichetta, campo):
   l'etichetta va davanti come nelle altre righe, poi l'interruttore e il campo */
body.se-body table.kv-child-table tr:has(>th[hidden]:first-child){grid-template-columns:var(--kv-l) auto minmax(0,1fr)}
body.se-body table.kv-child-table tr:has(>th[hidden]:first-child)>th:not([hidden]){order:-1}
body.se-body table.kv-child-table tr:has(>th[hidden]:first-child)>td:last-child{grid-column:auto}
body.se-body table.detail-view .form-control,body.se-body table.detail-view .select2-container,body.se-body table.detail-view .input-group{max-width:100%}
/* righe con etichette nascoste in mezzo (un valore che accompagna il precedente, es. «Ok CF»
   dopo il codice fiscale, o la striscia di riepilogo in testa ai dati anagrafici): una riga che
   va a capo, con l'etichetta visibile sempre larga --kv-l e i valori «senza etichetta» stretti */
body.se-body table.kv-child-table tr:has(>th[hidden]:not(:first-child)){display:flex;flex-wrap:wrap;align-items:stretch}
body.se-body table.kv-child-table tr:has(>th[hidden]:not(:first-child))>th{flex:0 0 var(--kv-l)}
body.se-body table.kv-child-table tr:has(>th[hidden]:not(:first-child))>td{flex:1 1 160px}
body.se-body table.kv-child-table tr:has(>th[hidden]:not(:first-child))>th[hidden]+td{flex:0 1 auto}
/* conta la larghezza della scheda, non dello schermo: accanto al menu di una scheda-hub la
   tabella e' stretta anche su un computer. Sotto i 720px un campo per riga, sotto i 460px
   l'etichetta sopra il valore. */
body.se-body .kv-detail-view{container-type:inline-size}
@container (max-width:720px){
  body.se-body table.kv-child-table tr{grid-template-columns:var(--kv-l) minmax(0,1fr)}
  body.se-body table.kv-child-table td:last-child:not(:nth-child(4n)){grid-column:auto}
}
@container (max-width:460px){
  body.se-body table.detail-view>tbody>tr,body.se-body table.kv-child-table tr,body.se-body table.kv-child-table tr:has(>th[hidden]:first-child){grid-template-columns:minmax(0,1fr)}
  body.se-body table.kv-child-table tr:has(>th[hidden]:first-child)>td:last-child{grid-column:auto}
  body.se-body table.kv-child-table tr:has(>th[hidden]:not(:first-child)){display:grid;grid-template-columns:minmax(0,1fr)}
  body.se-body table.detail-view th{border-bottom:0;padding-bottom:2px}
}
/* immagine che manca (js/se-ui.js): il marchio della piattaforma, leggero, al posto dell'icona rotta */
body.se-body img.se-img-vuota{object-fit:contain;opacity:.25;filter:grayscale(1);background:var(--surface-2);padding:12%;box-sizing:border-box;min-width:48px;min-height:48px}

/* tab e pill Bootstrap → linguette nuove */
body.se-body .nav-tabs{border-bottom:1px solid var(--line);gap:2px;margin-bottom:14px;flex-wrap:nowrap;overflow-x:auto}
body.se-body .nav-tabs .nav-link{border:0;border-bottom:2px solid transparent;margin-bottom:-1px;padding:9px 12px;font-size:13.5px;font-weight:500;color:var(--muted);border-radius:0;white-space:nowrap;background:transparent}
body.se-body .nav-tabs .nav-link:hover{color:var(--ink);border-color:transparent transparent var(--line)}
body.se-body .nav-tabs .nav-link.active{color:var(--ink);border-bottom-color:var(--ink);font-weight:600;background:transparent}
body.se-body .nav-tabs .nav-link .badge{margin-left:4px}
body.se-body .card-tabs .card-header{padding:0 8px}
body.se-body .card-tabs .card-header .nav-tabs{margin-bottom:0}
body.se-body .nav-pills .nav-link{border-radius:999px;color:var(--ink-2);font-size:13px;padding:5px 12px}
body.se-body .nav-pills .nav-link.active{background:var(--ink);color:var(--surface)}
body.se-body .tab-content{padding-top:2px}

/* badge → pill */
body.se-body .badge{border-radius:5px;font-weight:600;font-size:11.5px;padding:3px 7px;letter-spacing:0}
body.se-body .badge-success,body.se-body .bg-success{background:var(--ok-soft)!important;color:var(--ok)!important}
body.se-body .badge-warning,body.se-body .bg-warning{background:var(--warn-soft)!important;color:var(--warn)!important}
body.se-body .badge-danger,body.se-body .bg-danger{background:var(--bad-soft)!important;color:var(--bad)!important}
body.se-body .badge-info,body.se-body .badge-primary,body.se-body .bg-info,body.se-body .bg-primary{background:var(--info-soft)!important;color:var(--info)!important}
body.se-body .badge-secondary,body.se-body .badge-light,body.se-body .badge-dark{background:var(--surface-3)!important;color:var(--ink-2)!important}
body.se-body .badge-pill{border-radius:999px}

/* alert e flash */
body.se-body .alert{border:1px solid transparent;border-radius:9px;font-size:13px;padding:11px 14px;box-shadow:none}
body.se-body .alert-success{background:var(--ok-soft);color:var(--ok)}
body.se-body .alert-warning{background:var(--warn-soft);color:var(--warn)}
body.se-body .alert-danger,body.se-body .alert-error{background:var(--bad-soft);color:var(--bad)}
body.se-body .alert-info{background:var(--info-soft);color:var(--info)}
body.se-body .alert .close{color:inherit;opacity:.6;text-shadow:none}

/* modali (Bootstrap 4 + ajax-modal-popup) */
body.se-body .modal-content{border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);background:var(--surface);color:var(--ink)}
body.se-body .modal-header{padding:16px 20px 12px;border-bottom:1px solid var(--line-2);border-top:0}
body.se-body .modal-footer{border-bottom:0}
body.se-body .modal-header .modal-title,body.se-body .modal-header h4,body.se-body .modal-header h5{font-family:var(--f-display);font-size:19px;font-weight:650;margin:0}
body.se-body .modal-header .close{color:var(--muted);text-shadow:none;opacity:1;font-weight:400;padding:12px 16px;margin:-12px -16px -12px auto}
body.se-body .modal-body{padding:16px 20px}
body.se-body .modal-footer{padding:12px 20px;border-top:1px solid var(--line-2)}
body.se-body .modal-backdrop{background:#14130f}
body.se-body .modal-backdrop.show{opacity:.42}

/* dropdown Bootstrap */
body.se-body .dropdown-menu{border:1px solid var(--line);border-radius:11px;box-shadow:var(--shadow);padding:6px;font-size:13.5px;background:var(--surface)}
body.se-body .dropdown-item{border-radius:7px;padding:8px 10px;color:var(--ink)}
body.se-body .dropdown-item:hover,body.se-body .dropdown-item:focus{background:var(--surface-3);color:var(--ink)}
body.se-body .dropdown-divider{border-top-color:var(--line-2);margin:5px 4px}
body.se-body .dropdown-header{font-size:10.5px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);padding:8px 10px 3px;font-weight:600}
/* Icone dei widget kartik ancora in Font Awesome (calendario e × di DatePicker, «Seleziona tutti / Deseleziona
   tutti» di Select2): disegnate con le icone del design system; stesso posto, stesso clic */
body.se-body .kv-dp-icon.fas,body.se-body .s2-togall-button .far{width:14px;height:14px;display:inline-block;vertical-align:-2px;background:currentColor;-webkit-mask:var(--se-ic) center/contain no-repeat;mask:var(--se-ic) center/contain no-repeat}
body.se-body .kv-dp-icon.fas::before,body.se-body .s2-togall-button .far::before{content:none}
body.se-body .kv-dp-icon.fa-calendar-alt{--se-ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='16' rx='2'/%3E%3Cpath d='M16 3v4M8 3v4M3 10h18'/%3E%3C/svg%3E")}
body.se-body .kv-dp-icon.fa-times{--se-ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 6l12 12M18 6L6 18'/%3E%3C/svg%3E")}
body.se-body .s2-togall-button .fa-square{--se-ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='4' y='4' width='16' height='16' rx='3'/%3E%3C/svg%3E")}
body.se-body .s2-togall-button .fa-check-square{--se-ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='4' y='4' width='16' height='16' rx='3'/%3E%3Cpath d='M8 12l3 3 5-6'/%3E%3C/svg%3E")}
/* Azioni di riga di kartik rimaste con le icone predefinite (Font Awesome pieno e blu: occhio, matita, cestino),
   per esempio nelle griglie Contatti, Indirizzi e Coordinate bancarie delle schede: le icone del design system,
   grigie come gli iconbtn. Stesso link, stesso clic; si disegna il ::before, lo <span> resta di kartik */
body.se-body .kv-grid-table td a > .fas.fa-eye::before,body.se-body .kv-grid-table td a > .fas.fa-pencil-alt::before,body.se-body .kv-grid-table td a > .fas.fa-trash-alt::before{content:"";display:inline-block;width:16px;height:16px;vertical-align:-3px;background:currentColor;-webkit-mask:var(--se-ic) center/contain no-repeat;mask:var(--se-ic) center/contain no-repeat}
body.se-body .kv-grid-table td a > .fas.fa-eye,body.se-body .kv-grid-table td a > .fas.fa-pencil-alt,body.se-body .kv-grid-table td a > .fas.fa-trash-alt{color:var(--ink-2)}
body.se-body .kv-grid-table td a:hover > .fas.fa-eye,body.se-body .kv-grid-table td a:hover > .fas.fa-pencil-alt{color:var(--ink)}
body.se-body .kv-grid-table td a:hover > .fas.fa-trash-alt{color:var(--bad)}
body.se-body .kv-grid-table td a > .fas.fa-eye{--se-ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7S2 12 2 12z'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/svg%3E")}
body.se-body .kv-grid-table td a > .fas.fa-pencil-alt{--se-ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 20h4L19 9l-4-4L4 16z'/%3E%3C/svg%3E")}
body.se-body .kv-grid-table td a > .fas.fa-trash-alt{--se-ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 7h16M9 7V4h6v3M6 7l1 13h10l1-13M10 11v6M14 11v6'/%3E%3C/svg%3E")}
/* campanella: il pallino delle comunicazioni da leggere */
.campanella-pallino{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--info);margin-right:8px;vertical-align:middle}

/* breadcrumb Bootstrap rimasto nelle viste (il vero percorso sta nella barra alta) */
body.se-body .breadcrumb{background:transparent;padding:0;margin:0 0 10px;font-size:12.5px}
body.se-body .content-header{padding:0 0 10px}
body.se-body .content-header h1{font-size:24px}
body.se-body .progress{border-radius:4px;background:var(--surface-3);height:8px}
body.se-body .progress-bar{background:var(--ink-2)}
body.se-body .list-group-item{border-color:var(--line-2);background:var(--surface);color:var(--ink)}
body.se-body .text-primary{color:var(--info)!important}
body.se-body .text-success{color:var(--ok)!important}
body.se-body .text-danger{color:var(--bad)!important}
body.se-body .text-warning{color:var(--warn)!important}
body.se-body .bg-light{background:var(--surface-2)!important}
body.se-body .border,body.se-body .border-top,body.se-body .border-bottom{border-color:var(--line-2)!important}
body.se-body .toast{border-radius:10px}
body.se-body pre{background:var(--surface-2);border:1px solid var(--line);border-radius:8px;padding:10px;font-family:var(--f-mono);font-size:12.5px;color:var(--ink)}
body.se-body code{font-family:var(--f-mono);color:var(--bad);font-size:12.5px}
/* fullcalendar */
body.se-body .fc .fc-toolbar h2{font-family:var(--f-display);font-size:19px}
body.se-body .fc .fc-button{border-radius:8px;background:var(--surface);border-color:var(--line);color:var(--ink);text-transform:none;font-size:13px}
body.se-body .fc .fc-button.fc-button-active,body.se-body .fc .fc-state-active{background:var(--ink);color:var(--surface);border-color:var(--ink);box-shadow:none}
body.se-body .fc th{background:var(--surface-2);font-size:11.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
body.se-body .fc-unthemed td,body.se-body .fc-unthemed th,body.se-body .fc-unthemed .fc-divider{border-color:var(--line-2)}
body.se-body .fc-unthemed td.fc-today{background:var(--brand-soft)}

/* Pagine ponte: la vista mette il suo html dentro `.content` di AdminLTE. Gli
   diamo il respiro del `.page` senza il suo max-width (le GridView larghe
   esistono, e finche' non sono riscritte non vanno strette). */
.page.legacy{max-width:none}
.page.legacy .container-fluid{padding:0}

/* ---------- righe colorate di Bootstrap nelle tabelle (DetailView, GridView) ----------
   Le intestazioni di sezione delle schede usano `table-info` (azzurro, piu' carico al
   passaggio del mouse): diventano una fascia neutra come le etichette di sezione. Le righe
   di stato prendono i colori tenui del tema. Al passaggio del mouse nessuna cambia colore. */
body.se-body .table tr.table-info>th,
body.se-body .table tr.table-info>td,
body.se-body .table-hover tbody tr.table-info:hover>th,
body.se-body .table-hover tbody tr.table-info:hover>td,
body.se-body .table-hover tbody tr.table-info:hover,
body.se-body .table tr.table-primary>th,
body.se-body .table tr.table-primary>td,
body.se-body .table-hover tbody tr.table-primary:hover>th,
body.se-body .table-hover tbody tr.table-primary:hover>td,
body.se-body .table-hover tbody tr.table-primary:hover,
body.se-body .table tr.table-secondary>th,
body.se-body .table tr.table-secondary>td,
body.se-body .table-hover tbody tr.table-secondary:hover>th,
body.se-body .table-hover tbody tr.table-secondary:hover>td,
body.se-body .table-hover tbody tr.table-secondary:hover,
body.se-body .table tr.table-active>th,
body.se-body .table tr.table-active>td,
body.se-body .table-hover tbody tr.table-active:hover>th,
body.se-body .table-hover tbody tr.table-active:hover>td,
body.se-body .table-hover tbody tr.table-active:hover,
body.se-body .table tr.table-light>th,
body.se-body .table tr.table-light>td,
body.se-body .table-hover tbody tr.table-light:hover>th,
body.se-body .table-hover tbody tr.table-light:hover>td,
body.se-body .table-hover tbody tr.table-light:hover,
body.se-body .table tr.table-dark>th,
body.se-body .table tr.table-dark>td,
body.se-body .table-hover tbody tr.table-dark:hover>th,
body.se-body .table-hover tbody tr.table-dark:hover>td,
body.se-body .table-hover tbody tr.table-dark:hover{background-color:var(--surface-3)!important;color:var(--ink-2)!important;border-color:var(--line)!important}
body.se-body .detail-view tr.table-info>th,body.se-body .detail-view tr.table-primary>th,body.se-body .detail-view tr.table-active>th{font-size:11.5px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)!important}
body.se-body .table tr.table-success>th,
body.se-body .table tr.table-success>td,
body.se-body .table-hover tbody tr.table-success:hover>th,
body.se-body .table-hover tbody tr.table-success:hover>td,
body.se-body .table-hover tbody tr.table-success:hover{background-color:var(--ok-soft)!important;color:var(--ink)!important}
body.se-body .table tr.table-warning>th,
body.se-body .table tr.table-warning>td,
body.se-body .table-hover tbody tr.table-warning:hover>th,
body.se-body .table-hover tbody tr.table-warning:hover>td,
body.se-body .table-hover tbody tr.table-warning:hover{background-color:var(--warn-soft)!important;color:var(--ink)!important}
body.se-body .table tr.table-danger>th,
body.se-body .table tr.table-danger>td,
body.se-body .table-hover tbody tr.table-danger:hover>th,
body.se-body .table-hover tbody tr.table-danger:hover>td,
body.se-body .table-hover tbody tr.table-danger:hover{background-color:var(--bad-soft)!important;color:var(--ink)!important}
body.se-body .detail-view.table-hover tbody tr:not([class*="table-"]):hover{background-color:var(--surface-2)}

/* =====================================================================
   PONTE SCURO — solo con il tema scuro, per le viste non ancora riscritte
   ===================================================================== */
/* Fondi chiari scritti a mano nelle viste vecchie (style="background-color:#f2f2f2"…):
   in scuro diventano la superficie del tema, col testo del tema. Lista chiusa di
   bianchi e grigi chiarissimi: i colori veri (rosso, giallo…) restano come sono. */
:root[data-theme="dark"] body.se-body [style*="background-color:#fff"],
:root[data-theme="dark"] body.se-body [style*="background-color: #fff"],
:root[data-theme="dark"] body.se-body [style*="background:#fff"],
:root[data-theme="dark"] body.se-body [style*="background: #fff"],
:root[data-theme="dark"] body.se-body [style*="background-color:#ffffff"],
:root[data-theme="dark"] body.se-body [style*="background-color: #ffffff"],
:root[data-theme="dark"] body.se-body [style*="background:#ffffff"],
:root[data-theme="dark"] body.se-body [style*="background: #ffffff"],
:root[data-theme="dark"] body.se-body [style*="background-color:#fefefe"],
:root[data-theme="dark"] body.se-body [style*="background-color: #fefefe"],
:root[data-theme="dark"] body.se-body [style*="background:#fefefe"],
:root[data-theme="dark"] body.se-body [style*="background: #fefefe"],
:root[data-theme="dark"] body.se-body [style*="background-color:#fdfdfd"],
:root[data-theme="dark"] body.se-body [style*="background-color: #fdfdfd"],
:root[data-theme="dark"] body.se-body [style*="background:#fdfdfd"],
:root[data-theme="dark"] body.se-body [style*="background: #fdfdfd"],
:root[data-theme="dark"] body.se-body [style*="background-color:#fafafa"],
:root[data-theme="dark"] body.se-body [style*="background-color: #fafafa"],
:root[data-theme="dark"] body.se-body [style*="background:#fafafa"],
:root[data-theme="dark"] body.se-body [style*="background: #fafafa"],
:root[data-theme="dark"] body.se-body [style*="background-color:#f9f9f9"],
:root[data-theme="dark"] body.se-body [style*="background-color: #f9f9f9"],
:root[data-theme="dark"] body.se-body [style*="background:#f9f9f9"],
:root[data-theme="dark"] body.se-body [style*="background: #f9f9f9"],
:root[data-theme="dark"] body.se-body [style*="background-color:#f8f9fa"],
:root[data-theme="dark"] body.se-body [style*="background-color: #f8f9fa"],
:root[data-theme="dark"] body.se-body [style*="background:#f8f9fa"],
:root[data-theme="dark"] body.se-body [style*="background: #f8f9fa"],
:root[data-theme="dark"] body.se-body [style*="background-color:#f8f8f8"],
:root[data-theme="dark"] body.se-body [style*="background-color: #f8f8f8"],
:root[data-theme="dark"] body.se-body [style*="background:#f8f8f8"],
:root[data-theme="dark"] body.se-body [style*="background: #f8f8f8"],
:root[data-theme="dark"] body.se-body [style*="background-color:#f7f7f7"],
:root[data-theme="dark"] body.se-body [style*="background-color: #f7f7f7"],
:root[data-theme="dark"] body.se-body [style*="background:#f7f7f7"],
:root[data-theme="dark"] body.se-body [style*="background: #f7f7f7"],
:root[data-theme="dark"] body.se-body [style*="background-color:#f5f5f5"],
:root[data-theme="dark"] body.se-body [style*="background-color: #f5f5f5"],
:root[data-theme="dark"] body.se-body [style*="background:#f5f5f5"],
:root[data-theme="dark"] body.se-body [style*="background: #f5f5f5"],
:root[data-theme="dark"] body.se-body [style*="background-color:#f4f6f9"],
:root[data-theme="dark"] body.se-body [style*="background-color: #f4f6f9"],
:root[data-theme="dark"] body.se-body [style*="background:#f4f6f9"],
:root[data-theme="dark"] body.se-body [style*="background: #f4f6f9"],
:root[data-theme="dark"] body.se-body [style*="background-color:#f4f4f4"],
:root[data-theme="dark"] body.se-body [style*="background-color: #f4f4f4"],
:root[data-theme="dark"] body.se-body [style*="background:#f4f4f4"],
:root[data-theme="dark"] body.se-body [style*="background: #f4f4f4"],
:root[data-theme="dark"] body.se-body [style*="background-color:#f2f2f2"],
:root[data-theme="dark"] body.se-body [style*="background-color: #f2f2f2"],
:root[data-theme="dark"] body.se-body [style*="background:#f2f2f2"],
:root[data-theme="dark"] body.se-body [style*="background: #f2f2f2"],
:root[data-theme="dark"] body.se-body [style*="background-color:#f1f1f1"],
:root[data-theme="dark"] body.se-body [style*="background-color: #f1f1f1"],
:root[data-theme="dark"] body.se-body [style*="background:#f1f1f1"],
:root[data-theme="dark"] body.se-body [style*="background: #f1f1f1"],
:root[data-theme="dark"] body.se-body [style*="background-color:#f0f0f0"],
:root[data-theme="dark"] body.se-body [style*="background-color: #f0f0f0"],
:root[data-theme="dark"] body.se-body [style*="background:#f0f0f0"],
:root[data-theme="dark"] body.se-body [style*="background: #f0f0f0"],
:root[data-theme="dark"] body.se-body [style*="background-color:#eee"],
:root[data-theme="dark"] body.se-body [style*="background-color: #eee"],
:root[data-theme="dark"] body.se-body [style*="background:#eee"],
:root[data-theme="dark"] body.se-body [style*="background: #eee"],
:root[data-theme="dark"] body.se-body [style*="background-color:#eeeeee"],
:root[data-theme="dark"] body.se-body [style*="background-color: #eeeeee"],
:root[data-theme="dark"] body.se-body [style*="background:#eeeeee"],
:root[data-theme="dark"] body.se-body [style*="background: #eeeeee"],
:root[data-theme="dark"] body.se-body [style*="background-color:#e9ecef"],
:root[data-theme="dark"] body.se-body [style*="background-color: #e9ecef"],
:root[data-theme="dark"] body.se-body [style*="background:#e9ecef"],
:root[data-theme="dark"] body.se-body [style*="background: #e9ecef"],
:root[data-theme="dark"] body.se-body [style*="background-color:white"],
:root[data-theme="dark"] body.se-body [style*="background-color: white"],
:root[data-theme="dark"] body.se-body [style*="background:white"],
:root[data-theme="dark"] body.se-body [style*="background: white"]{background-color:var(--surface-2)!important;color:var(--ink)!important}
/* classi chiare di Bootstrap/AdminLTE */
:root[data-theme="dark"] body.se-body .bg-white,:root[data-theme="dark"] body.se-body .bg-light,
:root[data-theme="dark"] body.se-body .table-light,:root[data-theme="dark"] body.se-body .table-light>td,:root[data-theme="dark"] body.se-body .table-light>th,
:root[data-theme="dark"] body.se-body .thead-light th,:root[data-theme="dark"] body.se-body .table .thead-light th,
:root[data-theme="dark"] body.se-body .card,:root[data-theme="dark"] body.se-body .card-header,:root[data-theme="dark"] body.se-body .card-footer,
:root[data-theme="dark"] body.se-body .modal-content,:root[data-theme="dark"] body.se-body .modal-header,:root[data-theme="dark"] body.se-body .modal-footer,
:root[data-theme="dark"] body.se-body .dropdown-menu,:root[data-theme="dark"] body.se-body .list-group-item,
:root[data-theme="dark"] body.se-body .popover,:root[data-theme="dark"] body.se-body .popover-body,
:root[data-theme="dark"] body.se-body .alert-light,:root[data-theme="dark"] body.se-body .badge-light,
:root[data-theme="dark"] body.se-body .nav-tabs .nav-link.active,:root[data-theme="dark"] body.se-body .page-link,
:root[data-theme="dark"] body.se-body .select2-dropdown,:root[data-theme="dark"] body.se-body .select2-container--krajee-bs4 .select2-selection,
:root[data-theme="dark"] body.se-body .select2-container--default .select2-selection,:root[data-theme="dark"] body.se-body .input-group-text,
:root[data-theme="dark"] body.se-body .datepicker,:root[data-theme="dark"] body.se-body .datepicker-dropdown,
:root[data-theme="dark"] body.se-body .kv-page-summary td,:root[data-theme="dark"] body.se-body .table tfoot td,:root[data-theme="dark"] body.se-body .table tfoot th{background-color:var(--surface)!important;color:var(--ink)!important;border-color:var(--line)!important}
:root[data-theme="dark"] body.se-body .form-control,:root[data-theme="dark"] body.se-body .custom-select,:root[data-theme="dark"] body.se-body .select2-search__field,
:root[data-theme="dark"] body.se-body textarea,:root[data-theme="dark"] body.se-body select,:root[data-theme="dark"] body.se-body input:not([type=checkbox]):not([type=radio]):not([type=submit]):not([type=button]){background-color:var(--surface-2)!important;color:var(--ink)!important;border-color:var(--line)!important}
:root[data-theme="dark"] body.se-body .form-control::placeholder{color:var(--muted)}
:root[data-theme="dark"] body.se-body .text-dark,:root[data-theme="dark"] body.se-body .text-body,:root[data-theme="dark"] body.se-body .close{color:var(--ink)!important}
:root[data-theme="dark"] body.se-body .text-muted{color:var(--muted)!important}
:root[data-theme="dark"] body.se-body .select2-results__option--highlighted,:root[data-theme="dark"] body.se-body .dropdown-item:hover{background-color:var(--surface-3)!important;color:var(--ink)!important}
:root[data-theme="dark"] body.se-body .dropdown-item{color:var(--ink)}
:root[data-theme="dark"] body.se-body .table-striped tbody tr:nth-of-type(odd){background-color:transparent}
:root[data-theme="dark"] body.se-body hr{border-color:var(--line)}
:root[data-theme="dark"] body.se-body img.img-circle{background:#fff}

/* =====================================================================
   4. COMPONENTI DELLE AREE
   Scritti area per area nella conversione delle viste (30/09/2026), in
   css/parti/<area>.css, e riuniti qui nell'ordine in cui venivano caricati
   (dopo tutto il resto): l'ordine conta per il cascade e va conservato.
   Ogni blocco porta il nome dell'area. Regola: mai colori a mano, solo token;
   il tema scuro passa dai token.
   ===================================================================== */

/* ---------- area: amministrazione ---------- */
/*
 * css/parti/amministrazione.css — Amministrazione: «Da gestire», vendite (fatture, note di
 * credito, preventivi, listino), acquisti (fatture elettroniche ricevute), incassi e
 * pagamenti (restyling 30/09). Caricato dopo se-ui.css (assets/SeUiAsset.php). Solo token,
 * tema scuro compreso: nessun colore scritto a mano. Da riunire nella parte 2 di se-ui.css.
 */

/* ---------- «Da gestire» (amministrazione/index.php) ---------- */
/* le tessere di «quel che aspetta»: numero grande, titolo, dettaglio; il bordo sinistro dice
   l'urgenza (bad/warn/info), grigio quando non c'e' niente */
.amm-tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:16px}
body.se-body a.amm-tile{display:flex;flex-direction:column;gap:3px;min-width:0;padding:13px 16px;background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--line);border-radius:var(--r);color:var(--ink);text-decoration:none}
body.se-body a.amm-tile:hover{background:var(--surface-2);color:var(--ink);text-decoration:none}
body.se-body a.amm-tile.bad{border-left-color:var(--bad)} body.se-body a.amm-tile.warn{border-left-color:var(--warn)} body.se-body a.amm-tile.info{border-left-color:var(--info)}
.amm-tile .n{font-family:var(--f-display);font-size:26px;font-weight:650;line-height:1.1;letter-spacing:-.01em}
.amm-tile b{font-weight:650;line-height:1.3}
.amm-tile .d{font-size:12.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.amm-tile.zero .n,.amm-tile.zero b{color:var(--muted)}
.amm-row{margin-top:16px}
/* barre orizzontali disegnate in SVG (la lunghezza e' un attributo, non uno stile) */
.amm-hb .t svg{display:block;width:100%;height:100%}
.amm-hb rect.s1{fill:var(--s1)} .amm-hb rect.s2{fill:var(--s2)} .amm-hb rect.s3{fill:var(--s3)}
/* tabella dentro una card: senza la cornice propria, e piu' stretta del minimo delle tabelle */
.tbl-wrap.amm-flat{border:0;border-radius:0 0 var(--r) var(--r)}
.tbl.amm-stretta{min-width:420px}
@media (max-width:1040px){.amm-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* sul telefono le tessere a zero si riducono al numero e al titolo: sono la parte da non leggere */
@media (max-width:640px){.amm-tiles{grid-template-columns:minmax(0,1fr);gap:8px}body.se-body a.amm-tile.zero{flex-direction:row;align-items:baseline;gap:10px;padding:9px 14px}.amm-tile.zero .n{font-size:18px}.amm-tile.zero .d{display:none}}

/* ---------- elenchi dell'area (fatture, preventivi, listino, fatture ricevute, scadenze) ---------- */
/* le icone delle azioni di riga su una riga sola */
.se-tbl td.amm-azioni{white-space:nowrap;text-align:right}
.se-tbl td.amm-azioni .iconbtn{display:inline-grid;place-items:center;color:var(--ink-2)}
.se-tbl td.amm-azioni .iconbtn:hover{color:var(--ink)}

/* ---------- fattura / nota di credito / preventivo (fatt-attiva-master/_form.php) ---------- */
/* i campi kartik stanno in griglie proprie: niente margine del form-group */
body.se-body .fatt-doc .form-group{margin-bottom:0}
.fatt-doc .help-block:empty,.fatt-doc .invalid-feedback:empty{display:none}
.fatt-doc .hint-block,.fatt-doc .form-text{font-size:12px;color:var(--muted)}
.fatt-doc .input-group-append .btn svg{width:14px;height:14px}
/* griglia a sei colonne: c1…c6 = quante ne prende il campo */
.fatt-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px 14px;align-items:start}
.fatt-grid>.c1{grid-column:span 1} .fatt-grid>.c2{grid-column:span 2} .fatt-grid>.c3{grid-column:span 3}
.fatt-grid>.c4{grid-column:span 4} .fatt-grid>.c5{grid-column:span 5} .fatt-grid>.c6{grid-column:1/-1}
.fatt-grid-in{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 14px}
/* ente del documento, in cima ed evidenziato (solo con «Tutti gli enti») */
.amm-ente{background:var(--brand-soft);padding:12px;border-radius:10px;margin-bottom:14px}
/* numero / suffisso con il separatore che il tipo documento decide */
.fatt-num{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:6px;align-items:end}
.fatt-num .separatore{padding-bottom:6px;font-weight:700;color:var(--muted)}
/* le sezioni che si aprono (dati cliente, fattura elettronica): sotto la scheda, con una riga */
.fatt-doc .se-card .hd{flex-wrap:wrap}
.fatt-sub{border-top:1px solid var(--line-2)}
.fatt-sub h3.sec{margin-bottom:10px}
.fatt-tg svg,.fatt-sez-tg>svg{transition:transform .15s}
.fatt-tg[aria-expanded="true"] svg,.fatt-sez-tg[aria-expanded="true"]>svg{transform:rotate(180deg)}
.fatt-tg:disabled{opacity:.5;cursor:not-allowed}
/* intestazione-interruttore di una sezione (pagamento, bollo, attribuzioni, sconto): spenta
   finche' non si sceglie tipo documento e cliente, e allora lo dice */
.fatt-sez-tg{display:flex;align-items:center;gap:10px;width:100%;padding:13px 16px;background:none;border:0;text-align:left;cursor:pointer;color:var(--ink)}
.fatt-sez-tg:hover{background:var(--surface-2)}
.fatt-sez-tg .tx{flex:1;min-width:0;display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 10px}
.fatt-sez-tg b{font-size:14.5px;font-weight:650}
.fatt-sez-tg .hint{font-size:12.5px;color:var(--muted)}
.fatt-sez-tg .quando{display:none;font-size:12.5px;color:var(--muted)}
.fatt-sez-tg:disabled{cursor:not-allowed;background:none}
.fatt-sez-tg:disabled b{color:var(--muted)}
.fatt-sez-tg:disabled .hint{display:none}
.fatt-sez-tg:disabled .quando{display:inline}
.fatt-sez-tg>svg{width:16px;height:16px;color:var(--muted);flex:none}
.fatt-sez>.fatt-sez-tg~.fatt-sez-tg,.se-card>.fatt-sez-tg{border-top:1px solid var(--line-2)}
.fatt-sez>.fatt-sez-tg:first-child{border-radius:var(--r) var(--r) 0 0}
.fatt-sez .collapse>.bd,.fatt-sez .collapsing>.bd,.se-card>.collapse>.bd{border-top:1px solid var(--line-2)}
/* righe: legenda come l'intestazione di una tabella, ogni riga chiusa e' un riassunto
   (codice, descrizione, IVA, quantita', prezzo, sconto, totale) che si apre per modificarla */
.fatt-legenda,.fatt-riga-hd .button-collapse{display:grid;grid-template-columns:20px 80px minmax(0,1fr) 48px 48px 80px 64px 92px;gap:8px;align-items:center}
.fatt-legenda{padding:8px 16px;background:var(--surface-2);border-bottom:1px solid var(--line);font-size:11.5px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.fatt-legenda .r,.fatt-riga-hd .r{text-align:right}
.fatt-righe .item{border-bottom:1px solid var(--line-2)}
.fatt-righe .item:last-child{border-bottom:0}
body.se-body .fatt-riga-hd{padding:0;background:none;border:0;border-radius:0}
.fatt-riga-hd .button-collapse{width:100%;padding:10px 16px;background:none;border:0;text-align:left;cursor:pointer;color:var(--ink);font-size:13.5px}
.fatt-riga-hd .button-collapse:hover{background:var(--surface-2)}
.fatt-riga-hd .fatt-ico{display:block;min-height:1px}
.fatt-riga-hd .iconA svg{width:15px;height:15px;color:var(--muted)}
.fatt-riga-hd .testoB{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fatt-riga-hd .testoG{font-weight:600}
.fatt-riga-hd .testoH{font-size:12px;color:var(--muted)}
.fatt-riga-hd .testoF{grid-column:3/-1;font-size:12.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fatt-riga-hd .testoF:empty{display:none}
.fatt-riga-hd .button-collapse[aria-expanded="true"] .testoB:empty::before{content:"Riga aperta";font-weight:400;color:var(--muted)}
.fatt-riga-bd{padding:4px 16px 14px;background:var(--surface-2)}
.fatt-riga-rm{align-self:end;display:flex;justify-content:flex-end}
.fatt-riga-rm .se-btn svg{width:14px;height:14px}
.fatt-riga-tec{margin-top:10px}
.fatt-riga-tec summary{cursor:pointer;font-size:12.5px;color:var(--muted);margin-bottom:8px}
/* scadenze: data | importo | togli */
.fatt-scad{margin-top:16px;border-top:1px solid var(--line-2);padding-top:12px}
.fatt-scad-hd{margin-bottom:6px}
.fatt-scad-hd h3.sec{margin:0}
.fatt-scad-leg,.fatt-scad-riga{display:grid;grid-template-columns:minmax(0,200px) minmax(0,160px) 34px;gap:10px;align-items:center}
.fatt-scad-leg{font-size:11.5px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:6px}
.fatt-scad-riga{margin-bottom:8px}
.fatt-scad-riga .iconbtn svg{width:15px;height:15px}
.fatt-check{display:inline-flex;align-items:center;gap:8px;margin:0;font-size:13px;font-weight:500;color:var(--ink-2)}
.fatt-check-f .cbx-container{padding-top:4px}
/* riepilogo: netto a pagare sotto il totale */
.fatt-tot .fatt-netto{color:var(--muted);font-size:12.5px}
.fatt-kv{grid-template-columns:120px minmax(0,1fr);font-size:13px}
@media (max-width:1040px){.fatt-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.fatt-grid>.c5,.fatt-grid>.c6{grid-column:1/-1}.fatt-grid>.c3,.fatt-grid>.c4{grid-column:span 2}}
@media (max-width:640px){
  .fatt-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .fatt-grid>.c2,.fatt-grid>.c3,.fatt-grid>.c4,.fatt-grid>.c5,.fatt-grid>.c6{grid-column:1/-1}
  .fatt-legenda,.fatt-riga-hd .button-collapse{grid-template-columns:18px 64px minmax(0,1fr) 84px}
  .fatt-legenda span:nth-child(4),.fatt-legenda span:nth-child(5),.fatt-legenda span:nth-child(6),.fatt-legenda span:nth-child(7),
  .fatt-riga-hd .testoC,.fatt-riga-hd .testoD,.fatt-riga-hd .testoE,.fatt-riga-hd .testoH{display:none}
  .fatt-scad-leg,.fatt-scad-riga{grid-template-columns:minmax(0,1fr) minmax(0,110px) 34px}
  .se-card .hd .fatt-tg{flex:1 1 100%;justify-content:space-between}
}

/* ---------- fatture elettroniche ricevute (fe-documenti/index.php, import.php) ---------- */
body.se-body .se-tbl tr.fe-row-errore>td{background:var(--bad-soft)}
.se-tbl tr.fe-row-errore>td:not(:first-child){opacity:.85}
.q-warn{color:var(--warn);font-weight:600}
.fe-abb{display:inline-flex;align-items:center;gap:2px;white-space:nowrap}
.fe-abb .iconbtn{width:26px;height:26px}
.fe-abb .iconbtn svg{width:13px;height:13px}
.se-tbl .kv-expand-icon svg,.se-tbl .kv-expand-header-icon svg{width:14px;height:14px}
.link.small svg{width:13px;height:13px;vertical-align:-2px;margin-right:3px}
/* il menu «⋯» delle righe (dropdown kartik): niente freccetta, icone come nel menu nuovo */
.se-tbl td.amm-azioni .dropdown-toggle::after{display:none}
.se-tbl td.amm-azioni .dropdown-item{display:flex;align-items:center;gap:10px;font-size:13.5px}
.se-tbl td.amm-azioni .dropdown-item svg{width:15px;height:15px;color:var(--muted);flex:none}
.fe-piede{border-top:1px solid var(--line-2);padding-top:14px}
.fe-documenti-import .btn svg{width:14px;height:14px;vertical-align:-2px}
/* riga del totale di pagina (kartik, senza table-warning: pageSummaryRowOptions nella vista) */
body.se-body .se-tbl tr.kv-page-summary>td{background:var(--surface-2);border-top:1px solid var(--line);font-weight:650}
/* la cella «apri il dettaglio» spenta ha opacita' .25 (kartik): sbiadiva anche lo sfondo rosso */
body.se-body .se-tbl tr.fe-row-errore>td.kv-state-disabled{opacity:1}
/* kartik colora di azzurro fisso la cella «apri il dettaglio» al passaggio: nel tema scuro abbagliava */
body.se-body .se-tbl .kv-expand-icon-cell:hover{background-color:var(--surface-3)!important;color:var(--ink)}

/* ---------- incassi e pagamenti (contscad-scadenze/index.php) ---------- */
.scad-reg{margin-top:16px}
.scad-reg .scad-blocco{display:block}
/* la differenza fra importo movimentato e rate chiuse: in evidenza, come avviso */
body.se-body .scad-reg input.scad-diff{background:var(--warn-soft);border-color:var(--warn);color:var(--warn)}
.scad-piede{display:flex;justify-content:flex-end;border-top:1px solid var(--line-2);padding-top:14px;margin-top:10px}
.scad-piede .form-group{margin:0}

/* ---------- area: calendario-report ---------- */
/* =====================================================================
   CALENDARIO E REPORT — componenti dell'area (restyling 29-30/09/2026)
   Caricato dopo se-ui.css (assets/SeUiAsset.php). Solo token, tema scuro compreso.
   ===================================================================== */

/* ---------- calendario generale (views/calendario/_generale.php) ---------- */

/* barra dei comandi: frecce, «Oggi», il periodo; a destra Mese · Settimana · Giorno · Agenda */
.cal-barra{margin-bottom:10px}
.cal-nav{gap:4px;flex-wrap:nowrap;min-width:0}
body.se-body h2.cal-titolo{font-family:var(--f-display);font-size:18px;font-weight:650;margin:0 0 0 8px;letter-spacing:-.01em;text-transform:capitalize;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cal-viste{max-width:100%;overflow-x:auto;scrollbar-width:none}
.cal-viste::-webkit-scrollbar{display:none}
.cal-viste button{white-space:nowrap}

/* viste pronte (Il mio lavoro, Personale, Eventi o Progetti, Tutto) come linguette; sul
   telefono accanto il bottone «Livelli» che apre il pannello sopra il calendario */
.cal-testa{display:flex;align-items:flex-end;gap:10px}
.cal-testa .views{flex:1;min-width:0}
.cal-apri-livelli{display:none;margin-bottom:14px;flex:none}
.cal-apri-livelli .n{font-size:11.5px;color:var(--muted);font-variant-numeric:tabular-nums}

/* il pannello dei livelli, a sinistra del calendario (come nei calendari del telefono):
   «di chi», poi i gruppi — ciascuno si apre e si chiude (.chiuso), ha il suo interruttore
   «tutti» (.toggle: .on tutto acceso, .meta in parte) e le spunte dei livelli col colore
   del livello in --c (dal DB). La spunta vera (input) resta per tastiera e lettori di schermo. */
.cal-corpo{display:grid;grid-template-columns:250px minmax(0,1fr);gap:16px;align-items:start}
.cal-main{min-width:0}
.cal-livelli{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);position:sticky;top:70px;max-height:calc(100vh - 90px);overflow:auto}
.cal-sez{padding:12px 14px;border-bottom:1px solid var(--line-2);display:flex;flex-direction:column;gap:8px}
body.se-body .cal-sez h3.sec{margin:0}
.cal-chi{display:flex;width:100%}
.cal-chi button{flex:1;justify-content:center}
.cal-chi-nota{margin:0}
.cal-gruppo{border-bottom:1px solid var(--line-2)}
.cal-gruppo-hd{display:flex;align-items:center;gap:8px;padding:6px 12px 6px 8px}
.cal-gruppo-apri{flex:1;min-width:0;display:flex;align-items:center;gap:6px;border:0;background:none;padding:6px 2px;font-weight:650;font-size:13.5px;color:var(--ink);cursor:pointer;text-align:left}
.cal-gruppo-apri svg{width:15px;height:15px;color:var(--muted);flex:none;transition:transform .15s}
.cal-gruppo.chiuso .cal-gruppo-apri svg{transform:rotate(-90deg)}
.cal-gruppo-apri .n{margin-left:auto;font-size:11.5px;font-weight:500;color:var(--muted);font-variant-numeric:tabular-nums}
.cal-gruppo-apri:focus-visible,.cal-gruppo-tutti:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.toggle.meta{background:color-mix(in srgb,var(--ok) 45%,var(--line))}
.toggle.meta::after{left:10px}
.cal-gruppo-bd{display:flex;flex-direction:column;padding:0 10px 8px 12px}
.cal-gruppo.chiuso .cal-gruppo-bd{display:none}
body.se-body label.cal-liv{position:relative;display:flex;align-items:center;gap:9px;margin:0;padding:5px 6px;border-radius:6px;font-size:13px;font-weight:400;color:var(--ink-2);cursor:pointer}
body.se-body label.cal-liv:hover{background:var(--surface-2)}
.cal-liv input{position:absolute;opacity:0;width:1px;height:1px;margin:0;pointer-events:none}
.cal-liv .cal-pt{width:16px;height:16px;border-radius:4px;flex:none;display:grid;place-items:center;box-shadow:inset 0 0 0 2px var(--c,var(--muted))}
.cal-liv input:checked+.cal-pt{background:var(--c,var(--muted));box-shadow:none}
.cal-liv input:checked+.cal-pt::after{content:"";width:8px;height:4px;border:2px solid #fff;border-top:0;border-right:0;transform:translateY(-1px) rotate(-45deg)}
.cal-liv input:not(:checked)~span{color:var(--muted)}
.cal-liv input:focus-visible+.cal-pt{outline:2px solid var(--focus);outline-offset:2px}
.cal-altri{margin:12px 14px}
.cal-altri .cal-filtro,.cal-sez .cal-filtro{width:100%}
.cal-altri .cal-filtro{margin-top:8px}

/* scadenze gia' gestite (documento rinnovato, rata pagata…): spente e barrate */
.se-cal .fc-event.se-ev.se-ev-fatta{opacity:.55}
.se-cal .fc-event.se-ev.se-ev-fatta .fc-title,.se-cal .fc-list-item.se-ev-fatta .fc-list-item-title a,.cal-fatta{text-decoration:line-through;text-decoration-color:var(--muted)}

@media (max-width:900px){
  .cal-corpo{grid-template-columns:minmax(0,1fr)}
  .cal-testa{flex-direction:column;align-items:stretch;gap:0}
  .cal-apri-livelli{display:inline-flex;align-self:flex-start;margin:0 0 12px}
  .cal-pronte button{padding:9px 9px}
  .cal-livelli{display:none;position:static;max-height:none;margin-bottom:12px}
  .cal-livelli.aperto{display:block}
}

/* filtri per persona, servizio, stato (Select2 multipli, stessi id di prima) */
.cal-filtro{width:200px;min-width:0}
.cal-filtro.stretto{width:160px}
.cal-filtro .select2-container{width:100%!important}
body.se-body .cal-filtro .select2-container--krajee-bs4 .select2-selection--multiple{min-height:32px}
/* Select2 multiplo in una riga di filtri: il campo di ricerca interno usciva dal bordo (visibile nel tema scuro) */
body.se-body .cal-filtro .select2-container--krajee-bs4 .select2-selection--multiple,body.se-body .vm-persone .select2-container--krajee-bs4 .select2-selection--multiple,body.se-body .rep-filtri .select2-container--krajee-bs4 .select2-selection--multiple{overflow:hidden}
body.se-body .cal-filtro .select2-container--krajee-bs4 .select2-selection--multiple .select2-search__field,body.se-body .vm-persone .select2-container--krajee-bs4 .select2-selection--multiple .select2-search__field,body.se-body .rep-filtri .select2-container--krajee-bs4 .select2-selection--multiple .select2-search__field{margin-top:5px;font-size:13px;background:transparent;max-width:100%}

/* ore per persona (chiuse sotto i numeri) */
details.adv.cal-ore{margin-bottom:14px}
details.adv.cal-ore summary .small{font-weight:400}

/* stato di presenze e giustificativi: pallino nel calendario e nella legenda */
.cal-st{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:4px;vertical-align:1px;flex:none;background:var(--muted)}
.cal-st.warn{background:var(--warn)} .cal-st.info{background:var(--info)} .cal-st.ok{background:var(--ok)} .cal-st.muted{background:var(--line)}
.legend.cal-legenda{margin-top:10px}
.cal-nota{margin:6px 0 0}
.legend.cal-legenda i.cal-st{width:8px;height:8px;border-radius:50%;margin:0}

/* FullCalendar 3 (tema «standard») dentro una card, con i token */
.se-cal{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.se-cal .fc{font-size:13px;color:var(--ink)}
.se-cal .fc-toolbar.fc-header-toolbar{display:none}
.se-cal .fc-unthemed th,.se-cal .fc-unthemed td,.se-cal .fc-unthemed thead,.se-cal .fc-unthemed tbody,.se-cal .fc-unthemed .fc-divider,.se-cal .fc-unthemed .fc-row,.se-cal .fc-unthemed .fc-content,.se-cal .fc-unthemed .fc-popover,.se-cal .fc-unthemed .fc-list-view,.se-cal .fc-unthemed .fc-list-heading td{border-color:var(--line-2)}
.se-cal .fc-view>table{border:0}
.se-cal .fc-view-container{margin:-1px}
.se-cal th.fc-day-header,.se-cal .fc-axis.fc-widget-header{background:var(--surface-2);font-size:11.5px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);padding:8px 8px;text-align:left}
.se-cal .fc-agenda-view th.fc-day-header{text-align:center}
.se-cal .fc-day-top .fc-day-number,.se-cal .fc-ltr .fc-basic-view .fc-day-top .fc-day-number{float:left;margin:4px 0 0 6px;padding:1px 6px;border-radius:999px;font-size:12px;color:var(--ink-2);font-variant-numeric:tabular-nums}
.se-cal .fc-day-top.fc-other-month .fc-day-number{color:var(--muted);opacity:.6}
.se-cal .fc-day-top.fc-today .fc-day-number,.se-cal .fc-ltr .fc-basic-view .fc-day-top.fc-today .fc-day-number{background:var(--ink);color:var(--surface);font-weight:600}
body.se-body .se-cal .fc-unthemed td.fc-today{background:color-mix(in srgb,var(--brand) 6%,var(--surface))}
body.se-body .se-cal .fc-unthemed .fc-content-skeleton td.fc-today,body.se-body .se-cal .fc-unthemed .fc-bgevent-skeleton td.fc-today{background:transparent}
/* Calendari delle schede (orario del contratto e simili): calendari.css li fa bianchi; fondo e testo del tema, come in 3nt1 (08/10) */
body.se-body #calendario,body.se-body #calendario-dati-contrattuali,body.se-body #calendario-servizi-contrattualizzati{background:var(--surface);color:var(--ink)}
body.se-body #calendario .fc-axis,body.se-body #calendario-dati-contrattuali .fc-axis,body.se-body #calendario-servizi-contrattualizzati .fc-axis{color:var(--muted)}
body.se-body #calendario .fc-unthemed .fc-disabled-day,body.se-body #calendario-dati-contrattuali .fc-unthemed .fc-disabled-day,body.se-body #calendario-servizi-contrattualizzati .fc-unthemed .fc-disabled-day{background:var(--surface-2);opacity:1}
/* Scheda del personale › Contratti e orari (08/10): la lista dei servizi da trascinare senza l'altezza fissa e lo
   scorrimento di calendari.css (tagliavano la voce trascinata), e la x per eliminare una fascia dell'orario */
body.se-body .calendario-dip-contratto-index #external-events{height:auto;overflow:visible;left:0;padding:14px 16px}
body.se-body .calendario-dip-contratto-index #external-events .fc-event{padding:4px 8px;border-radius:6px;margin:0}
body.se-body #calendar_contratto .removeEvent{float:left;margin-right:4px;font-weight:700;cursor:pointer}
/* testo delle fasce leggibile anche in poco spazio (Alessio, 08/10): la descrizione aveva 9px scritti nel JS */
body.se-body #calendar_contratto .fc-event{font-size:12px;line-height:1.3}
body.se-body #calendar_contratto .fc-event .fc-time,body.se-body #calendar_contratto .fc-event .fc-title{font-weight:600}
body.se-body #calendar_contratto .fc-event .fc-title span{font-size:11px!important;font-weight:400}
body.se-body #calendar_contratto .fc-toolbar.fc-header-toolbar{display:none}
body.se-body #calendar_contratto a.fc-event,body.se-body #calendar_contratto a.fc-event:hover{color:#fff}
.se-cal .fc-unthemed .fc-disabled-day{background:var(--surface-2);opacity:1}
.se-cal .fc-basic-view .fc-body .fc-row{min-height:92px}
.se-cal .fc-highlight{background:var(--brand-soft);opacity:1}
.se-cal .fc-nonbusiness{background:var(--surface-2)}

/* un elemento: fondo tenue del suo colore, filetto a sinistra, testo inchiostro */
.se-cal .fc-event.se-ev{--c:var(--s1);background:color-mix(in srgb,var(--c) 16%,var(--surface));border:0;border-left:3px solid var(--c);border-radius:4px;color:var(--ink);font-size:12px;line-height:1.35;padding:1px 5px;margin:1px 4px 2px;cursor:pointer}
.se-cal a.fc-event.se-ev:hover,.se-cal .fc-event.se-ev:hover{color:var(--ink);text-decoration:none;background:color-mix(in srgb,var(--c) 26%,var(--surface))}
.se-cal .fc-event.se-ev .fc-content{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.se-cal .fc-event.se-ev .fc-time{font-weight:600;font-variant-numeric:tabular-nums;margin-right:3px}
.se-cal .fc-time-grid-event.se-ev{margin:0 1px;border-radius:4px}
.se-cal .fc-time-grid-event.se-ev .fc-content{white-space:normal}
.se-cal .fc-more{color:var(--info);font-size:12px;font-weight:600;margin:1px 6px;text-decoration:none}
.se-cal .fc-popover{background:var(--surface);border-radius:var(--r);box-shadow:var(--shadow);overflow:hidden}
.se-cal .fc-popover .fc-header{background:var(--surface-2);padding:6px 10px;font-weight:600}
.se-cal .fc-popover .fc-header .fc-close{color:var(--muted)}

/* settimana e giorno: le ore */
.se-cal .fc-time-grid .fc-slats td{height:2.1em}
.se-cal .fc-axis{color:var(--muted);font-size:11.5px;font-variant-numeric:tabular-nums}
.se-cal .fc-time-grid .fc-now-indicator-line{border-color:var(--bad)}
.se-cal .fc-time-grid .fc-now-indicator-arrow{border-color:var(--bad);border-top-color:transparent;border-bottom-color:transparent}
.se-cal .fc-divider.fc-widget-header{background:var(--surface-2);border-color:var(--line-2)}

/* agenda (elenco) */
.se-cal .fc-list-view{border:0}
.se-cal .fc-list-heading td.fc-widget-header{background:var(--surface-2);font-weight:600;color:var(--ink);padding:8px 12px}
.se-cal .fc-list-heading .fc-list-heading-alt{color:var(--muted);font-weight:500}
.se-cal .fc-list-item td{padding:8px 12px;border-color:var(--line-2)}
.se-cal .fc-list-item.se-ev{background:transparent;border:0;margin:0}
.se-cal .fc-list-item.se-ev:hover td{background:var(--surface-2)}
.se-cal .fc-list-item.se-ev .fc-event-dot{background:var(--c);border-radius:3px}
.se-cal .fc-list-item-time{color:var(--ink-2);font-variant-numeric:tabular-nums;white-space:nowrap}
.se-cal .fc-list-item-title a{color:var(--ink);text-decoration:none;font-weight:500}
.se-cal .fc-list-empty{background:transparent;color:var(--muted)}

/* «carico il calendario…» mentre arrivano presenze e giustificativi */
.se-cal .fc-loading{position:absolute;z-index:5;top:8px;right:10px;background:var(--ink);color:var(--surface);font-size:12px;padding:3px 10px;border-radius:999px}

@media (max-width:760px){
  .cal-barra .sp{display:none}
  .cal-barra .cal-viste{width:100%}
  .cal-filtri .sp{display:none}
  .cal-filtro,.cal-filtro.stretto{width:100%}
  .se-cal .fc-basic-view .fc-body .fc-row{min-height:64px}
  .se-cal th.fc-day-header{padding:6px 2px;text-align:center;letter-spacing:.02em;font-size:10.5px}
  .se-cal .fc-day-top .fc-day-number,.se-cal .fc-ltr .fc-basic-view .fc-day-top .fc-day-number{margin:3px 0 0 2px;padding:1px 4px;font-size:11px}
  .cal-viste button{padding:0 9px}
  .se-cal .fc-event.se-ev{font-size:11px;margin:1px 1px 2px;padding:0 3px}
  .se-cal .fc-event.se-ev .fc-time{display:none}
}

/* ---------- verifica del mese (views/calendario/verifica_mensile.php) ---------- */
/* una colonna per giorno: la tabella scorre dentro il suo riquadro, i giorni non si nascondono */
.vm-filtri .vm-persone{width:260px;max-width:100%}
.vm-filtri .vm-persone .select2-container{width:100%!important}
body.se-body .vm-grid .se-tbl th,body.se-body .vm-grid .se-tbl td{padding:6px 7px}
body.se-body .vm-grid .se-tbl th.vm-g,body.se-body .vm-grid .se-tbl td.vm-g{text-align:center;min-width:36px;font-size:12px;letter-spacing:0}
body.se-body .vm-grid .se-tbl th.vm-festivo{color:var(--bad)}
body.se-body .vm-grid .se-tbl td.vm-festivo{box-shadow:inset 0 0 0 999px color-mix(in srgb,var(--bad) 6%,transparent)}
body.se-body .vm-grid .se-tbl tr.vm-cnt td{background:var(--surface-2)}
body.se-body .vm-grid .se-tbl tr.vm-giu td{background:var(--warn-soft)}
body.se-body .vm-grid .se-tbl tr.vm-dif.vm-pari td{background:var(--ok-soft)}
body.se-body .vm-grid .se-tbl tr.vm-dif.vm-piu td{background:var(--info-soft)}
body.se-body .vm-grid .se-tbl tr.vm-dif.vm-neg td{background:var(--bad-soft)}
body.se-body .vm-grid .se-tbl td.vm-persona{background:var(--surface)!important;vertical-align:top;box-shadow:none}
.vm-grid .diff_ok{color:var(--ok)}
.vm-grid .diff_pos{color:var(--info);font-weight:600}
.vm-grid .diff_neg,.vm-grid .diff_err{color:var(--bad);font-weight:600}
.vm-legenda{margin:0}
.vm-legenda .vm-l{border:1px solid var(--line)}
.vm-legenda .vm-l.cnt{background:var(--surface-2)} .vm-legenda .vm-l.giu{background:var(--warn-soft)}
.vm-legenda .vm-l.pari{background:var(--ok-soft)} .vm-legenda .vm-l.piu{background:var(--info-soft)} .vm-legenda .vm-l.neg{background:var(--bad-soft)}
.vm-legenda .vm-l.fest{background:color-mix(in srgb,var(--bad) 12%,var(--surface))}
@media (max-width:760px){.vm-filtri .vm-persone{width:100%}.vm-filtri .se-select{flex:1}}

/* ---------- report (Report › …: andamento eventi, centri di costo, contratti, servizi, budget ore) ---------- */
/* un blocco del report (grafico, riepilogo) con lo spazio sotto */
.rep-blocco{margin-bottom:14px}
details.adv.rep-blocco summary .small{font-weight:400}
details.adv.rep-blocco .bd.cols{padding-top:4px}
/* tabelle di riepilogo: totale in grassetto, risultato con segno colorato */
.tbl.rep-tbl{min-width:0}
.tbl.rep-tbl tr.rep-tot td{font-weight:650;background:var(--surface-2);border-top:1px solid var(--line)}
.rep-neg{color:var(--bad);font-weight:600}
.rep-pos{color:var(--ok);font-weight:600}
/* riga espandibile di kartik: l'icona del nuovo set */
body.se-body .kv-expand-icon svg,body.se-body .kv-expand-header-icon svg{width:16px;height:16px;color:var(--ink-2);vertical-align:middle}
body.se-body .kv-expand-icon{cursor:pointer}
.rep-nota{margin:10px 0 0}
body.se-body th.kv-expand-header-cell{background:var(--surface-2)!important}
body.se-body td.kv-expand-icon-cell{background:transparent!important}
/* centri di costo e ricavo (cont-centricosto/index_mon.php, _riepilogo_schermo.php, _columns_mon.php) */
.cc-costi{color:var(--bad)}
.cc-prog{color:var(--info)}
.cc-entrate{color:var(--ok)}
td.cc-barra{min-width:120px;width:16%}
.tbl.cc-riep tr.cc-sez td{background:var(--surface-3);font-weight:650}
.tbl.cc-riep td.cc-rientro{padding-left:22px}
/* riga dei totali di pagina di kartik (showPageSummary): tono neutro invece del giallo di table-warning */
body.se-body .se-tbl tr.kv-page-summary.rep-somma td{background:var(--surface-2);border-top:1px solid var(--line);font-weight:650}
body.se-body .se-tbl tr.kv-page-summary.rep-somma{border-top:0}
/* due stampe affiancate nella barra della griglia */
.rep-stampe{display:inline-flex;gap:8px;flex-wrap:wrap}
/* filtri di un report in una riga (Budget ore): Select2 a larghezza fissa */
.rep-filtri .rep-filtro{width:200px;max-width:100%}
.rep-filtri .rep-filtro .select2-container{width:100%!important}
@media (max-width:760px){.rep-filtri .rep-filtro{width:100%}.rep-filtri .se-select{flex:1}.rep-filtri .sp{display:none}}
/* budget ore (progetti-budget-ore/_dashboard_per_voce.php, _dashboard_per_dipendente.php) */
.bo-voce{display:flex;flex-direction:column;gap:14px}
.bo-dip-hd{margin-bottom:6px}
.bo-dip-hd .se-av{width:26px;height:26px;font-size:11px}
.se-card .hd .se-av{width:28px;height:28px;font-size:11px}
.tbl.bo-mesi th,.tbl.bo-mesi td{padding:7px 8px}
.tbl.bo-mesi td .sub{font-size:11px}
.tbl.bo-mesi td[data-tip]{cursor:help}
.tbl.bo-mesi td.bo-sforato{background:var(--bad-soft)}
.tbl.bo-mesi td.bo-sforato b{color:var(--bad)}

/* ---------- area: commesse ---------- */
/*
 * css/parti/commesse.css — componenti dell'area Commesse (commesse, contratti, servizi,
 * requisiti, mezzi e attrezzature) durante la conversione (30/09/2026).
 * Solo token (var(--...)), tema scuro compreso. Da riunire in se-ui.css parte 2.
 */

/* ---------- colore dell'ente senza style="" nella vista ----------
   Il quadratino .ent i prende il colore stabile dell'ente (Navigazione::coloreEnte) da una
   classe: ent-k<id % 6>. Stessa tavolozza e stesso ordine di coloreEnte(). DA RENDERE COMUNE. */
.ent i.ent-k0{background:var(--e1)} .ent i.ent-k1{background:var(--e2)} .ent i.ent-k2{background:var(--e3)}
.ent i.ent-k3{background:var(--info)} .ent i.ent-k4{background:var(--ok)} .ent i.ent-k5{background:var(--warn)}

/* ---------- elenchi: la colonna del titolo non si stringe fino a spezzare il sottotitolo ----------
   headerOptions ['class' => 'col-titolo'] sulla colonna che fa da titolo (nome + .sub sotto). */
.se-tbl th.col-titolo{min-width:180px}

/* ---------- scheda commessa (commesse-lavoro/scheda.php, scheda_dati.php) ---------- */
/* riga dei tag sopra il nome del record */
.rec-head .rec-tags{gap:6px;margin-bottom:6px}
/* dettagli nella colonna laterale: etichette strette, come nel mockup */
.kv.kv-stretta{grid-template-columns:110px minmax(0,1fr);font-size:13px}
.kv .sub{display:block;font-size:12px;color:var(--muted)}
.se-card .bd>p.nota-card{margin:0}
/* orario standard: il calendario e, di fianco, i servizi da trascinarci sopra */
.orario-servizi{display:grid;grid-template-columns:minmax(0,1fr) 220px;gap:16px;align-items:start}
.orario-servizi-elenco .fc-event{margin:0 0 6px;padding:6px 8px;border-radius:6px;font-size:12.5px;cursor:grab;color:#fff}
@media (max-width:1040px){.orario-servizi{grid-template-columns:minmax(0,1fr)}}
/* il colore di un servizio (dato del servizio, lo stesso del calendario) accanto al nome */
.swatch{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:7px;vertical-align:1px;box-shadow:0 0 0 1px var(--line)}
/* tabella semplice dentro una card stretta: niente larghezza minima (la .tbl ne ha 640) */
.tbl.compatta{min-width:0}
/* eventi della commessa: i dati sotto il valore (relatori, accreditato, scadenza) restano su una riga */
.tbl.eventi-commessa td.r .sub,.tbl.eventi-commessa td .pill+.sub{white-space:nowrap}
/* il calendario dell'orario scrive un suo titolo nella barra di fullcalendar: il titolo e' gia' nella card */
.orario-servizi .fc-toolbar{display:none}

/* ---------- Contratti (anagr-contratti/index.php) ---------- */
.contratti-nota{margin-bottom:14px}
/* un pulsante in fondo a una .note (es. «Scrivi un modello»): centrato, non si stringe. DA RENDERE COMUNE */
.note>.se-btn{align-self:center;flex:none}
/* il pannello «Genera i documenti» sotto la barra della selezione */
.genera-contratti{margin-bottom:12px}
.genera-contratti .genera-l{font-weight:600;font-size:13px;margin:0}
.genera-contratti .se-select{width:auto;min-width:220px;max-width:100%}
.genera-contratti .genera-nota{margin:8px 0 0}
/* riga spuntata nelle griglie kartik nuove (rowSelectedClass 'sel'), come .tbl tr.sel. DA RENDERE COMUNE */
.se-tbl tr.sel>td{background:var(--brand-soft)}
/* scheda contratto (anagr-contratti/view.php): il riquadro «Genera il documento» */
.genera-form{gap:10px}
.genera-form .se-btn{align-self:flex-start}
.se-card .bd .genera-dopo{margin:10px 0 0;display:inline-flex}
p.genera-dopo{display:block}
/* form del contratto (anagr-contratti/_form.php) */
.campi-nota{border-top:1px solid var(--line-2)}
.form-azioni{justify-content:flex-end}
.controparte{margin-top:12px}
/* scelta a due voci fatta di radio (Un soggetto / Un ente), stesso aspetto di .seg. DA RENDERE COMUNE */
.seg.seg-radio{align-self:flex-start}
.seg.seg-radio input{position:absolute;opacity:0;pointer-events:none;width:1px;height:1px}
.seg.seg-radio label{display:flex;align-items:center;height:32px;padding:0 12px;margin:0;font-size:13px;font-weight:500;color:var(--muted);cursor:pointer}
.seg.seg-radio label+input+label{border-left:1px solid var(--line)}
.seg.seg-radio input:checked+label{background:var(--surface-3);color:var(--ink);font-weight:600}
.seg.seg-radio input:focus-visible+label{outline:2px solid var(--focus);outline-offset:-2px}
/* il suggerimento sotto un campo di yii\widgets\ActiveForm (->hint()): piccolo e grigio come .field .hint.
   Il ponte veste .form-text di Bootstrap ma non .hint-block di Yii. DA RENDERE COMUNE */
body.se-body .hint-block{font-size:12px;line-height:1.4;color:var(--muted);margin-top:5px}

/* ---------- Requisiti (anagr-skill-requisiti/_columns_requisiti.php) ---------- */
/* una fila di pill che va a capo da sola */
.pill-riga{display:flex;flex-wrap:wrap;gap:5px}

/* ---------- form in modale (commesse, servizi, mezzi) ---------- */
/* il campo Ente, solo per chi vede tutti gli enti: in cima ed evidenziato (pattern C) */
.campo-ente{background:var(--brand-soft);border:1px solid var(--brand-line);border-radius:10px;padding:10px 12px 2px;margin-bottom:14px}
.form-modale .grid2,.form-modale .grid3{gap:0 14px}
.form-modale .ultima-modifica{margin:10px 0 0;border-top:1px solid var(--line-2);padding-top:8px}
/* form in modale aperto a pagina piena (commesse-lavoro/create, update) */
.form-pagina{max-width:860px}
.form-modale h3.sec{margin:8px 0 8px;padding-top:10px;border-top:1px solid var(--line-2)}
/* scheda servizio › Requisiti: la scelta delle competenze per categoria */
.requisiti-scelta .requisiti-azioni{justify-content:flex-end;margin-top:12px}
.requisiti-scelta .field label .pill{font-size:11.5px}

/* ---------- area: contabilita ---------- */
/*
 * css/parti/contabilita.css — Amministrazione: contabilita', fisco, note spese, budget, chiusure
 * (restyling 30/09). Caricato dopo se-ui.css (assets/SeUiAsset.php). Solo token, tema scuro
 * compreso: nessun colore scritto a mano. Da riunire nella parte 2 di se-ui.css.
 */

/* ---------- form a pagina piena con widget kartik (cont-pn, scontrini, liquidazione IVA) ----------
   Dentro le griglie .grid2/.grid3 lo spazio lo danno le griglie: il margine del form-group raddoppierebbe. */
.form-se form{display:flex;flex-direction:column;gap:14px}
body.se-body .form-se .form-group{margin-bottom:0}
.form-se .help-block:empty,.form-se .invalid-feedback:empty{display:none}
.form-se .req{color:var(--bad)}
.form-se .input-group>.input-group-append>.btn svg,.form-se .input-group>.input-group-prepend>.btn svg{width:15px;height:15px}
.form-piede{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end;border-top:1px solid var(--line-2);padding-top:14px}
.form-piede .sp{flex:1}

/* ---------- nuova registrazione, primo passo (cont-pn/_form_base.php) ---------- */
.pn-base{grid-template-columns:minmax(0,1fr) 300px}
.pn-causale{display:grid;grid-template-columns:170px minmax(0,1fr);gap:14px}
.pn-esercizio{display:grid;grid-template-columns:minmax(0,1fr) 90px;gap:10px}
.pn-base .steps b{font-weight:600}
.se-btn svg:last-child:not(:first-child){margin-left:2px}

/* ---------- ultime registrazioni (cont-pn/_ultime_registrazioni.php) ---------- */
.pn-ultime{margin-top:18px}
.pn-ultime .tbl-wrap{border:0;border-radius:0 0 var(--r) var(--r)}
.pn-ultime .tbl{min-width:900px}
.pn-ultime .tbl td{vertical-align:top}
.pn-ultime td.nowrap{white-space:nowrap}
.pn-ultime td:nth-child(2){min-width:130px}
.pn-ultime td.strong{font-weight:600}
.pn-lati{font-size:12.5px;min-width:220px}
.pn-lato{display:flex;justify-content:space-between;gap:12px;line-height:1.5}
.pn-lato .c{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--ink-2)}
.pn-lato .mono{font-size:11.5px;color:var(--muted)}
.pn-lato .num{white-space:nowrap}
.pn-lato.altre{font-style:italic;color:var(--muted)}
.pn-ritocco svg{width:12px;height:12px;color:var(--muted);vertical-align:-1px}
.pn-noprot{font-style:italic}
.pn-sogg{color:var(--ink-2)!important;font-weight:600}

/* ---------- prima nota: righe in dare e avere e quadratura (cont-pn/_form_primanota.php) ----------
   Una riga = importo | dare | avere | togli, e sotto la descrizione del conto. Ogni lato:
   C/F, conto (con la ricerca), estensione; sotto l'etichetta scritta dal javascript. */
.pn-mov{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:14px}
.pn-righe .container-items{display:flex;flex-direction:column}
.pn-riga{display:grid;grid-template-columns:130px minmax(0,1fr) minmax(0,1fr) 34px;gap:6px 12px;align-items:start;padding:10px 16px;border-bottom:1px solid var(--line-2)}
.pn-righe .container-items .pn-riga:last-child{border-bottom:0}
.pn-riga-hd{padding-top:9px;padding-bottom:9px;background:var(--surface-2);font-size:11.5px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.pn-riga-hd small{font-size:10.5px;text-transform:none;letter-spacing:0;font-weight:500;margin-left:4px}
.pn-conto{display:grid;grid-template-columns:58px minmax(0,1fr) 64px;gap:6px}
.pn-conto select{padding:0 4px}
.pn-cerca{min-width:0}
.pn-sogg-campo{display:none}
.pn-etich{font-size:12px;color:var(--ink-2);font-weight:600;min-height:0}
.pn-etich:empty{display:none}
.pn-tolgo{padding-top:3px}
.pn-tolgo .se-btn svg{width:15px;height:15px}
.pn-descr{grid-column:2/4}
body.se-body .pn-descr .form-control,body.se-body .pn-descr .form-control[readonly]{height:auto;border:0;background:transparent;padding:0;font-size:12.5px;color:var(--muted)}
body.se-body .pn-descr .form-control:focus{outline:0}
/* barra della quadratura: fissa in fondo allo schermo, le quattro cifre e l'esito in chiaro */
.pn-quadra{position:sticky;bottom:12px;z-index:5;display:flex;align-items:center;gap:18px;flex-wrap:wrap;padding:12px 16px;box-shadow:var(--shadow)}
.pn-cifre{display:flex;gap:22px;flex-wrap:wrap}
.pn-cifre div{display:flex;flex-direction:column;gap:1px;min-width:96px}
.pn-cifre span{font-size:12px;color:var(--muted)}
.pn-cifre b{font-size:16px;font-weight:650}
.pn-cifre .g b{font-family:var(--f-display);font-size:20px}
.pn-esito{flex:1;min-width:220px;padding:9px 12px;border-radius:9px;background:var(--surface-2);font-size:13px;font-weight:600;color:var(--ink-2)}
.pn-quadra.ok{border-color:var(--ok)}
.pn-quadra.ok .pn-esito{background:var(--ok-soft);color:var(--ok)}
.pn-quadra.ok .g b{color:var(--ok)}
.pn-quadra.warn{border-color:var(--warn)}
.pn-quadra.warn .pn-esito{background:var(--warn-soft);color:var(--warn)}
.pn-quadra.warn .g b{color:var(--warn)}
@media (max-width:900px){.pn-mov{grid-template-columns:minmax(0,1fr)}}
@media (max-width:760px){
  .pn-riga-hd{display:none}
  .pn-riga{grid-template-columns:minmax(0,1fr) 34px;padding:12px 16px}
  .pn-riga>[data-l]{grid-column:1/2}
  .pn-riga>[data-l]::before{content:attr(data-l);display:block;font-size:11.5px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:4px}
  .pn-tolgo{grid-column:2;grid-row:1}
  .pn-descr{grid-column:1/-1}
  .pn-quadra{bottom:8px;gap:10px;padding:10px 12px}
  .pn-cifre{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 12px;width:100%}
  .pn-cifre div{min-width:0}
  .pn-esito{min-width:0;width:100%}
}

/* ---------- riga dei filtri sopra un elenco (cont-memcn/_search.php, mastrino, ritenute) ----------
   Campi kartik (Select2, DateControl) affiancati, che vanno a capo; il pulsante in fondo alla riga. */
.filtri{padding:12px 14px;margin-bottom:14px}
.filtri-riga{display:flex;flex-wrap:wrap;gap:10px 12px;align-items:flex-end}
.filtri-riga>.form-group,.filtri-riga>.field{flex:1 1 150px;min-width:140px;max-width:220px}
body.se-body .filtri-riga .form-group{margin-bottom:0}
.filtri-riga .f-eser{max-width:170px}
.filtri-riga .f-largo{flex:2 1 240px;max-width:360px}
.filtri-riga .f-azione{display:flex;gap:8px;align-items:flex-end;margin-left:auto}
.filtri-riga .invalid-feedback:empty,.filtri-riga .help-block:empty{display:none}
.filtri .filtri-riga+.filtri-riga{margin-top:10px}
.filtri-riga .f-est{flex:0 0 80px;min-width:70px}
.filtri-riga .f-clfo{flex:1 1 180px;min-width:160px;max-width:240px}
body.se-body .form-control.se-ro,body.se-body .form-control.se-ro[readonly]{background:var(--surface-2);color:var(--ink-2)}

/* ---------- mastrino (cont-memcn/schedacontabile.php) ---------- */
.mastrino-kpi .kpi.forte{border-color:var(--ink-2)}
.mastrino-kpi .kpi .d{font-weight:500}
.gap-b{margin-bottom:14px}
h2.sec{white-space:nowrap}
@media (max-width:640px){.filtri-riga>.form-group,.filtri-riga>.field,.filtri-riga .f-clfo,.filtri-riga .f-est{max-width:none;flex-basis:100%}.filtri-riga .f-azione{margin-left:0}}

/* ---------- ritenute, F24 e CU (cont-ritenute/*) ---------- */
.kpis.kpi3{grid-template-columns:repeat(3,minmax(0,1fr))}
/* linguette .views che restano tab di Bootstrap (data-toggle="tab", classe .active) */
.views.nav{flex-wrap:nowrap;padding:0}
.views a.active{color:var(--ink);border-bottom-color:var(--ink);font-weight:600}
.tab-testa{margin-bottom:6px}
.tab-testa+.small.muted{margin:0 0 10px}
.rit-matita svg{width:12px;height:12px;color:var(--muted);vertical-align:-1px}
.rit-matita:hover svg{color:var(--ink)}
.cu-tbl{min-width:860px}
.cu-tbl tfoot td,.cu-tot td{font-weight:650;background:var(--surface-2)}
.cu-detail-row>td{background:var(--surface-2);padding:8px 12px}
.cu-det{min-width:0;font-size:12.5px;background:var(--surface);border:1px solid var(--line-2)}
@media (max-width:640px){body.se-body .kpis.kpi3{grid-template-columns:minmax(0,1fr)}}
.se-card .hd .anni{display:inline-flex;gap:2px;white-space:nowrap}

/* ---------- note spese (modules/scontrini) ---------- */
.ns-check{display:flex;align-items:center;gap:8px;font-weight:600;cursor:pointer}
.ns-file input[type=file]{height:auto;padding:7px 10px}
a.ns-elimina svg,.se-btn.ghost.sm svg{width:15px;height:15px}
a.ns-elimina{color:var(--bad)}
.rm-testa{margin:4px 0 10px}
.rm-gruppo{margin-bottom:14px}
.rm-gruppo .tbl-wrap{border:0;border-radius:0 0 var(--r) var(--r)}
.rm-totale{align-items:center}
.rm-tot td,.tbl tfoot .rm-tot td{font-weight:650;background:var(--surface-2)}

/* ---------- bilanci e chiusure (bilanci/index.php): il percorso di fine esercizio ---------- */
.chiusure-flow{margin:-4px 0 16px}
.chiusure-flow .ar svg{width:14px;height:14px}
.chiusure-flow .fx.on{border-color:var(--ink);box-shadow:inset 0 -2px 0 var(--brand)}
.chiusure-flow .fx:hover{border-color:var(--ink-2)}
@media (max-width:640px){.chiusure-flow{flex-wrap:nowrap;overflow-x:auto;padding-bottom:4px}.chiusure-flow .fx{min-width:150px;flex:none}}

/* ---------- stato patrimoniale e conto economico (bilancio-uffic/*): righe per livello ---------- */
.bil-tbl{min-width:0}
.bil-tbl td{padding-top:7px;padding-bottom:7px}
.bil-tbl td.voce{padding-left:30px}
.bil-tbl tr.lv2 td.voce{padding-left:44px}
.bil-tbl tr.lv3 td.voce{padding-left:58px}
.bil-tbl tr.lv4 td.voce{padding-left:72px}
.bil-tbl tr.lv5 td.voce,.bil-tbl tr.lv6 td.voce{padding-left:86px}
/* le voci a zero in tutti e due gli anni si nascondono (pulsante «Mostra anche le voci a zero») */
.bil-tbl.senza-zero tr.zero{display:none}
.bil-nm{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:3px}
.bil-nm li{display:flex;gap:14px;justify-content:space-between;max-width:360px}
.bil-tbl tr.lv1 td{font-weight:650;background:var(--surface-2)}
.bil-tbl tr.lv2 td{font-weight:600}
.bil-tbl td.prec{color:var(--muted)}
.bil-tbl tr.has-figli{cursor:pointer}
.bil-tbl tr.has-figli td.voce svg{width:13px;height:13px;margin:0 5px -2px -18px;color:var(--muted);transition:transform .15s}
.bil-tbl tr.has-figli.chiuso td.voce svg{transform:rotate(-90deg)}
.bil-tbl tr.sez td{background:var(--info-soft);font-weight:650}
.bil-tbl tr.parz td{background:var(--warn-soft);font-weight:650}
.bil-tbl tr.ris.ok td,.bil-tbl tfoot tr.ris.ok td{background:var(--ok-soft);color:var(--ok);font-weight:650}
.bil-tbl tr.ris.bad td,.bil-tbl tfoot tr.ris.bad td{background:var(--bad-soft);color:var(--bad);font-weight:650}
.bil-tbl tfoot tr.totale td{font-weight:700;border-top:2px solid var(--line);background:var(--surface-2)}
.bil-sp .se-card .tbl-wrap{border:0;border-radius:0 0 var(--r) var(--r)}
.bilancio-uffic-ce .se-card .tbl-wrap{border:0;border-radius:0 0 var(--r) var(--r)}

@media (max-width:1040px){.pn-base{grid-template-columns:minmax(0,1fr)}}
@media (max-width:640px){
  .pn-causale{grid-template-columns:minmax(0,1fr)}
}

/* ---------- area: documenti ---------- */
/* =====================================================================
   Documenti, Modelli, Comunicazioni, Organizzazione, Accessi
   (cantiere del restyling, 30/09): componenti nuovi di quest'area.
   Solo token, niente colori scritti a mano; valgono nel tema chiaro e scuro.
   ===================================================================== */

/* --- Archivio: i due riquadri dei numeri in testa ------------------- */
.doc-numeri{margin-bottom:16px}
.doc-numeri .viz{width:100%;height:auto;display:block}
/* le barre «Per classe» sono link che filtrano l'elenco */
body.se-body .hb a.r{color:var(--ink);text-decoration:none;border-radius:6px}
body.se-body .hb a.r:hover span:first-child{color:var(--ink);text-decoration:underline;text-underline-offset:2px}
.doc-nota{margin:10px 0 0}

/* --- Riquadro «Documenti» dentro le schede (_docuploads-grid) -------- */
.doc-box-hd{align-items:center;gap:8px;margin-bottom:8px}
.doc-box-hd h2.sec{margin:0}

/* --- Modulo di caricamento (modale) ---------------------------------- */
/* l'ente scelto dal superadmin: in cima ed evidenziato, come nei form a pagina (pattern C) */
.doc-ente{background:var(--brand-soft);border:1px solid var(--brand-line);border-radius:var(--r);padding:10px 12px 2px;margin-bottom:14px}
.doc-date{gap:0 14px}
.doc-modifica{margin:6px 0 0}

/* --- Documento prodotto: il testo reso come un foglio ---------------- */
.doc-foglio{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-sm);padding:18px 20px;max-height:70vh;overflow:auto;font-size:13.5px;line-height:1.55}
.doc-foglio table{max-width:100%}
.doc-piede-form{margin-top:14px;gap:8px}
/* coppie etichetta/valore nelle card strette della colonna laterale */
.kv.doc-kv{grid-template-columns:104px minmax(0,1fr)}
/* un avviso in testa alla pagina, prima delle card */
.note.doc-avviso{margin-bottom:14px}

/* --- Modelli di documento -------------------------------------------- */
/* il testo coi segnaposto, mostrato come codice */
.doc-codice{font-family:var(--f-mono);font-size:12px;line-height:1.5;background:var(--surface-2);color:var(--ink);border:1px solid var(--line);border-radius:var(--r-sm);padding:10px 12px;margin:4px 0 0;white-space:pre-wrap;word-break:break-word;max-height:12rem;overflow:auto}
.doc-codice.alto{max-height:26rem}
.doc-nota-su{margin:0 0 8px}
/* elenco variabile → spiegazione */
.doc-variabili{display:grid;grid-template-columns:auto minmax(0,1fr);gap:4px 10px;margin:0;font-size:12.5px}
.doc-variabili dt{font-weight:normal;min-width:0;overflow-wrap:anywhere}
.doc-variabili dd{margin:0;color:var(--muted)}
.se-card>details.adv>summary{padding:12px 16px}
.doc-bloccato{display:inline-flex;align-items:center;gap:6px}
.doc-bloccato svg{width:15px;height:15px;flex:none}

/* --- Editor del modello (documento-template/_form) ------------------- */
.dtpl-tabs{margin-bottom:16px}
.dtpl-tabs a{color:var(--muted)}
/* linguetta con un errore dopo il salvataggio */
.dtpl-tabs button.err::after{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--bad);margin-left:6px;vertical-align:middle}
.dtpl-pick{flex-wrap:wrap;gap:6px;margin-bottom:6px}
.dtpl-dove{margin-bottom:8px}
.dtpl-var-nota{margin-top:10px}
/* le variabili come etichette cliccabili (mockup «modello», classe .var) */
.dtpl-vars{display:flex;flex-wrap:wrap;gap:4px}
body.se-body .var{display:inline-block;font-family:var(--f-mono);font-size:11.5px;line-height:1.5;background:var(--brand-soft);color:var(--ink);border:1px solid var(--brand-line);border-radius:4px;padding:0 5px;cursor:pointer;max-width:100%;overflow-wrap:anywhere;text-align:left}
body.se-body .var:hover{border-color:var(--brand)}
/* la barra di Summernote sui token del tema */
.dtpl-pane .note-editor.note-frame{border-color:var(--line);border-radius:var(--r-sm);background:var(--surface)}
.dtpl-pane .note-editor .note-toolbar{background:var(--surface-2);border-bottom:1px solid var(--line)}
.dtpl-pane .note-editor .note-editing-area .note-editable{background:var(--surface);color:var(--ink)}
.dtpl-pane .note-editor .note-statusbar{background:var(--surface-2)}
/* catalogo dei contesti: schede affiancate */
.doc-catalogo{align-items:start}
.doc-prosa{margin:0;font-size:13.5px}

/* --- Classi documentali: il segno «richiesto» nelle colonne dei campi -- */
.doc-si{display:inline-flex;color:var(--ok)}
.doc-si svg{width:16px;height:16px}

/* --- Modelli dei messaggi -------------------------------------------- */
.tpl-variabili{margin:-4px 0 14px}
.doc-oggetto{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-sm);padding:6px 10px;margin-top:4px;overflow-wrap:anywhere}
.doc-gruppo{margin:18px 0 10px}
.doc-agganci{margin-top:16px}
/* le righe delle regole dei destinatari (costruite dal JS del form) */
#regole-list .regola-row{border:1px solid var(--line-2);border-radius:var(--r-sm);padding:8px 6px 2px;margin:0 0 8px}
#regole-list .regola-del{font-size:18px;line-height:1;color:var(--bad)}

/* --- Guide (guida/comunicazioni, guida/documenti-contrattuali) -------- */
/* il testo a sinistra, l'indice a destra che resta in vista scorrendo */
.guida-lay{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:18px;align-items:start}
.guida-indice{position:sticky;top:70px}
.guida-indice nav a{display:block;padding:5px 0;font-size:13px;color:var(--ink-2);border-bottom:1px dotted var(--line);text-decoration:none}
.guida-indice nav a:last-child{border-bottom:0}
.guida-indice nav a:hover{color:var(--ink);text-decoration:underline}
.guida>.bd{max-width:860px;font-size:14px}
.guida h2{font-family:var(--f-display);font-size:20px;margin:30px 0 10px;padding-bottom:6px;border-bottom:1px solid var(--line);scroll-margin-top:70px}
.guida h2:first-of-type{margin-top:4px}
.guida h3{font-size:15.5px;font-weight:650;margin:22px 0 6px;scroll-margin-top:70px}
.guida p,.guida li{line-height:1.65}
.guida code{background:var(--surface-3);color:var(--ink);padding:1px 5px;border-radius:4px;font-size:.87em}
.guida pre{background:var(--surface-2);color:var(--ink);border:1px solid var(--line);padding:10px 14px;border-radius:var(--r-sm);font-size:12.5px;overflow-x:auto}
.guida pre code{background:none;padding:0}
.guida table{font-size:13px}
.guida table code{white-space:nowrap}
.guida .tabella-scorrevole{overflow-x:auto;margin:10px 0}
/* i riquadri della guida: nota (informazione), attenzione, trappola */
.guida .nota,.guida .attenzione,.guida .trappola{border-left:4px solid var(--info);background:var(--info-soft);padding:10px 14px;margin:14px 0;border-radius:0 var(--r-sm) var(--r-sm) 0}
.guida .attenzione{border-left-color:var(--warn);background:var(--warn-soft)}
.guida .trappola{border-left-color:var(--bad);background:var(--bad-soft)}
/* la catena dei passi (come funziona, in breve) */
.guida .catena{display:flex;flex-wrap:wrap;align-items:stretch;gap:8px;margin:16px 0}
.guida .catena .passo{flex:1 1 140px;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-sm);padding:9px 11px;font-size:12.5px}
.guida .catena .passo strong{display:block;font-size:13.5px;margin-bottom:3px}
.guida-avviso{margin-bottom:16px}
@media (max-width:960px){
  .guida-lay{grid-template-columns:minmax(0,1fr)}
  .guida-indice{position:static;order:-1}
}
@media print{
  .no-stampa,.side,.top,.se-foot,.scope-bar{display:none!important}
  .guida-lay{display:block}
}
/* l'indice delle guide: schede cliccabili */
body.se-body a.guida-scheda{display:block;color:var(--ink);text-decoration:none}
body.se-body a.guida-scheda:hover{border-color:var(--line-2);box-shadow:var(--shadow)}
a.guida-scheda .hd svg{width:16px;height:16px;color:var(--muted)}

/* --- Enti: elenco e scheda ------------------------------------------- */
.ente-nome{display:flex;align-items:center;gap:10px}
.ente-nome .pill{margin-left:4px}
img.ente-mini{width:28px;height:28px;object-fit:contain;border-radius:6px;background:var(--surface);border:1px solid var(--line);flex:none}
.ente-sezioni{min-width:0}
.ente-sez-tit{margin:18px 0 10px}
.ente-sez-tit:first-child{margin-top:0}
/* il logo: riquadro vuoto con le iniziali */
.ente-logo-vuoto{display:flex;flex-direction:column;align-items:center;gap:8px;padding:18px 8px}
.ente-logo-vuoto span{width:84px;height:84px;border-radius:14px;display:grid;place-items:center;font-family:var(--f-display);font-size:30px;font-weight:700;background:var(--surface-3);color:var(--ink-2)}
.ente-logo-vuoto small{color:var(--muted)}
.ente-logo .se-row{gap:6px;margin-top:8px}
/* i dati dell'ente (DetailView a piu' colonne): sul telefono una voce sotto l'altra */
@media (max-width:640px){
  #tab-dati table.detail-view,#tab-dati table.detail-view tbody,#tab-dati table.detail-view tr{display:block;width:100%}
  #tab-dati table.detail-view th,#tab-dati table.detail-view td{display:block;width:100%!important;text-align:left!important;border:0}
  #tab-dati table.detail-view th{padding-bottom:0;color:var(--muted);font-weight:500}
  #tab-dati table.detail-view tr{border-bottom:1px solid var(--line-2);padding:4px 0}
}
.ente-logo .file-input{display:block}
.ente-logo .doc-nota{clear:both}

/* --- Impostazioni servizi (enti-impostazioni/update) ------------------ */
.imp-tabs button.err::after{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--bad);margin-left:6px;vertical-align:middle}
.imp-pane .se-row.between{align-items:center;margin-bottom:4px}
.imp-pane .se-row.between .ente-sez-tit{margin:0}

/* --- Console dei ruoli (rbac-console) --------------------------------- */
/* la matrice utenti × ruoli: intestazioni in verticale, prima colonna ancorata */
.matrice-legenda{display:flex;flex-wrap:wrap;gap:8px 22px;margin-bottom:12px;font-size:13px}
.matrice-avvolgi{overflow:auto;max-height:78vh;border:1px solid var(--line);border-radius:var(--r);background:var(--surface)}
.matrice{border-collapse:separate;border-spacing:0;font-size:12.5px;color:var(--ink)}
.matrice th,.matrice td{border-right:1px solid var(--line-2);border-bottom:1px solid var(--line-2)}
.matrice thead th{position:sticky;top:0;z-index:3;background:var(--surface);vertical-align:bottom;padding:0}
.matrice thead tr.gruppi th{top:0;z-index:4;text-align:center;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);background:var(--surface-2);padding:4px 6px}
.matrice .ruolo-testa{height:12rem;width:1.9rem}
.matrice .ruolo-testa a{display:block;writing-mode:vertical-rl;transform:rotate(180deg);white-space:nowrap;padding:6px 2px;color:var(--ink);text-decoration:none}
.matrice .ruolo-testa a:hover{text-decoration:underline}
.matrice .col-utente{position:sticky;left:0;z-index:2;background:var(--surface);min-width:15rem;border-right:2px solid var(--line);padding:6px 10px;text-align:left}
.matrice thead .col-utente{z-index:5}
.matrice tbody tr:hover td{background:var(--surface-2)}
.matrice tbody tr:hover .col-utente{background:var(--surface-3)}
.matrice td.cella{text-align:center;padding:3px;width:1.9rem}
.matrice td.fam-funzionale{background:var(--info-soft)}
.matrice td.fam-mattone{background:var(--surface-2)}
.matrice td.cambiata{outline:2px solid var(--warn);outline-offset:-2px}
.matrice .eredita{color:var(--muted)}
.matrice .spento td{opacity:.55}
.matrice .riga-utente small{color:var(--muted)}
.barra-azioni{position:sticky;bottom:0;z-index:6;display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:var(--surface);border:1px solid var(--line);border-top:0;border-radius:0 0 var(--r) var(--r);padding:10px 14px}
.matrice-igiene-tit{margin:22px 0 6px}
.igiene-card{border-left:4px solid var(--line)}
.igiene-card.gravita-alta{border-left-color:var(--bad)}
.igiene-card.gravita-media{border-left-color:var(--warn)}
.igiene-card.gravita-bassa{border-left-color:var(--muted)}
.igiene-voci{list-style:none;margin:0;padding:0;font-size:12.5px}
.igiene-voci li{padding:2px 0}
.doc-si-t{color:var(--ok)}

/* --- Ruoli, permessi, assegnazioni (modulo admin) --------------------- */
/* le due liste con i pulsanti in mezzo */
.assegna{display:grid;grid-template-columns:minmax(0,1fr) 150px minmax(0,1fr);gap:14px;align-items:start;margin-bottom:16px}
.assegna .bd{display:flex;flex-direction:column;gap:8px}
.assegna select.list{height:auto;min-height:320px;font-family:var(--f-mono);font-size:12.5px;padding:6px}
.assegna select.list optgroup{color:var(--muted);font-family:var(--f-body);font-style:normal;font-weight:600}
.assegna select.list option{padding:3px 6px;color:var(--ink)}
.assegna-frecce{display:flex;flex-direction:column;gap:8px;padding-top:48px}
.assegna-frecce .se-btn{justify-content:center}
.assegna-frecce .se-spin{display:none;width:12px;height:12px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:se-gira .8s linear infinite}
@keyframes se-gira{to{transform:rotate(360deg)}}
.assegna-utenti #list-users{font-size:13px;line-height:1.8}
.assegna-utenti #list-users a{margin-right:10px}
@media (max-width:760px){
  .assegna{grid-template-columns:minmax(0,1fr)}
  .assegna-frecce{padding-top:0;flex-direction:row;flex-wrap:wrap;align-items:center}
  .assegna select.list{min-height:200px}
}

/* ---------- area: eventi ---------- */
/*
 * css/parti/eventi.css — componenti dell'area Eventi (parti rimaste), del Check-in e della
 * casella «Comunicazioni ricevute», durante la conversione (30/09/2026).
 * Solo token (var(--...)), tema scuro compreso. Da riunire in se-ui.css parte 2.
 */

/* ---------- pulsanti-link ----------
   `body.se-body a` (0,1,1) vince su `.se-btn` (0,1,0): ogni <a class="se-btn"> usciva blu come un
   link nel testo. Qui il colore torna quello del pulsante. DA RENDERE COMUNE (se-ui.css parte 2). */
body.se-body a.se-btn,body.se-body a.se-btn:hover{color:var(--ink);text-decoration:none}
body.se-body a.se-btn.pri,body.se-body a.se-btn.pri:hover{color:var(--brand-ink)}
body.se-body a.se-btn.danger{color:var(--bad)}

/* ---------- Comunicazioni ricevute (notifica/index.php, view.php) ---------- */
/* la casella: righe .task come nel mockup «notifiche»; la riga intera e' il collegamento */
.casella{margin-top:12px}
.casella .task .tx{min-width:0;display:block}
.casella .task .t{display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-weight:650}
.casella .task.letta .t{font-weight:400}
.casella .task .m{display:flex}
.casella .task .m svg{width:14px;height:14px;vertical-align:-2px}
.casella .task .estratto{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%;min-width:0}
.casella .task .se-btn{pointer-events:none}
.notifica-avviso{margin-bottom:14px}
.corpo-notifica{line-height:1.6;overflow-wrap:anywhere}
.corpo-notifica img{max-width:100%;height:auto}
.corpo-notifica table{max-width:100%}
.notifica-kv{grid-template-columns:96px minmax(0,1fr)}
ul.destinatari{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
ul.destinatari li{display:flex;align-items:center;gap:8px;padding:7px 0;border-top:1px solid var(--line-2);font-size:13px}
ul.destinatari li:first-child{border-top:0;padding-top:0}
/* invio massivo › Non raggiunti: l'elenco scorre dentro il suo riquadro */
ul.destinatari.inv-nonragg{max-height:240px;overflow:auto}
@media (max-width:640px){.casella .task{grid-template-columns:4px minmax(0,1fr)}.casella .task .se-btn{display:none}}

/* ---------- Check-in (pres-parevent/checkin.php, checkin-scegli.php) ---------- */
/* scelta dell'evento: una riga .evcard con il pulsante a destra */
.evcard.ck-ev{grid-template-columns:52px minmax(0,1fr) auto;align-items:center}
.evcard.ck-ev .m svg{width:13px;height:13px;vertical-align:-2px;margin-right:2px}
.evcard.ck-ev.oggi .t{font-size:15.5px}
.ck-conclusi{padding:0 0 4px}
.ck-conclusi>p{margin:0 16px 8px}
/* la schermata: testata scura con il conteggio, ricerca grande, righe con pulsanti grandi */
.ck-top{margin-bottom:12px}
.se-card.ck{overflow:hidden}
.ck-hd{display:flex;gap:14px;align-items:center;flex-wrap:wrap;padding:18px 20px;background:var(--ink);color:var(--surface)}
.ck-hd .tx{flex:1;min-width:220px}
.ck-hd .small{font-size:12.5px;opacity:.72}
.ck-hd .nome{font-family:var(--f-display);font-size:21px;font-weight:650;line-height:1.2;text-wrap:balance}
.ck-hd .cnt{text-align:right}
.ck-hd .cnt .v{font-family:var(--f-display);font-size:30px;font-weight:700;line-height:1.1}
.ck-hd .cnt .v small{font-size:18px;opacity:.6;font-weight:600}
.ck-cerca{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.ck-cerca .searchbox{flex:1 1 360px;min-width:0}
.ck-cerca .searchbox svg{top:16px}
.ck-cerca .se-input{height:48px;font-size:16px;padding-left:34px}
.ck-cerca .seg button{height:46px;padding:0 16px;font-size:14px}
.ck-arrivi .viz{max-height:150px}
.ck-list{display:flex;flex-direction:column}
.ck-p{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;padding:13px 4px;border-bottom:1px solid var(--line-2)}
.ck-p:last-of-type{border-bottom:0}
.ck-p .t{font-size:15.5px;font-weight:500}
.ck-p .m{font-size:12.5px;color:var(--muted);margin-top:2px;display:flex;gap:4px 8px;flex-wrap:wrap;align-items:center}
.ck-p.dentro .st{color:var(--ok);font-weight:600}
.ck-p.uscito .st{color:var(--ink-2)}
.ck-p .az{display:flex;gap:8px;align-items:center}
.ck-p .se-btn{height:42px;padding:0 16px;font-size:14px}
.ck-p .ck-az{min-width:110px;justify-content:center}
.ck-p .se-btn:disabled{opacity:.55;cursor:progress}
.ck-nota{margin-top:12px}
@media (max-width:640px){
  .ck-hd .cnt{text-align:left}
  .ck-cerca .searchbox{flex-basis:100%}
  .ck-p{gap:8px}
  .ck-p .az{flex-direction:column-reverse;align-items:stretch;gap:6px}
  .ck-p .se-btn{height:40px;padding:0 12px;justify-content:center}
  .ck-p .ck-az{min-width:92px}
  .evcard.ck-ev{grid-template-columns:52px minmax(0,1fr)}
  .evcard.ck-ev>.se-btn{grid-column:2;justify-self:start}
}

/* ---------- Luoghi e strutture (logistica-strutture/index.php, view.php, _form.php) ---------- */
.lg-spiega{margin-bottom:14px}
.lg-spiega .bd p{margin:0 0 6px}
.lg-usi{display:inline-flex;gap:4px;flex-wrap:wrap}
.lg-stato{margin-bottom:12px}
/* modulo: insegna larga + tipo stretto (e comune + CAP), due colonne che su telefono vanno a capo */
.lg-form-testa{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:0 14px}
.lg-usi-form .form-group{margin-bottom:4px}
.lg-nota{margin:0 0 10px}
/* i campi in sola lettura «contro Chrome» restano col fondo normale, solo in questa maschera */
body.se-body .logistica-strutture-form .form-control[data-noautofill][readonly]{background-color:var(--surface)}
@media (max-width:640px){.lg-form-testa{grid-template-columns:minmax(0,1fr)}}
/* icone della colonna azioni (ActionColumn con 'label' => Icona::svg(...), 'class' => 'iconbtn'): in fila, non una sotto l'altra */
.se-tbl td>a.iconbtn{display:inline-grid;width:30px;height:30px;vertical-align:middle}
.se-tbl td>a.iconbtn svg{width:15px;height:15px}

/* ---------- elenchi trasversali: Checklist e Logistica di tutti gli eventi ---------- */
.se-tbl tr.riga-chiusa td{color:var(--muted)}
.q-warn{color:var(--warn);font-weight:600}
.se-tbl .sub.q-bad,.se-tbl .sub.q-warn{font-weight:500}
.ck-sez{margin:24px 0 10px}
.se-tbl input.ck-dal{margin-bottom:4px}
.se-tbl span.strong{font-weight:600}
/* Logistica di tutti gli eventi: indicatore premuto, icona del tipo accanto a «Cosa si fa», riga Dal/Al */
a.kpi.on{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}
.lg-cosa{display:inline-flex;gap:8px;align-items:flex-start}
.lg-cosa svg{width:15px;height:15px;flex:none;margin-top:2px;color:var(--muted)}
form.lg-date{margin-bottom:10px}
form.lg-date label{margin:0;font-size:13px;color:var(--ink-2);white-space:nowrap}
body.se-body form.lg-date input.lg-data{width:130px;height:32px}

/* ---------- Importa corsi da Salavirtuale (salavirtuale-corsi/index.php, _anteprima.php) ---------- */
.slv-avvisi{gap:10px;margin-bottom:14px}
.slv-avvisi:empty{display:none}
.slv-modo{display:inline-flex;align-items:center;gap:6px;margin:0;font-size:13px;color:var(--ink-2);font-weight:400;max-width:100%;min-width:0}
.slv-modo .se-select{min-width:0;max-width:100%;text-overflow:ellipsis}
.slv-testa{display:inline-flex;align-items:center;gap:6px;margin:0;white-space:nowrap;cursor:pointer;font:inherit;text-transform:inherit;letter-spacing:inherit;color:inherit}
.se-tbl .slv-col{white-space:nowrap}
.slv-avanzamento{margin-bottom:14px}
.slv-progress{height:22px;border-radius:6px;background:var(--surface-3);overflow:hidden;margin-bottom:10px}
.slv-barra{height:100%;width:0;min-width:34px;background:var(--s1);color:#fff;font-size:12px;font-weight:600;display:flex;align-items:center;padding:0 8px;white-space:nowrap;transition:width .3s}
.slv-barra.ok{background:var(--ok)} .slv-barra.warn{background:var(--warn)}
.slv-righe{max-height:240px;overflow:auto;display:flex;flex-direction:column;gap:2px}
.slv-fine{margin-top:8px}
.q-ok{color:var(--ok)}
.slv-anteprima{margin-bottom:14px}
.slv-anteprima .hd{flex-wrap:wrap}
.slv-piede{border-top:1px solid var(--line-2)}

/* ---------- Scheda evento: le linguette convertite il 30/09 ---------- */
/* Informazioni (progetti/view.php): elenco chiave-valore in lettura, la DetailView solo in modifica */
.ev-kv{grid-template-columns:210px minmax(0,1fr)}
.ev-kv dd .pill{vertical-align:1px}
.ev-kv dd svg{width:13px;height:13px;vertical-align:-2px}
.note.ev-blocco>svg{margin-top:2px}
@media (max-width:640px){.ev-kv{grid-template-columns:minmax(0,1fr)}}
/* Impostazioni RES (progetti-config/view.php, progetti-giornate/_riquadro.php): tre riquadri e le giornate */
.ev-kv-s{grid-template-columns:130px minmax(0,1fr);gap:7px 12px;font-size:13px}
.ev-res .se-card{min-width:0}
.ev-res-nota{margin:10px 0 0}
img.ev-logo{max-width:120px;max-height:60px;border-radius:6px;border:1px solid var(--line);background:#fff;padding:2px;display:block}
.ev-giornate{margin-top:16px}
.ev-giornate .hd{flex-wrap:wrap}
.ev-giorni-evento{grid-template-columns:110px minmax(0,1fr)}
ul.ev-giorni{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px 18px;font-size:13px}
.grid3.ev-res{grid-template-columns:repeat(auto-fit,minmax(290px,1fr))}
@media (max-width:640px){.ev-kv-s{grid-template-columns:minmax(0,1fr)}}
/* Badge di una persona (components/ui/BadgePersona.php): «Badge» e «Invia badge» affiancati,
   anche in una colonna stretta (scheda persona › Eventi e Ultimi eventi) */
.bp-az{display:inline-flex;flex-wrap:nowrap;gap:2px;vertical-align:middle}
body.se-body .bp-az .iconbtn{width:30px;height:30px;color:var(--ink-2)}
body.se-body .bp-az .iconbtn:hover{color:var(--ink)}
/* Conflitto d'interessi di una persona (components/ui/ConflittoPersona.php, linguetta Relatori degli
   eventi ECM): lo stato come pill e tre azioni piccole (genera, invia per la firma, carica firmata);
   sul telefono le azioni vanno a capo sotto la pill */
.cf-cella{display:inline-flex;flex-wrap:nowrap;align-items:center;gap:4px 6px;vertical-align:middle}
@media (max-width:640px){.cf-cella{flex-wrap:wrap}}
.cf-az{display:inline-flex;flex-wrap:nowrap;gap:2px}
body.se-body .cf-az .iconbtn{width:28px;height:28px}
/* :not(.btn) per vincere il blu dei link nelle tabelle (body.se-body .table a:not(.btn)) */
body.se-body .cf-az a.iconbtn:not(.btn){color:var(--ink-2)}
body.se-body .cf-az a.iconbtn:not(.btn):hover{color:var(--ink)}
body.se-body .cf-cella a.pill.ok:not(.btn){color:var(--ok);text-decoration:none}
body.se-body .cf-cella a.pill.ok:not(.btn):hover{box-shadow:inset 0 0 0 1px currentColor}
@media (min-width:641px){.cf-cella>.pill{min-width:112px}}
/* Registrazioni presenze (pres-parevent/index.php, _lettura.php, _columns.php) */
.ev-chiudere{gap:6px}
.ev-lettura p{margin:0}
.ev-lettura-conti{font-weight:400;margin-left:6px}
.ev-pill{gap:6px}
.ev-ufficio{margin-top:4px}
#ajax-alert-presenze:empty{display:none}
/* Centri di costo (progetti-centri-costo/_tab.php): la ripartizione con il totale che si aggiorna */
.cdc-hd{align-items:flex-start;flex-wrap:wrap}
.cdc-totale{display:flex;flex-direction:column;align-items:flex-end;gap:1px;min-width:150px}
.cdc-totale .l{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.cdc-totale b{font-family:var(--f-display);font-size:21px;font-weight:650}
.cdc-totale .ok{color:var(--ok)} .cdc-totale .bad{color:var(--bad)}
#cdc-tabella{min-width:560px}
#cdc-tabella td{vertical-align:middle}
.cdc-perc-box{display:inline-flex;align-items:center;gap:6px}
.cdc-perc-box input{width:90px;text-align:right}
@media (max-width:640px){.cdc-totale{align-items:flex-start}}
.cdc-hd .grow{flex:1 1 320px}
/* Dati ECM (progetti/_tab_ecm.php): la riga del confronto che differisce, il piede dei riquadri */
.tbl tr.riga-warn td{background:var(--warn-soft)}
.ev-piede{border-top:1px solid var(--line-2)}
.ev-confronto td:first-child{width:28%}
/* tema scuro: .tag.ecm e .pill.brand scrivevano --brand-ink (quasi nero) su --brand-soft (scuro), illeggibili.
   DA RENDERE COMUNE (se-ui.css, blocco del tema scuro). */
:root[data-theme="dark"] .tag.ecm,:root[data-theme="dark"] .pill.brand{color:var(--brand)}
/* Salavirtuale (progetti/_tab_salavirtuale.php): tre riquadri e la barra degli esiti */
.grid3.ev-sv{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
.ev-sv .bd{font-size:13.5px}
ul.ev-sv-quest{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}
.ev-stk{height:16px;margin-bottom:4px}
.ev-seg-superato{background:var(--s1)} .ev-seg-non-superato{background:var(--s2)} .ev-seg-non-svolto{background:var(--muted)}
/* Logistica della scheda (progetti-logistica/_camere.php, _riga_persona.php, _tabella_persone.php, _persone.php) */
.lg-camere{display:flex;flex-direction:column;gap:10px;margin:4px 0 10px}
.lg-conti{gap:6px}
.lg-conti .pill b{font-weight:700;margin-left:2px}
.rooms{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px}
.room{border:1px solid var(--line);border-radius:9px;background:var(--surface);padding:10px 12px;display:flex;flex-direction:column;gap:6px;min-width:0}
.room.eccesso{border-color:var(--bad);background:var(--bad-soft)}
.room.sfora{border-color:var(--warn)}
.room.nuova{border-style:dashed;background:transparent;justify-content:center;align-items:flex-start}
.room-hd{display:flex;align-items:center;gap:6px}
.room-hd .t{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap;min-width:0;flex:1}
.room-hd .t svg{width:15px;height:15px;color:var(--muted);flex:none}
.room .ac,.lg-pers .ac{display:inline-flex;gap:0;flex:none}
.room .iconbtn,.lg-pers .iconbtn{width:28px;height:28px}
.room .iconbtn svg,.lg-pers .iconbtn svg{width:14px;height:14px}
.room-m{display:flex;flex-wrap:wrap;gap:4px 10px;align-items:center;font-size:12.5px}
.lg-perslist{display:flex;flex-direction:column;border-top:1px solid var(--line-2)}
.lg-pers{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:8px;align-items:center;padding:6px 0;border-bottom:1px solid var(--line-2);font-size:13px}
.lg-pers:last-child{border-bottom:0}
.lg-pers .tx{min-width:0;display:flex;flex-wrap:wrap;gap:2px 6px;align-items:center}
.lg-pers .nome{display:inline-flex;align-items:center;gap:5px;font-weight:500}
.lg-pers .nome svg{width:13px;height:13px;color:var(--muted)}
.lg-pers .sub{flex-basis:100%;font-size:12px;color:var(--muted)}
.lg-pers .sub svg{width:12px;height:12px;vertical-align:-2px;margin-right:3px}
.srv-bd>.lg-perslist{border-top:0}
.lg-persona{margin-bottom:12px}
.lg-persona .hd{flex-wrap:wrap}
.lg-chi{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap}
.lg-chi svg{width:15px;height:15px;color:var(--muted)}
.lg-persona td svg{width:13px;height:13px;vertical-align:-2px;color:var(--muted)}
@media (max-width:640px){.lg-pers{grid-template-columns:minmax(0,1fr) auto}.lg-pers>.pill{grid-column:1;justify-self:start}}
/* Sponsor › dettaglio del contributo (progetti-sponsor/_voci_detail.php, dentro la riga espansa) */
.sp-voci{display:flex;flex-direction:column;gap:10px;padding:6px 2px;font-size:13px}
.sp-voci-tbl{min-width:520px}
.sp-voci-tbl tfoot td{border-top:1px solid var(--line);border-bottom:0;background:var(--surface-2)}
.sp-voci-tbl .sub svg{width:12px;height:12px;vertical-align:-2px}
.sp-zero{font-style:italic}
.sp-voci-tbl td.sp-dafare .iconbtn{color:var(--bad)}
/* le icone-pulsante nelle celle delle tabelle .tbl stanno in fila (l'.iconbtn e' un blocco a griglia) */
.tbl td .iconbtn{display:inline-grid;vertical-align:middle;width:28px;height:28px}
.tbl td .iconbtn svg{width:14px;height:14px}
.sp-voci-tbl td.acts{width:auto}

/* ---------- area: impostazioni ---------- */
/*
 * css/parti/impostazioni.css — Impostazioni (tabelle di configurazione, pattern E),
 * pagina di accesso e pagine d'errore. Caricato dopo se-ui.css (SeUiAsset).
 * Solo token, niente colori a mano; il tema scuro viene dai token.
 * A lavori finiti si riunisce nella parte 2 di se-ui.css.
 */

/* ---------- intestazione delle impostazioni: il ritorno a Impostazioni sopra il titolo ---------- */
body.se-body a.ph-su{display:inline-flex;align-items:center;gap:3px;margin:0 0 4px -3px;font-size:12.5px;font-weight:500;color:var(--muted);text-decoration:none}
body.se-body a.ph-su:hover{color:var(--ink);text-decoration:none}
.ph-su svg{width:14px;height:14px;flex:none}

/* ---------- righe delle tabelle di configurazione ---------- */
/* colonna delle azioni (Impostazioni::azioni): matita e cestino affiancati, stretta */
.se-tbl td.imp-az,.se-tbl th.imp-az{white-space:nowrap;width:1%;padding-left:4px;padding-right:8px}
.se-tbl td.imp-az .iconbtn{display:inline-grid;vertical-align:middle;width:30px;height:30px;margin:0}
body.se-body .se-tbl td.imp-az a.iconbtn{color:var(--ink-2)}
body.se-body .se-tbl td.imp-az a.iconbtn:hover{color:var(--ink)}
/* nome di una riga che l'ente non puo' modificare (di sistema, o di un altro ente) */
.imp-nm{font-weight:500;color:var(--ink)}
/* etichetta «Di sistema» accanto al nome */
.pill.imp-sis{height:20px;font-size:11px;font-weight:600;margin-left:4px;vertical-align:1px}
/* pallino del colore (categorie di evento) */
.imp-col{display:inline-block;width:12px;height:12px;border-radius:4px;vertical-align:-1px;margin-right:6px;border:1px solid var(--line);background:var(--sw,var(--surface-3))}
/* un valore corto in grassetto tabellare (codici, aliquote, giorni) */
.se-tbl .imp-cod,.imp-cod{font-family:var(--f-mono);font-size:12.5px;font-weight:500;color:var(--ink-2);white-space:nowrap}

/* la riga piccola sotto un nome cliccabile resta leggera (il collegamento e' in grassetto) */
body.se-body .se-tbl a.rowlink .sub,body.se-body .se-tbl a.rowlink .tag{font-weight:400}
body.se-body .se-tbl a.rowlink .tag{font-weight:700}
/* testo d'avviso sotto un valore (ridefinita, vietata) */
.se-tbl .sub.imp-warn{color:var(--warn)}
.se-tbl .sub.imp-bad{color:var(--bad)}
.se-tbl .sub.imp-bad svg{width:13px;height:13px;vertical-align:-2px}
/* interruttore dentro una riga (.toggle di se-ui.css su un collegamento) */
a.toggle.imp-tg{display:inline-block;vertical-align:middle;margin-right:4px}
/* punteggio con la stella (competenze) */
.imp-stelle{display:inline-flex;align-items:center;gap:3px;font-variant-numeric:tabular-nums}
.imp-stelle svg{width:13px;height:13px;color:var(--warn)}
/* esito di un'operazione mostrato dalla pagina (flash strutturato, vedi cont-tabesercizi) */
.note.imp-esito{margin-bottom:14px}
/* testo piccolo e senza a capo in una cella (centri di costo: «usato da») */
.imp-piccolo{font-size:12px;color:var(--ink-2)}
.imp-nowrap{white-space:nowrap}
/* nome di una voce non attiva: barrato, leggibile */
.se-tbl td.imp-barrato .rowlink,.se-tbl td.imp-barrato .imp-nm{text-decoration:line-through;text-decoration-color:var(--muted);color:var(--muted)}
/* connettore Salavirtuale: indirizzo della piattaforma, riga attiva, nota informativa */
.imp-url{font-family:var(--f-mono);font-size:12px;color:var(--ink-2);word-break:break-all}
.tbl tr.imp-attiva td{background:var(--ok-soft)}
.tbl tr.imp-spenta td{color:var(--muted)}
.tbl .sub.imp-info{color:var(--info)}
.tbl .sub.imp-bad{color:var(--bad)}
.imp-connessioni .tbl{min-width:880px}
body.se-body .imp-connessioni .form-control{height:32px;font-size:13px}
.imp-anteprima-box:not(:empty){margin-bottom:14px}
.imp-nota-salva{margin:12px 0 0;color:var(--muted);max-width:90ch}
.imp-connessioni td:nth-child(1){min-width:200px;max-width:320px}
.imp-connessioni td:last-child select{min-width:130px}
/* riga spenta (voce non attiva): in grigio */
.se-tbl tr.imp-spenta td{color:var(--muted)}
.se-tbl tr.imp-spenta td .rowlink{color:var(--muted)}
/* spunta «si'» in una cella */
.imp-si{display:inline-flex;color:var(--ok)}
.imp-si svg{width:16px;height:16px}
/* spiegazione chiusa sopra un elenco («Come funziona») */
details.adv.imp-come{margin-bottom:14px}
details.adv.imp-come summary{font-weight:600;font-size:13.5px}
details.adv.imp-come .bd p{margin:0 0 8px;font-size:13px;color:var(--ink-2);max-width:78ch}
details.adv.imp-come .bd p:last-child{margin-bottom:0}

/* testo di spiegazione dentro una scheda, sopra o sotto la tabella (tariffario) */
.se-card .bd.imp-intro{font-size:13px;color:var(--ink-2);line-height:1.5;padding-top:10px;padding-bottom:12px}
.se-card .bd.imp-piede{border-top:1px solid var(--line-2);color:var(--muted)}
.tbl td.strong{font-weight:600}
/* tabella senza cornice dentro una scheda anche quando sta in un contenitore pjax */
.se-card .tbl-wrap.piatta{border:0;border-radius:0;border-top:1px solid var(--line-2)}
.tbl td.imp-az{width:1%;white-space:nowrap}
.tbl td.imp-az .iconbtn{display:inline-grid;width:30px;height:30px}

/* l'albero del piano dei conti (kartik TreeView) dentro una scheda */
/* kartik mette `form-control` sul contenitore dell'albero: senza height:auto prende i 34px dei campi e l'albero esce dal riquadro */
.imp-albero .kv-tree-wrapper{border:0}
body.se-body .imp-albero .kv-tree-wrapper.form-control{height:auto;padding:0}
/* l'albero kartik e il riquadro del nodo con i colori del design system: i suoi fondi bianchi (#fff, #f5f5f5)
   nel tema scuro lasciavano testo chiaro su bianco */
.imp-albero .kv-tree-container{border-color:var(--line-2)}
.imp-albero .kv-tree-root,.imp-albero .kv-tree-list,.imp-albero .kv-node-indicators{background:transparent}
.imp-albero .kv-tree li{border-color:var(--line)}
.imp-albero .kv-tree li ul{border-top-color:var(--line)}
.imp-albero .kv-tree>li:last-child ul,.imp-albero .kv-parent ul li:last-child ul{border-left-color:var(--surface)}
.imp-albero .kv-tree li.kv-parent{border-bottom-color:var(--surface)}
.imp-albero .kv-node-detail{border-radius:5px}
.imp-albero .kv-node-detail:focus,.imp-albero .kv-focussed{background:var(--brand-soft)}
.imp-albero .kv-node-detail:hover{background:var(--surface-3)}
.imp-albero .kv-highlight{color:var(--ink);background:var(--warn-soft)}
.imp-albero .kv-node-message{color:var(--muted)}
.imp-albero .kv-loading,.imp-albero .kv-loading-search{background-color:var(--surface)}
.imp-albero .kv-search-container .kv-search-clear{color:var(--muted);text-shadow:none}
.imp-albero .kv-detail-container{border-color:var(--line);border-radius:var(--r);padding:0 16px 14px}
.imp-albero .kv-detail-heading{margin:0 -16px 14px;padding:12px 16px;border-radius:var(--r) var(--r) 0 0;border-bottom-color:var(--line-2);background:var(--surface-2)}
.imp-albero .kv-detail-crumbs{font-size:15px;font-weight:650;color:var(--muted);padding:0;text-shadow:none}
.imp-albero .kv-detail-crumbs .kv-crumb-active{color:var(--ink);font-weight:650}
/* l'albero del Piano dei conti: le icone Font Awesome di kartik (piu'/meno, cartelle, voci) disegnate con le icone
   del design system, coi colori dei gettoni; stesso posto, stesso clic. Si disegna il ::before: l'<i> resta di
   kartik, che lo mostra e lo nasconde (display) secondo il ramo aperto o chiuso */
.imp-albero .kv-tree-wrapper .far::before,.imp-albero .kv-tree-wrapper .fas::before{content:"";display:inline-block;width:14px;height:14px;vertical-align:-2px;background:currentColor;-webkit-mask:var(--se-ic) center/contain no-repeat;mask:var(--se-ic) center/contain no-repeat}
.imp-albero .kv-tree-wrapper .fa-plus-square{--se-ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='4' y='4' width='16' height='16' rx='3'/%3E%3Cpath d='M12 8v8M8 12h8'/%3E%3C/svg%3E");color:var(--muted)}
.imp-albero .kv-tree-wrapper .fa-minus-square{--se-ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='4' y='4' width='16' height='16' rx='3'/%3E%3Cpath d='M8 12h8'/%3E%3C/svg%3E");color:var(--muted)}
.imp-albero .kv-tree-wrapper .fa-folder{--se-ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 6a1 1 0 0 1 1-1h5l2 2h9a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1z'/%3E%3C/svg%3E");color:var(--warn)}
.imp-albero .kv-tree-wrapper .fa-folder-open{--se-ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 6a1 1 0 0 1 1-1h5l2 2h8a1 1 0 0 1 1 1v2'/%3E%3Cpath d='M3 6v12a1 1 0 0 0 1 1h13.5a1 1 0 0 0 1-.8L21 11H7.5a1 1 0 0 0-1 .8L4 19'/%3E%3C/svg%3E");color:var(--warn)}
.imp-albero .kv-tree-wrapper .fa-file,.imp-albero .kv-tree-wrapper .fa-list,.imp-albero .kv-tree-wrapper .fa-list-ul{--se-ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 6h11M9 12h11M9 18h11M4 6h.01M4 12h.01M4 18h.01'/%3E%3C/svg%3E");color:var(--info)}
/* un'icona che non e' fra queste prende quella delle voci, non un quadrato pieno */
.imp-albero .kv-tree-wrapper{--se-ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 6h11M9 12h11M9 18h11M4 6h.01M4 12h.01M4 18h.01'/%3E%3C/svg%3E")}


/* ---------- form nelle modali di Impostazioni ---------- */
/* scelta del colore di una categoria: il colore arriva da --sw (dato), l'anello dai token */
.imp-sws{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}
.imp-sw{width:30px;height:30px;border-radius:7px;border:0;padding:0;cursor:pointer;background:var(--sw);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ink) 15%,transparent)}
.imp-sw:hover{transform:translateY(-1px)}
.imp-sw.on{box-shadow:0 0 0 2px var(--surface),0 0 0 4px var(--ink)}
.imp-anteprima-r{display:flex;align-items:center;gap:10px}
.imp-anteprima{display:inline-flex;align-items:center;height:24px;padding:0 12px;border-radius:6px;font-size:12px;font-weight:600;background:var(--sw);color:#fff}
/* il campo Ente, in cima e evidenziato (pattern C della guida) */
.field-ente{background:var(--brand-soft);padding:10px 12px 2px;border-radius:10px;margin-bottom:14px}
.field-ente .form-group{margin-bottom:8px}
/* pagine di Impostazioni a modulo unico (Impostazioni RES, conti per registrazioni automatiche) */
.imp-modulo{max-width:980px}
.imp-modulo .hint-block{display:block;font-size:12px;color:var(--muted);margin-top:4px;line-height:1.4}
.imp-spiega{font-size:13px;color:var(--ink-2);margin:0 0 12px;max-width:80ch;line-height:1.5}
.tools.imp-scelta-ente{margin:0}
.tools.imp-scelta-ente label{font-size:13px;font-weight:600;color:var(--ink-2);margin:0}
.tools.imp-scelta-ente .se-select{width:auto;min-width:0;max-width:100%;flex:0 1 360px}
/* conti per registrazioni automatiche: una riga per conto — nome | sottoconto | estensione | lente | descrizione */
.imp-conti{display:flex;flex-direction:column}
.imp-conto{display:grid;grid-template-columns:minmax(0,1.3fr) 120px 72px 34px minmax(0,1.5fr);gap:8px;align-items:center;padding:7px 0;border-bottom:1px solid var(--line-2)}
.imp-conto:last-child{border-bottom:0}
.imp-conto .imp-conto-l{margin:0;font-size:13px;font-weight:500;color:var(--ink)}
body.se-body .imp-conto .form-group{margin:0}
body.se-body .imp-conto .help-block:empty,body.se-body .imp-conto .invalid-feedback:empty{display:none}
body.se-body .imp-conto .form-control{font-family:var(--f-mono);font-size:12.5px;background:var(--surface-2)}
.imp-conto .imp-conto-d{font-size:12.5px;color:var(--muted);min-width:0;overflow:hidden;text-overflow:ellipsis}
.se-btn.imp-lente{width:34px;padding:0;justify-content:center}
.imp-soglia{max-width:260px;margin-top:14px}
.imp-soglia .hint-block{display:block;font-size:12px;color:var(--muted);margin-top:4px}
@media (max-width:760px){
  .imp-conto{grid-template-columns:minmax(0,1fr) 72px 34px;row-gap:4px}
  .imp-conto .imp-conto-l{grid-column:1/-1}
  .imp-conto .imp-conto-d{grid-column:1/-1}
}
/* la barra con «Salva» che resta in fondo allo schermo nei moduli lunghi */
.imp-piede-form.fisso{position:sticky;bottom:0;z-index:5;background:color-mix(in srgb,var(--bg) 92%,transparent);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);margin:14px -4px 0;padding:12px 4px}
/* piede di un modulo a pagina piena: Annulla e Salva in fondo a destra */
.imp-piede-form{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap;margin-top:8px;padding-top:14px;border-top:1px solid var(--line-2)}
/* una spiegazione accanto a un campo, allineata al campo */
.hint.imp-nota-campo{font-size:12.5px;color:var(--muted);margin:26px 0 0;line-height:1.45}
@media (max-width:640px){.hint.imp-nota-campo{margin-top:0}}
/* opzioni avanzate chiuse in fondo a un modulo */
details.adv.imp-adv{margin:4px 0 8px}
details.adv.imp-adv summary{font-size:13px}
/* due campi affiancati dentro una modale, uno sotto l'altro sul telefono */
.imp-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 14px}
@media (max-width:640px){.imp-2{grid-template-columns:minmax(0,1fr)}}

/* =====================================================================
   PAGINA DI ACCESSO (views/layouts/main_login.php + site/login, recupero password)
   Due colonne: a sinistra il marchio e cosa fa Smartevent, a destra il modulo.
   Sul telefono resta il modulo, con il logo sopra.
   ===================================================================== */
body.se-body.se-login-body{min-height:100vh}
.se-login{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);min-height:100vh}
/* colonna del marchio */
.se-login .lg-brand{position:relative;display:flex;flex-direction:column;justify-content:center;gap:22px;padding:56px clamp(32px,6vw,88px);background:var(--surface-2);border-right:1px solid var(--line);overflow:hidden}
.se-login .lg-brand::before{content:"";position:absolute;left:0;right:0;top:0;height:4px;background:var(--brand)}
.se-login .lg-logo{display:block;height:46px;width:auto;max-width:260px}
.se-login .lg-brand h1{font-family:var(--f-display);font-weight:650;font-size:clamp(28px,3vw,38px);line-height:1.12;letter-spacing:-.02em;margin:0;color:var(--ink);text-wrap:balance;max-width:14em}
.se-login .lg-brand h1 em{font-style:normal;background:linear-gradient(transparent 62%,var(--brand-soft) 62%);padding:0 2px}
.se-login .lg-brand p{margin:0;color:var(--ink-2);font-size:15px;line-height:1.55;max-width:30em}
.se-login .lg-feat{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:10px}
.se-login .lg-feat li{display:flex;align-items:center;gap:10px;font-size:13.5px;color:var(--ink-2)}
.se-login .lg-feat li svg{width:15px;height:15px;flex:none;padding:5px;box-sizing:content-box;border-radius:50%;background:var(--brand-soft);color:var(--brand-ink)}
.se-login .lg-foot{margin-top:auto;padding-top:26px;font-size:12px;color:var(--muted)}
/* colonna del modulo */
.se-login .lg-form{display:flex;align-items:center;justify-content:center;padding:40px 24px;background:var(--surface)}
.se-login .lg-box{width:100%;max-width:380px}
.se-login .lg-box .lg-logo-m{display:none;margin:0 auto 28px;height:40px;width:auto}
.se-login .lg-box>a{display:block;text-align:center}
.se-login .tag.lg-env-tag{margin-bottom:12px;border-color:var(--bad);color:var(--bad)}
.se-login .lg-box .form-group{margin-bottom:14px}
.se-login .lg-box .invalid-feedback{display:block;font-size:12px;color:var(--bad);margin-top:4px}
body.se-body .se-login .lg-help a{color:var(--ink);font-weight:600}
.se-login .lg-box h2{font-family:var(--f-display);font-weight:650;font-size:24px;letter-spacing:-.015em;margin:0 0 4px;color:var(--ink)}
.se-login .lg-box .lg-sub{margin:0 0 22px;color:var(--muted);font-size:13.5px;line-height:1.5}
.se-login .lg-box .form-group{margin-bottom:14px}
.se-login .lg-box label{display:block}
.se-login .lg-box .form-control{height:40px;font-size:14px}
.se-login .lg-row{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:2px 0 18px;flex-wrap:wrap}
.se-login .lg-row .form-group{margin:0}
.se-login .lg-row .custom-control-label{font-weight:500;color:var(--ink-2);font-size:13px;margin:0;cursor:pointer}
body.se-body .se-login a.lg-link{color:var(--ink);font-weight:600;font-size:13px;text-decoration:underline;text-decoration-color:var(--brand);text-decoration-thickness:2px;text-underline-offset:3px}
body.se-body .se-login a.lg-link:hover{color:var(--ink);text-decoration-color:var(--ink)}
.se-login .se-btn.lg-go{width:100%;justify-content:center;height:42px;font-size:14.5px}
.se-login .lg-help{margin:22px 0 0;text-align:center;font-size:12.5px;color:var(--muted)}
.se-login .lg-env{display:inline-flex;vertical-align:middle;margin-left:8px}
.se-login .lg-flash{margin-bottom:16px}
.se-login .lg-flash .note{margin-bottom:8px}
/* la password che si vede e non si vede (nuova password) */
.se-login .lg-pw{position:relative}
.se-login .lg-pw .form-control{padding-right:44px}
.se-login .lg-pw .lg-eye{position:absolute;right:4px;top:3px;width:34px;height:34px}
.se-login .lg-pw .lg-eye svg{width:16px;height:16px}
/* il logo giusto per il tema: a colori sul chiaro, in bianco sullo scuro (img.su-chiaro / img.su-scuro in se-ui.css) */
@media (max-width:860px){
  .se-login{grid-template-columns:minmax(0,1fr)}
  .se-login .lg-brand{display:none}
  .se-login .lg-form{align-items:flex-start;padding:48px 16px 32px}
  .se-login .lg-box .lg-logo-m{display:block}
  :root[data-theme="dark"] .se-login .lg-box .lg-logo-m.su-scuro{display:block}
  :root:not([data-theme="dark"]) .se-login .lg-box .lg-logo-m.su-chiaro{display:block}
}

/* =====================================================================
   PAGINE D'ERRORE (views/site/error.php): dentro il guscio per chi e' entrato,
   nella colonna del modulo di accesso per chi non e' entrato.
   ===================================================================== */
.se-err{max-width:620px;margin:6vh auto 0;display:flex;flex-direction:column;align-items:flex-start;gap:14px}
.se-err .code{font-family:var(--f-mono);font-size:12.5px;font-weight:500;color:var(--muted);letter-spacing:.04em}
.se-err h1{font-family:var(--f-display);font-weight:650;font-size:30px;line-height:1.15;letter-spacing:-.02em;margin:0;color:var(--ink);text-wrap:balance}
.se-err p{margin:0;color:var(--ink-2);font-size:14.5px;line-height:1.55}
.se-err .det{font-size:13px;color:var(--muted)}
.se-err .acts{display:flex;gap:8px;flex-wrap:wrap;margin-top:6px}
.se-err details.adv{width:100%;margin-top:6px}
.se-err details.adv pre{margin:0;white-space:pre-wrap;word-break:break-word;font-family:var(--f-mono);font-size:12px;color:var(--ink-2);max-height:260px;overflow:auto}
.se-login .se-err{margin:0;max-width:none}
.se-login .se-err h1{font-size:24px}
@media (max-width:640px){.se-err{margin-top:2vh}.se-err h1{font-size:24px}.se-err .acts .se-btn{flex:1 1 auto;justify-content:center}}

/* ---------- area: persone ---------- */
/* =====================================================================
   AREA PERSONE — elenco anagrafiche, scheda, pagine dell'area
   (css della conversione: caricato dopo se-ui.css, da riunire nella parte 2)
   Solo token, niente colori scritti a mano; il tema scuro segue da se'.
   ===================================================================== */

/* ---- elenco: la cella «Nome» con foto o iniziali, nome e riga sotto */
.pers-nome{display:flex;align-items:center;gap:10px;min-width:0}
.pers-nome .tt{min-width:0}
/* nome e riga sotto su una riga sola (tagliati coi puntini, il nome intero al passaggio del
   mouse): righe basse come nel mockup, e le colonne che non stanno le nasconde se-ui.js */
.pers-nome .rowlink{font-weight:600;display:block;max-width:min(320px,56vw);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pers-nome .sub{max-width:min(320px,56vw);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* celle con testi lunghi (mansioni): vanno a capo in una colonna stretta */
.se-tbl td.pers-lunga{max-width:220px;min-width:140px}
.pers-riga-foto{width:26px;height:26px;border-radius:50%;object-fit:cover;flex:none;display:block}
/* i ruoli (tipi) di un'anagrafica, come pill piatte */
.pers-ruoli{display:flex;gap:4px;flex-wrap:wrap}
/* «Da guardare»: una frase corta in arancio, come nel mockup */
.pers-guarda{color:var(--warn);font-weight:500;font-size:12.5px}
/* variazione «da guardare» sotto un numero in testa (nel mockup il codice fiscale mancante) */
.kpi .d.warn{color:var(--warn)}
/* «Chi c'e' in archivio» (riquadro che si apre) fra i numeri e la griglia */
details.adv.pers-archivio{margin-bottom:14px}
details.adv.pers-archivio summary .small{font-weight:400}
/* il form «seleziona tutti i filtrati» sta nella barra della griglia: solo il pulsante si vede */
.pers-form-filtrati{display:inline-flex;margin:0}
.tools .btn-group .pers-form-filtrati + .se-btn,.tools .pers-form-filtrati + .se-btn{margin-left:6px}
/* ---- la barra della selezione (widgets/BarraSelezione.php): il carrello in sessione. Stesso
   aspetto della barra delle azioni di massa (.bulk, sospesa in basso): una sola barra di
   selezione in tutte le pagine. Sempre «aperta» (.show) e nascosta con l'attributo `hidden`:
   qui display va rimesso a none, perche' .bulk lo fissa a flex. Dentro: conteggio, «N in
   questo elenco», nota breve (la spiegazione al passaggio del mouse), azioni (la prima e' la
   primaria), «Svuota». */
.bulk.barra-selezione[hidden]{display:none}
.barra-selezione .sel-conta{font-variant-numeric:tabular-nums}
.barra-selezione .sel-qui{white-space:nowrap;opacity:.85;margin-right:4px}
.barra-selezione .sel-qui b{margin-right:0}
.barra-selezione .sel-nota{font-size:11.5px;opacity:.72;white-space:nowrap;margin-right:6px;cursor:help}
.barra-selezione form.sel-azione{display:inline-flex;margin:0}
/* i pulsanti-link (azioni in modale) nella barra scura: colore della barra, non dei link */
body.se-body .bulk a.se-btn,body.se-body .bulk a.se-btn:hover{color:var(--surface);text-decoration:none}
body.se-body .bulk a.se-btn.pri,body.se-body .bulk a.se-btn.pri:hover{color:var(--brand-ink)}
.bulk .se-btn.ghost{border-color:transparent}
:root[data-theme="dark"] .bulk .se-btn:not(.pri){border-color:rgba(0,0,0,.2)}
:root[data-theme="dark"] .bulk .se-btn:not(.pri):hover{background:rgba(0,0,0,.07)}
/* con una modale aperta la barra si toglie di mezzo (starebbe sopra il piede della modale) */
body.modal-open .bulk{visibility:hidden}
/* sul telefono le barre (questa e quella di seBulk) vanno a capo invece di scorrere di lato:
   tutte le azioni si vedono, e la pagina lascia spazio sotto */
@media (max-width:640px){
  .bulk{left:12px;right:12px;bottom:12px;max-width:none;flex-wrap:wrap;row-gap:6px;overflow-x:visible;transform:translateY(calc(100% + 24px))}
  .bulk.show{transform:none}
  body.se-body:has(.bulk.show:not([hidden])) .page{padding-bottom:190px}
}

/* ---- scheda: la testata della persona (rec-head con la foto o le iniziali a sinistra) */
.pers-testa{align-items:center}
.pers-testa-av{flex:none;display:block;border-radius:16px;text-decoration:none}
.pers-testa-av:hover{text-decoration:none}
.pers-testa-av .se-av{width:60px;height:60px;border-radius:16px;font-size:21px}
.pers-testa-av:hover .se-av,.pers-testa-av:hover .pers-testa-foto{outline:2px solid var(--brand);outline-offset:2px}
.pers-testa-foto{width:60px;height:60px;border-radius:16px;object-fit:cover;display:block}
.pers-tags{gap:6px;margin-bottom:6px}
/* gli altri ruoli della stessa anagrafica: pill che si cliccano (aprono la scheda in quel ruolo) */
a.pill.pers-altro-ruolo{text-decoration:none;border:1px dashed var(--line)}
a.pill.pers-altro-ruolo:hover{border-color:var(--ink-2);color:var(--ink);text-decoration:none}
/* il ruolo aperto: la pill «brand» di se-ui ha il testo scuro anche nel tema scuro (illeggibile) */
.pers-tags .pill.brand{color:var(--ink)}
.pers-sotto{color:var(--muted);font-size:13.5px;margin:-2px 0 8px}
/* la sezione aperta: i partial vecchi stanno nel ponte, qui solo lo spazio */
.pers-sezione{min-width:0}

/* ---- scheda › Panoramica */
.pers-panoramica .kv{grid-template-columns:180px minmax(0,1fr)}
.pers-in-card{border:0;border-radius:0}
.pers-in-card .tbl{width:100%;min-width:0;table-layout:fixed}
.pers-in-card .tbl td{padding:9px 16px;white-space:normal;overflow-wrap:anywhere}
.pers-in-card .tbl td.r{width:110px;white-space:nowrap}
.pers-collegamenti{display:flex;flex-direction:column;gap:9px;font-size:13.5px}
.pers-foto-errori:empty{display:none}
.pers-foto-nota{text-align:center;margin:4px 0 0}

/* ---- scheda › Eventi: i due grafici sopra l'elenco */
.pers-eventi-grafici{margin-bottom:4px}

@media (max-width:640px){
  .pers-testa-av .se-av,.pers-testa-foto{width:48px;height:48px;border-radius:13px;font-size:17px}
  .pers-panoramica .kv{grid-template-columns:minmax(0,1fr)}
}

/* ---- pagine dell'area: Competenze, Importa */
.se-tbl td.pers-skills{min-width:240px;width:55%}
.se-tbl td.pers-skills .pers-ruoli{max-width:640px}
.pill.pers-skill b{font-weight:700;margin-left:2px}
.pers-colonne-import{word-break:break-word;line-height:1.6}
.pers-form-azioni{margin-top:8px}

/* ---- «Nuova anagrafica» (modale) */
.pers-scegli-tipo{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
/* il campo Ente in cima, evidenziato (pattern C: solo per chi sceglie l'ente) */
.pers-campo-ente{background:var(--brand-soft);padding:12px 12px 2px;border-radius:10px;margin-bottom:14px}
.pers-form-aiuto{margin:0 0 14px}

/* ---- scheda › Dati anagrafici: contatti, indirizzi, coordinate bancarie */
.pers-box{margin-top:18px}
.pers-sub-head{margin-bottom:10px;align-items:center}
.pers-sub-head h2.sec{margin:0}
.pers-sub-head .btn-toolbar{margin:0}

/* ---- scheda › Competenze: il riquadro per attribuirle sopra l'elenco */
.pers-attribuisci{margin-bottom:18px}
.pers-attribuisci .field{min-width:0}
.pers-attribuisci .grid4{align-items:end}

/* ---------- griglie: ordinamento discreto (30/09) ----------
   Le intestazioni ordinabili (link `a[data-sort]` di Yii e kartik, in tutte le griglie) a
   riposo non mostrano frecce: si capisce che si cliccano dal cursore e dal colore, che al
   passaggio del mouse passa da grigio a inchiostro, con una doppia freccina leggera. La
   colonna ordinata ha il titolo in inchiostro e una freccina piccola ▲ (crescente) o ▼
   (decrescente) accanto. Spariscono l'icona grande di kartik (`.kv-sort-icon`, Font
   Awesome) e il glifo Glyphicons di site.css (`a.asc:after`). Nelle colonne allineate a
   destra (numeri) la freccina sta prima del titolo (::before), che resta a filo dei numeri.
   Sul telefono, senza passaggio del mouse, la doppia freccina resta visibile appena. Le
   forme sono maschere SVG colorate con `currentColor`: niente colori scritti a mano. */
body.se-body{
  --se-sort-su:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 10'%3E%3Cpath d='M4 2.6 7.2 6.8H.8z'/%3E%3C/svg%3E");
  --se-sort-giu:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 10'%3E%3Cpath d='M4 7.4 7.2 3.2H.8z'/%3E%3C/svg%3E");
  --se-sort-due:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 10'%3E%3Cpath d='M4 .8 6.8 4.1H1.2zM4 9.2 6.8 5.9H1.2z'/%3E%3C/svg%3E");
}
body.se-body .table thead th a[data-sort]{color:var(--muted);text-decoration:none;cursor:pointer;border-radius:4px;transition:color .12s}
body.se-body .table thead th a[data-sort]:hover,body.se-body .table thead th a[data-sort]:focus-visible{color:var(--ink);text-decoration:none}
body.se-body .table thead th a[data-sort] .kv-sort-icon{display:none}
body.se-body .table thead th a[data-sort]::after,
body.se-body .table thead th.kv-align-right a[data-sort]::before,body.se-body .table thead th.text-right a[data-sort]::before{content:"";display:inline-block;vertical-align:-1px;width:7px;height:9px;margin:0 0 0 5px;padding:0;position:static;top:auto;font:inherit;line-height:1;background:currentColor;-webkit-mask:var(--se-sort-due) center/contain no-repeat;mask:var(--se-sort-due) center/contain no-repeat;opacity:0;transition:opacity .12s}
body.se-body .table thead th.kv-align-right a[data-sort]::before,body.se-body .table thead th.text-right a[data-sort]::before{margin:0 5px 0 0}
body.se-body .table thead th.kv-align-right a[data-sort]::after,body.se-body .table thead th.text-right a[data-sort]::after{content:none;display:none}
body.se-body .table thead th:hover a[data-sort]::after,body.se-body .table thead th:hover a[data-sort]::before,
body.se-body .table thead th a[data-sort]:focus-visible::after,body.se-body .table thead th a[data-sort]:focus-visible::before{opacity:.45}
body.se-body .table thead th a[data-sort].asc,body.se-body .table thead th a[data-sort].desc{color:var(--ink)}
body.se-body .table thead th a[data-sort].asc::after,body.se-body .table thead th a[data-sort].asc::before{-webkit-mask-image:var(--se-sort-su);mask-image:var(--se-sort-su);opacity:.9}
body.se-body .table thead th a[data-sort].desc::after,body.se-body .table thead th a[data-sort].desc::before{-webkit-mask-image:var(--se-sort-giu);mask-image:var(--se-sort-giu);opacity:.9}
@media (hover:none){body.se-body .table thead th a[data-sort]:not(.asc):not(.desc)::after,body.se-body .table thead th a[data-sort]:not(.asc):not(.desc)::before{opacity:.3}}


/* ============================================================================
   QUESTIONARI (01/10/2026) — editor delle domande (.qe), linguetta della scheda
   evento (.qz-stampa), pagine pubbliche di chi risponde (.qz). Colori solo dai
   token; sul telefono una colonna.
   ========================================================================== */

/* --- editor --- */
body.se-body .qe .qe-dom .hd{gap:6px}
body.se-body .qe .qe-dom .hd h2{font-size:15px}
body.se-body .qe .qe-dom .hd .qe-n{color:var(--brand)}
body.se-body .qe .qe-tipo{max-width:170px;width:auto}
body.se-body .qe .qe-ris{align-items:center;flex-wrap:nowrap}
body.se-body .qe .qe-ris .qe-corretta{width:18px;height:18px;flex:0 0 18px;accent-color:var(--ok);cursor:pointer}
body.se-body .qe .qe-ris .qe-lettera{flex:0 0 1.4em;text-align:center;color:var(--muted);font-weight:600}
body.se-body .qe .qe-ris .qe-ris-testo{flex:1 1 auto;min-width:0;width:auto}
body.se-body .qe .qe-ris:has(.qe-corretta:checked) .qe-lettera{color:var(--ok)}
body.se-body .qe .qe-ris:has(.qe-corretta:checked) .qe-ris-testo{border-color:var(--ok)}
body.se-body .qe .qe-piede{flex-wrap:wrap;align-items:center}
body.se-body .qe-chk,body.se-body .qz-chk{display:inline-flex;align-items:center;gap:8px;cursor:pointer;font-weight:500}
body.se-body .qe-chk input,body.se-body .qz-chk input{width:16px;height:16px;margin:0;accent-color:var(--brand)}
body.se-body .qe textarea.mono{font-family:var(--f-mono, monospace);font-size:12.5px}
body.se-body .se-row.wrap{flex-wrap:wrap}
body.se-body .qz-stampa .field{max-width:none}

/* --- barre orizzontali dei risultati (.hb, come nel mockup) --- */
body.se-body .hb{display:grid;gap:4px}
body.se-body .hb-r{display:grid;grid-template-columns:minmax(120px,38%) 1fr auto;gap:10px;align-items:center;font-size:13px}
body.se-body .hb-b{height:12px;background:var(--surface-3);border-radius:6px;overflow:hidden}
body.se-body .hb-b i{display:block;height:100%;background:var(--s1);border-radius:6px}
body.se-body .hb-v{color:var(--muted);white-space:nowrap}
@media (max-width:560px){body.se-body .hb-r{grid-template-columns:1fr auto;grid-template-areas:"l v" "b b"}body.se-body .hb-l{grid-area:l}body.se-body .hb-v{grid-area:v}body.se-body .hb-b{grid-area:b}}

/* --- pagine pubbliche --- */
body.se-quiz-body{background:var(--bg);margin:0}
.qz{max-width:720px;margin:0 auto;padding:16px 16px 48px;color:var(--ink);font-family:var(--f-body)}
.qz-testa{display:flex;align-items:center;gap:14px;padding:6px 0 14px;border-bottom:1px solid var(--line)}
.qz-logo{max-height:48px;max-width:180px;object-fit:contain}
.qz-ente{font-size:13px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.qz-evento{margin:22px 0 10px}
.qz-kicker{font-size:12px;color:var(--brand);text-transform:uppercase;letter-spacing:.06em;font-weight:600}
.qz-evento h1{font-family:var(--f-display);font-size:clamp(22px,4vw,30px);line-height:1.15;margin:4px 0 4px}
.qz-date{color:var(--muted);font-size:14px}
.qz-titolo{font-size:19px;margin:18px 0 6px;font-weight:650}
.qz-istruzioni,.qz-chi{font-size:15px;color:var(--ink-2);line-height:1.5}
.qz-form{display:grid;gap:14px;margin-top:10px}
.qz-dom{border:1px solid var(--line);background:var(--surface);border-radius:14px;padding:14px 16px;margin:0;min-width:0}
.qz-dom.manca{border-color:var(--bad);box-shadow:0 0 0 3px color-mix(in srgb,var(--bad) 18%,transparent)}
.qz-dom legend{font-size:17px;font-weight:600;line-height:1.35;padding:0;margin-bottom:10px;float:left;width:100%}
.qz-dom legend .n{color:var(--brand);margin-right:4px}
.qz-dom legend .fac{font-weight:400;color:var(--muted);font-size:13px}
.qz-dom + .qz-dom{margin-top:0}
.qz-opzioni{display:grid;gap:8px;clear:both}
.qz-op{display:flex;align-items:flex-start;gap:12px;padding:12px 14px;border:1.5px solid var(--line-2);border-radius:12px;cursor:pointer;font-size:16px;line-height:1.35;background:var(--surface-2)}
.qz-op:hover{border-color:var(--brand)}
.qz-op.on{border-color:var(--brand);background:color-mix(in srgb,var(--brand) 10%,var(--surface))}
.qz-op input{position:absolute;opacity:0;width:0;height:0}
.qz-op .l{flex:0 0 28px;height:28px;border-radius:50%;border:1.5px solid var(--line-2);display:grid;place-items:center;font-weight:700;font-size:13px;color:var(--muted);background:var(--surface)}
.qz-op.on .l{background:var(--brand);border-color:var(--brand);color:#fff}
.qz-op .t{flex:1 1 auto;min-width:0}
.qz-scala{display:flex;gap:8px;clear:both;flex-wrap:wrap}
.qz-sc{flex:1 1 0;min-width:52px;display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 4px;border:1.5px solid var(--line-2);border-radius:12px;cursor:pointer;background:var(--surface-2)}
.qz-sc input{position:absolute;opacity:0;width:0;height:0}
.qz-sc .v{font-size:20px;font-weight:700}
.qz-sc .cap{font-size:11px;color:var(--muted);text-align:center;line-height:1.2}
.qz-sc.on{border-color:var(--brand);background:color-mix(in srgb,var(--brand) 10%,var(--surface))}
.qz-sc.on .v{color:var(--brand)}
.qz-dom textarea.se-input{width:100%;clear:both;font-size:16px}
.qz-invio{display:grid;gap:8px;justify-items:center;padding:10px 0 20px}
.qz .se-btn.lg{font-size:17px;padding:14px 28px;border-radius:12px}
.qz-esito{border-radius:16px;padding:26px 20px;text-align:center;margin:18px 0;border:1px solid var(--line);background:var(--surface)}
.qz-esito.ok{border-color:var(--ok)}
.qz-esito.bad{border-color:var(--bad)}
.qz-esito.warn{border-color:var(--warn)}
.qz-esito-n{font-family:var(--f-display);font-size:56px;line-height:1;font-weight:750}
.qz-esito-n span{font-size:26px;color:var(--muted)}
.qz-esito-t{font-size:22px;font-weight:650;margin-top:8px}
.qz-esito.ok .qz-esito-t{color:var(--ok)}
.qz-esito.bad .qz-esito-t{color:var(--bad)}
.qz-esito-s{color:var(--muted);margin-top:4px}
.qz-piede{margin-top:26px;font-size:12px;color:var(--muted);text-align:center}
.qz .note{display:flex;gap:10px;padding:12px 14px;border-radius:12px;border:1px solid var(--line);background:var(--surface);margin:10px 0}
.qz .note.bad{border-color:var(--bad)}
.qz .note.info{border-color:var(--info)}

/* Prima nota (cont-pn/_form_primanota.php) — il resto e' in se-ui.css (.pn-*) */
/* la descrizione della riga (3nt1): sotto conti ed etichette, larga quanto la riga */
.pn-nota{grid-column:1/4}
@media (max-width:760px){.pn-nota{grid-column:1/-1}}
/* registrazione di sola consultazione (NO_UPDDEL): campi fermi, ricerche e Select2 spenti */
body.se-body #dynamic-form.pn-sola-lettura input.form-control,body.se-body #dynamic-form.pn-sola-lettura select,body.se-body #dynamic-form.pn-sola-lettura textarea{background:var(--surface-2);pointer-events:none}
#dynamic-form.pn-sola-lettura [role="modal-remote"],#dynamic-form.pn-sola-lettura .input-group-append{pointer-events:none}
#dynamic-form.pn-sola-lettura .select2-container{pointer-events:none;opacity:.7}

/* =========================================================================
   AVVISI AUTOMATICI (Comunicazioni › Avvisi automatici, 08/10/2026; stessa vista in SmartEvent e 3nt1)
   Per ogni avviso: il messaggio e a chi, quando parte, l'interruttore (.toggle del design system).
   Sul telefono: messaggio e interruttore sulla stessa riga, «quando parte» sotto.
   ========================================================================= */
.avv-nota-top{margin-bottom:14px}
.avv-gruppo{margin-bottom:16px}
.avv-lista{display:flex;flex-direction:column}
.avv-riga{display:grid;grid-template-columns:minmax(220px,1.1fr) minmax(240px,1.6fr) 170px;gap:6px 22px;align-items:start;padding:12px 16px;border-top:1px solid var(--line)}
.avv-riga:first-child{border-top:0}
.avv-t{font-weight:600;line-height:1.35;color:var(--ink)}
.avv-t a{color:inherit}
.avv-t a:hover{color:var(--brand-ink);text-decoration:underline}
.avv-t .pill{margin-left:6px;vertical-align:1px}
.avv-riga.spento .avv-t,.avv-riga.spento .avv-t a{color:var(--muted)}
.avv-chi{margin-top:3px;font-size:12.5px;line-height:1.45;color:var(--muted)}
.avv-chi+.avv-chi{margin-top:0}
.avv-quando{font-size:13px;line-height:1.45;color:var(--ink-2)}
.avv-et{display:block;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-bottom:2px}
.avv-chi .avv-et{display:inline;font-size:inherit;font-weight:600;text-transform:none;letter-spacing:0;margin:0 4px 0 0}
.avv-int{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}
.avv-int form{display:flex;align-items:center;gap:8px;margin:0}
.avv-stato{font-size:13px;color:var(--muted);min-width:56px}
.avv-riga:not(.spento) .avv-stato{color:var(--ok);font-weight:600}
.toggle[aria-disabled="true"]{opacity:.45;cursor:not-allowed}
.toggle:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.avv-nota{flex-basis:100%;text-align:right;font-size:12px;color:var(--muted)}
.avv-piede{margin-top:6px}
@media (max-width:760px){
  .avv-riga{grid-template-columns:1fr auto;gap:8px 12px;padding:12px}
  .avv-msg{grid-column:1;grid-row:1}
  .avv-int{grid-column:2;grid-row:1}
  .avv-quando{grid-column:1 / -1;grid-row:2}
  .avv-stato{min-width:0}
  .avv-nota{text-align:left}
}
