/* =====================================================================
   Revilex — design system
   Direzione: "Istituzionale Navy". Bianco freddo, inchiostro navy,
   accento ottone sobrio, IBM Plex Sans + IBM Plex Mono (font locali).
   Un solo file. Nessuna dipendenza esterna (font ospitati in locale — GDPR).
   ATTENZIONE: nomi di classi e variabili sono usati dai template Django
   e da molti style inline: NON rinominarli, si possono solo evolvere i valori.
   ===================================================================== */

/* --- Font locali (in static/fonts/, serviti da WhiteNoise) --- */
@font-face{font-family:"IBM Plex Sans";src:url("../fonts/plex-sans-400.0ceb759015a6.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"IBM Plex Sans";src:url("../fonts/plex-sans-500.767677e47513.woff2") format("woff2");font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:"IBM Plex Sans";src:url("../fonts/plex-sans-600.e78568807d10.woff2") format("woff2");font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:"IBM Plex Sans";src:url("../fonts/plex-sans-700.f9b6356e32a9.woff2") format("woff2");font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:"IBM Plex Mono";src:url("../fonts/plex-mono-400.4cc7b4398540.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"IBM Plex Mono";src:url("../fonts/plex-mono-500.bc5ccab82723.woff2") format("woff2");font-weight:500;font-style:normal;font-display:swap}

:root{
  /* --- Tipografia --- */
  --sans:"IBM Plex Sans",system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  --serif:var(--sans);            /* scelta di design: tutto senza grazie */
  --mono:"IBM Plex Mono",ui-monospace,"SF Mono",Menlo,Consolas,monospace;

  /* --- Palette: Istituzionale Navy --- */
  --bg:#f4f6f9;
  --surface:#ffffff;
  --surface-2:#f7f9fb;
  --border:#e6e9ee;
  --border-strong:#d5dae1;
  --text:#0d2137;
  --text-2:#3a4657;
  --muted:#7b8798;

  --primary:#0d2137;
  --primary-600:#163a5e;
  --primary-50:#eef2f7;
  --primary-100:#dce4ee;

  --brass:#b48a4c;
  --brass-2:#d7b678;

  --success:#1a7a45; --success-bg:#e4f1e9;
  --warning:#8a5a12; --warning-bg:#f6ead2;
  --danger:#a8332a;  --danger-bg:#f6e2df;
  --info:#1e4e8c;    --info-bg:#e5edf6;
  --violet:#4a3a86;  --violet-bg:#e7e4f2;
  --slate:#48505d;   --slate-bg:#e9ecf0;

  --sidebar:#0d2137;
  --sidebar-2:#163a5e;
  --sidebar-text:#aebccf;
  --sidebar-muted:#71829a;

  --r:10px; --r-md:8px; --r-sm:6px;
  --sh-sm:0 1px 2px rgba(13,33,55,.05);
  --sh:0 1px 2px rgba(13,33,55,.05), 0 4px 14px -10px rgba(13,33,55,.16);
  --sh-lg:0 18px 46px -24px rgba(13,33,55,.26);
  --ring:0 0 0 3px var(--primary-100);

  /* Alias retro-compatibili (usati negli style inline dei template) */
  --blu:var(--primary); --blu2:var(--primary); --blu-bg:var(--primary-50);
  --grigio:var(--muted); --bordo:var(--border); --sfondo:var(--bg);
  --verde:var(--success); --verde-bg:var(--success-bg);
  --giallo:var(--warning); --giallo-bg:var(--warning-bg);
  --rosso:var(--danger); --testo:var(--text); --bianco:#fff;
  --ombra:var(--sh);
}

*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;
  font-family:var(--sans);
  color:var(--text);
  background-color:var(--bg);
  font-size:14.5px; line-height:1.6;
  -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
}
a{color:var(--info);text-decoration:none;transition:color .14s}
a:hover{color:var(--primary-600)}
h1,h2,h3{font-family:var(--serif);color:var(--text);margin:0 0 .4em;font-weight:600;letter-spacing:-.015em;line-height:1.2}
h1{font-size:28px} h2{font-size:21px}
h3{font-size:16px;font-weight:600;letter-spacing:-.01em}
svg{display:block}
b,strong{font-weight:600}
code,.codice{font-variant-numeric:tabular-nums}
::selection{background:var(--primary-100);color:var(--primary-600)}
:focus-visible{outline:2px solid var(--info);outline-offset:2px;border-radius:3px}
.rl-accent{color:var(--info)}

/* Icone inline (sostituiscono le vecchie emoji): ereditano il colore del testo */
.rl-ic{width:1.05em;height:1.05em;display:inline-block;vertical-align:-.15em;flex:none;margin-right:.32em}
.btn .rl-ic,.nav-item .rl-ic,.chip-fase .rl-ic,.tag .rl-ic{margin-right:0}

/* Numeri tabulari e in monospazio dove contano (strumento pieno di cifre) */
.stat .num,.badge-anno,table.elenco td,table.elenco th,
.num,input,.mono{font-variant-numeric:tabular-nums}
.stat .num,.badge-anno,.num,.mono{font-family:var(--mono)}

/* ============ LAYOUT CON SIDEBAR ============ */
body.has-sidebar{min-height:100vh}

.sidebar{
  width:252px; flex:0 0 252px; color:var(--sidebar-text);
  background:var(--sidebar);
  display:flex; flex-direction:column; padding:22px 15px;
  position:fixed; top:0; left:0; height:100vh;
  box-shadow:inset -1px 0 0 rgba(255,255,255,.05), 1px 0 24px -20px rgba(13,33,55,.6);
}
.brand{display:flex;align-items:center;gap:12px;padding:6px 8px 24px}
.brand-mark{
  width:34px;height:34px;border-radius:8px;flex:0 0 auto;display:block;
  color:#fff;font-weight:700;font-size:18px;
  display:flex;align-items:center;justify-content:center;background:var(--sidebar-2);
}
.brand-mark svg{width:34px;height:34px;display:block}
.brand-name{font-size:19px;font-weight:600;color:#fff;letter-spacing:-.01em}
.brand-name span{color:#fff}

.side-nav{display:flex;flex-direction:column;gap:2px;margin-top:6px}
.nav-item{
  display:flex;align-items:center;gap:11px;
  padding:10px 12px;border-radius:var(--r-sm);
  color:var(--sidebar-text);font-weight:500;font-size:13.5px;
  transition:background .16s,color .16s;
}
.nav-item svg{width:18px;height:18px;flex:0 0 auto;opacity:.7;transition:opacity .16s}
.nav-item:hover{background:var(--sidebar-2);color:#fff;text-decoration:none}
.nav-item:hover svg{opacity:1}
.nav-item.attiva{background:var(--sidebar-2);color:#fff;box-shadow:inset 3px 0 0 var(--brass)}
.nav-item.attiva svg{opacity:1}

.side-foot{margin-top:auto;padding-top:16px;border-top:1px solid rgba(255,255,255,.08)}
.user-chip{display:flex;align-items:center;gap:10px;padding:6px 6px 12px}
.avatar{
  width:36px;height:36px;border-radius:50%;flex:0 0 auto;
  background:var(--sidebar-2);color:#dbe6f2;
  display:flex;align-items:center;justify-content:center;font-weight:600;
}
.user-meta{min-width:0}
.user-name{color:#fff;font-weight:600;font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.user-role{color:var(--sidebar-muted);font-size:12px}
.logout-btn{
  width:100%;background:transparent;border:1px solid rgba(255,255,255,.14);
  color:var(--sidebar-text);padding:8px;border-radius:var(--r-sm);
  cursor:pointer;font:inherit;font-size:13px;font-weight:500;transition:.16s;
}
.logout-btn:hover{background:rgba(255,255,255,.08);color:#fff;border-color:rgba(255,255,255,.28)}

.main{min-width:0;overflow-x:clip}
body.has-sidebar .main{margin-left:252px}  /* lascia spazio alla sidebar fissa (252px) */
.content{max-width:1600px;margin:0 auto;padding:30px 48px 64px;animation:pagina .4s cubic-bezier(.22,1,.36,1)}
@keyframes pagina{from{opacity:0}to{opacity:1}}

/* ============ LAYOUT AUTENTICAZIONE (login) ============ */
body.auth-layout{
  display:flex;align-items:center;justify-content:center;min-height:100vh;padding:24px;
  background:radial-gradient(1100px 620px at 50% -12%, #1c3e63 0%, var(--sidebar) 52%, #091626 100%);
}
body.auth-layout .main{width:auto;overflow:visible}
body.auth-layout .content{max-width:none;margin:0;padding:0}
.login-box{
  width:404px;max-width:92vw;background:var(--surface);
  padding:42px 38px 26px;border-radius:14px;
  box-shadow:0 26px 60px -20px rgba(4,12,24,.55), 0 2px 8px rgba(4,12,24,.2);
  border:1px solid rgba(255,255,255,.06);position:relative;overflow:hidden;
  animation:saliGiu .5s cubic-bezier(.22,1,.36,1);
}
.login-box::before{content:"";position:absolute;left:0;right:0;top:0;height:3px;
  background:linear-gradient(90deg,var(--primary),var(--brass))}
.login-logo{display:flex;flex-direction:column;align-items:center;gap:0;margin-bottom:28px;text-align:center}
.login-tile{display:block;margin-bottom:12px}
.login-tile svg{width:54px;height:54px;display:block}
.login-logo .wm{font-family:var(--serif);font-size:27px;font-weight:600;color:var(--text);letter-spacing:-.01em;line-height:1}
.login-logo .sub{font-size:13px;color:var(--muted);margin-top:5px}
.login-foot{margin-top:22px;padding-top:16px;border-top:1px solid var(--border);
  text-align:center;font-size:12px;color:var(--muted)}

/* ============ LANDING PAGE (vetrina pubblica) ============ */
body.lp{background:var(--surface);color:var(--text)}
.lp-nav{position:sticky;top:0;z-index:30;display:flex;align-items:center;justify-content:space-between;
  padding:14px 32px;background:rgba(255,255,255,.9);backdrop-filter:blur(8px);border-bottom:1px solid var(--border)}
.lp-brand{display:flex;align-items:center;gap:11px;color:var(--text);font-weight:600}
.lp-brand:hover{text-decoration:none}
.lp-brand .brand-mark svg{width:32px;height:32px;display:block}
.lp-wm{font-family:var(--serif);font-size:20px;font-weight:600;letter-spacing:-.01em;color:var(--text)}
.lp-nav-links{display:flex;align-items:center;gap:20px}
.lp-nav-links a{color:var(--text-2);font-weight:500;font-size:14px}
.lp-nav-links a.btn{color:#fff}

.lp-hero{background:radial-gradient(1100px 620px at 50% -20%, #1c3e63 0%, var(--sidebar) 55%, #091626 100%);
  color:#fff;padding:96px 24px 104px;text-align:center}
.lp-hero-in{max-width:760px;margin:0 auto}
.lp-eyebrow{display:inline-block;font-size:12px;text-transform:uppercase;letter-spacing:.12em;
  color:#d7b678;font-weight:600;margin-bottom:18px}
.lp-hero h1{font-family:var(--serif);font-size:clamp(34px,5vw,52px);font-weight:600;line-height:1.1;
  letter-spacing:-.02em;margin:0 0 18px;color:#fff}
.lp-hero p{font-size:clamp(16px,2vw,19px);color:rgba(255,255,255,.82);line-height:1.6;margin:0 auto 30px;max-width:620px}
.lp-cta{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}
.lp-cta .btn{padding:12px 26px;font-size:15px}
.btn.ghost{background:transparent;border-color:rgba(255,255,255,.35);color:#fff}
.btn.ghost:hover{background:rgba(255,255,255,.1);border-color:#fff;color:#fff}

.lp-features{max-width:1080px;margin:0 auto;padding:72px 24px}
.lp-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:20px}
.lp-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);
  padding:26px 24px;box-shadow:var(--sh-sm);transition:transform .18s,box-shadow .18s}
.lp-card:hover{transform:translateY(-3px);box-shadow:var(--sh-lg)}
.lp-ic{width:26px;height:26px;color:var(--primary);margin-bottom:14px}
.lp-card h3{font-size:17px;font-weight:600;margin:0 0 8px;color:var(--text)}
.lp-card p{font-size:14px;color:var(--text-2);line-height:1.55;margin:0}

/* Carosello schermate */
.lp-shots{background:#fff;border-top:1px solid var(--border)}
.lp-shots-in{max-width:1120px;margin:0 auto;padding:66px 24px 56px}
.lp-shots-h{font-family:var(--serif);font-size:28px;font-weight:600;text-align:center;margin:0 0 6px;color:var(--text);letter-spacing:-.01em}
.lp-shots-sub{text-align:center;color:var(--text-2);margin:0 0 28px}
.lp-track{display:flex;gap:22px;overflow-x:auto;scroll-snap-type:x mandatory;padding:6px 4px 22px;scrollbar-width:thin}
.lp-slide{flex:0 0 min(760px,86%);scroll-snap-align:center}
.lp-frame{border:1px solid var(--border);border-radius:12px;overflow:hidden;box-shadow:var(--sh-lg);background:#fff}
.lp-frame-bar{display:flex;align-items:center;gap:7px;padding:10px 14px;background:var(--surface-2);border-bottom:1px solid var(--border)}
.lp-fdot{width:10px;height:10px;border-radius:50%;background:#cfd6df}
.lp-furl{margin-left:12px;height:16px;flex:1;max-width:300px;background:#e4e9ef;border-radius:8px}
.lp-shot{display:block;line-height:0}
.lp-shot svg{display:block;width:100%;height:auto}
.lp-cap{text-align:center;margin-top:14px;font-size:14px;color:var(--text-2);font-weight:500}
.lp-shots-hint{text-align:center;color:var(--muted);font-size:12.5px;margin-top:6px}

.lp-strip{background:var(--primary-50);border-top:1px solid var(--primary-100);border-bottom:1px solid var(--primary-100)}
.lp-strip-in{max-width:1080px;margin:0 auto;padding:22px 24px;display:flex;align-items:center;gap:12px;
  justify-content:center;text-align:center;color:var(--text-2);font-size:14px;font-weight:500}
.lp-strip .lp-ic{color:var(--success);margin:0;flex:none}

.lp-foot{background:var(--sidebar);color:#fff;padding:30px 32px;display:flex;align-items:center;
  justify-content:space-between;gap:20px;flex-wrap:wrap}
.lp-foot .lp-brand,.lp-foot .lp-wm{color:#fff}
.lp-foot .brand-mark svg{width:34px;height:34px}
.lp-foot-sub{font-size:12.5px;color:var(--sidebar-muted)}

.lp-demo{background:var(--surface-2);border-top:1px solid var(--border)}
.lp-demo-in{max-width:600px;margin:0 auto;padding:66px 24px;text-align:center}
.lp-demo h2{font-family:var(--serif);font-size:28px;font-weight:600;margin:0 0 10px;color:var(--text);letter-spacing:-.01em}
.lp-demo-in > p{color:var(--text-2);margin:0 0 24px;line-height:1.6}
.lp-form{display:flex;flex-direction:column;gap:12px;text-align:left}
.lp-form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.lp-form input,.lp-form textarea{width:100%;padding:11px 13px;font-size:14px;font-family:inherit;
  border:1px solid var(--border-strong);border-radius:var(--r-sm);background:var(--surface);color:var(--text)}
.lp-form input:focus,.lp-form textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-100)}
.lp-form textarea{resize:vertical}
.lp-form .btn{align-self:center;padding:12px 30px;margin-top:4px}
.lp-hp{position:absolute!important;left:-9999px;width:1px;height:1px;opacity:0}
.lp-demo-ok{background:var(--success-bg);color:var(--success);border:1px solid var(--success);
  border-radius:var(--r-md);padding:16px 18px;font-weight:500}
.lp-demo-alt{margin-top:18px;font-size:13px;color:var(--muted)}
.lp-demo-alt a{color:var(--primary-600);font-weight:600}

@media(max-width:600px){
  .lp-nav{padding:12px 18px}
  .lp-nav-links a:not(.btn){display:none}
  .lp-hero{padding:64px 20px 72px}
  .lp-features{padding:48px 18px}
  .lp-form-row{grid-template-columns:1fr}
}

/* ============ INTESTAZIONI ============ */
.fasc-head{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:12px;
  padding-bottom:11px;border-bottom:1px solid var(--border);position:relative}
.fasc-head::after{content:"";position:absolute;left:0;bottom:-1px;width:52px;height:2px;
  background:var(--brass);border-radius:2px}
.fasc-head .titolo{font-family:var(--serif);font-size:25px;font-weight:600;color:var(--text);letter-spacing:-.02em}
.badge-anno{background:var(--primary-50);color:var(--primary-600);border:1px solid var(--primary-100);
  border-radius:6px;padding:3px 11px;font-weight:600;font-size:13px}

/* ============ CARD ============ */
.card{
  background:var(--surface);border:1px solid var(--border);border-radius:var(--r);
  box-shadow:var(--sh);padding:24px;margin-bottom:20px;
}

/* ============ STAT ============ */
.griglia-stat{display:grid;grid-template-columns:repeat(auto-fit,minmax(184px,1fr));gap:18px;margin-bottom:26px}
.stat{
  background:var(--surface);border:1px solid var(--border);border-radius:var(--r);
  padding:20px 22px;box-shadow:var(--sh);position:relative;overflow:hidden;
  transition:transform .18s,box-shadow .18s;
  animation:saliGiu .5s cubic-bezier(.22,1,.36,1) backwards;
}
.stat:hover{transform:translateY(-2px);box-shadow:var(--sh-lg)}
.stat::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--primary)}
.stat:nth-child(2){animation-delay:.05s}
.stat:nth-child(3){animation-delay:.1s}
.stat:nth-child(4){animation-delay:.15s}
.stat:nth-child(5){animation-delay:.2s}
.stat .num{font-size:30px;font-weight:600;color:var(--text);letter-spacing:-.02em;line-height:1.1}
.stat .lab{color:var(--muted);text-transform:uppercase;font-size:10.5px;letter-spacing:.7px;font-weight:600;margin-top:5px}

/* Box significatività: intestazione | tabella OM/PM/ECT × Definitiva/Preliminare | rivedi */
.sig-strip{display:flex;align-items:stretch;margin-bottom:0;padding:0;width:fit-content;max-width:100%;
  background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--brass);
  border-radius:var(--r-md);box-shadow:var(--sh-sm);text-decoration:none;color:inherit;
  transition:box-shadow .15s,border-color .15s;overflow:hidden}
.sig-strip:hover{box-shadow:var(--sh);border-color:var(--border-strong)}
.sig-strip .ss-title{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:6px;
  flex:0 0 auto;padding:10px 18px;border-right:1px solid var(--border);
  font-weight:600;font-size:13.5px;color:var(--text)}
.sig-strip .ss-name{white-space:nowrap}
.sig-strip .ss-table{display:grid;grid-template-columns:auto auto auto auto;gap:3px 18px;align-items:baseline;
  flex:0 0 auto;padding:9px 18px}
.sig-strip .ss-th{font-size:9.5px;letter-spacing:.4px;text-transform:uppercase;color:var(--muted);font-weight:700;
  text-align:right;white-space:nowrap;padding-bottom:2px}
.sig-strip .ss-th:first-child{text-align:left}
.sig-strip .ss-rlab{font-size:11.5px;font-weight:600;color:var(--text);text-align:left;white-space:nowrap;padding-right:8px}
.sig-strip .ss-num{font-family:var(--mono);font-size:14.5px;font-weight:600;color:var(--text);text-align:right;
  line-height:1.4;white-space:nowrap}
.sig-strip .ss-mut{color:var(--muted);font-weight:500}
.sig-strip .ss-num.ss-mut{font-size:12.5px}
.sig-strip .ss-go{display:flex;align-items:center;flex:0 0 auto;padding:12px 18px;border-left:1px solid var(--border);
  color:var(--info);font-size:12.5px;font-weight:600;white-space:nowrap}
.sig-strip.empty{border-left-color:var(--border-strong);border-style:dashed;color:var(--muted);font-weight:500;
  display:block;padding:13px 20px}
@media(max-width:820px){.sig-strip{flex-wrap:wrap}.sig-strip .ss-title{border-right:none}
  .sig-strip .ss-go{border-left:none}}

/* Tabella di confronto significatività preliminare/definitiva */
.sig-cmp{width:100%;border-collapse:collapse;font-size:14px}
.sig-cmp th{text-align:right;padding:8px 10px;font-size:10.5px;text-transform:uppercase;letter-spacing:.6px;
  color:var(--muted);border-bottom:1px solid var(--border);font-weight:600}
.sig-cmp th:first-child{text-align:left}
.sig-cmp td{padding:9px 10px;border-bottom:1px solid var(--border);text-align:right;font-family:var(--mono)}
.sig-cmp td:first-child{text-align:left;font-family:var(--sans);color:var(--text-2)}
.sig-cmp .now{font-weight:600;color:var(--text)}
.sig-cmp .diff-pos{color:var(--warning)}
.sig-cmp .diff-neg{color:var(--danger)}

/* Matrice di scelta del parametro di significatività (benchmark) */
.bench-matrix{width:100%;border-collapse:collapse;font-size:14px;margin-top:2px}
.bench-matrix tr{border-bottom:1px solid var(--border);cursor:pointer;transition:background .1s}
.bench-matrix tr:last-child{border-bottom:none}
.bench-matrix tr:hover{background:var(--surface-2)}
.bench-matrix tr.sel{background:var(--primary-50)}
.bench-matrix tr.nd{opacity:.5;cursor:default}
.bench-matrix td{padding:9px 10px}
.bench-matrix td.rd{width:34px;text-align:center}
.bench-matrix td.nm{color:var(--text)}
.bench-matrix td.vl{text-align:right;font-family:var(--mono);font-weight:600;color:var(--text);white-space:nowrap}

@keyframes saliGiu{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}

/* ============ BOTTONI ============ */
.btn{
  display:inline-flex;align-items:center;gap:7px;
  background:var(--primary);color:#fff;border:1px solid var(--primary);
  border-radius:var(--r-sm);padding:9px 17px;font-size:14px;font-weight:600;
  cursor:pointer;transition:.16s;line-height:1.2;
}
.btn:hover{background:var(--primary-600);border-color:var(--primary-600);color:#fff;text-decoration:none;
  box-shadow:var(--sh-sm)}
.btn:active{transform:translateY(0)}
.btn.sec{background:var(--surface);color:var(--text-2);border-color:var(--border-strong)}
.btn.sec:hover{background:var(--surface-2);color:var(--text);border-color:var(--muted)}

/* ============ TOOLBAR DEL FASCICOLO + MENU A DISCESA ============ */
.fasc-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:-4px 0 14px}
.fasc-toolbar .btn{font-size:13px;padding:7px 13px}
.pill{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;
  padding:0 5px;border-radius:9px;background:var(--warning);color:#fff;font-size:11px;font-weight:700;margin-left:6px}
.menu{position:relative}
.menu>summary{list-style:none;cursor:pointer}
.menu>summary::-webkit-details-marker{display:none}
.menu>summary::marker{content:""}
.menu[open]>summary.btn.sec{background:var(--surface-2);color:var(--text);border-color:var(--muted)}
.menu-pane{position:absolute;right:0;top:calc(100% + 6px);z-index:30;min-width:214px;
  background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);
  box-shadow:var(--sh-lg);padding:6px;display:flex;flex-direction:column;gap:1px}
.menu-pane a{display:flex;align-items:center;gap:10px;padding:8px 11px;border-radius:var(--r-sm);
  color:var(--text-2);font-size:13.5px;font-weight:500;white-space:nowrap}
.menu-pane a:hover{background:var(--surface-2);color:var(--text);text-decoration:none}
.menu-pane a .rl-ic{opacity:.7;margin-right:0}
.menu-pane .menu-sec{font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);
  font-weight:700;padding:8px 11px 3px;margin-top:3px;border-top:1px solid var(--border)}
.menu-pane .menu-sec:first-child{border-top:none;margin-top:2px}
/* I menù a gruppo dell'hub stanno a sinistra: apri i pannelli verso destra
   (non a ritroso sotto la sidebar). name="hub-menu" li rende esclusivi. */
.fasc-toolbar .menu-pane{left:0;right:auto}

/* ============ CHIP FILTRO (dashboard) ============ */
.chip-fasi{display:flex;gap:8px;flex-wrap:wrap;margin:4px 0 16px}
.chip-fase{
  display:inline-flex;align-items:center;gap:6px;
  border:1px solid var(--border-strong);background:var(--surface);color:var(--text-2);
  border-radius:999px;padding:6px 14px;font-size:13px;cursor:pointer;font-weight:500;
  font-family:inherit;transition:.15s;
}
.chip-fase .perc{margin-left:0}
.chip-fase:hover{border-color:var(--muted);color:var(--text);background:var(--surface-2)}
.chip-fase.attivo{background:var(--primary);border-color:var(--primary);color:#fff}
.chip-fase.attivo .perc{color:rgba(255,255,255,.85)}

/* ============ TABELLA ELENCO ============ */
table.elenco{width:100%;border-collapse:collapse;background:var(--surface)}
table.elenco th,table.elenco td{padding:12px 16px;text-align:left;border-bottom:1px solid var(--border)}
table.elenco th{background:var(--surface-2);color:var(--muted);font-size:10.5px;text-transform:uppercase;
  letter-spacing:.06em;font-weight:600}
table.elenco tbody tr{transition:background .13s}
table.elenco tbody tr:hover td{background:var(--primary-50)}
table.elenco tr:last-child td{border-bottom:none}
/* Tabella densa scrollabile (es. revisione analitica): niente numeri tagliati */
.tbl-scroll{overflow-x:auto}
.tbl-scroll table.elenco{width:auto;min-width:100%}
.tbl-scroll table.elenco th,.tbl-scroll table.elenco td{padding:8px 10px}
table.elenco input.num{width:116px}

/* ============ AVANZAMENTO ============ */
.progress{background:var(--primary-100);border-radius:999px;height:7px;width:150px;overflow:hidden;display:inline-block;
  vertical-align:middle}
.progress>i{display:block;height:100%;border-radius:999px;
  background:var(--info);transition:width .6s cubic-bezier(.4,0,.2,1)}
.progress.zero>i{background:#c2c8d0}
.perc{font-size:12.5px;color:var(--muted);margin-left:8px;font-weight:500}

/* ============ TAB DELLE FASI (legacy) ============ */
.tabs{display:flex;gap:4px;flex-wrap:wrap;background:var(--surface-2);padding:5px;border-radius:var(--r-md);
  border:1px solid var(--border);margin:20px 0}
.tabs a{padding:8px 14px;border-radius:var(--r-sm);color:var(--text-2);font-weight:600;font-size:13.5px;transition:.16s}
.tabs a small{display:block;font-weight:500;font-size:11px;opacity:.8}
.tabs a .mini{color:inherit}
.tabs a:hover{background:var(--surface);color:var(--text);text-decoration:none}
.tabs a.attiva{background:var(--primary);color:#fff}
.tabs a.attiva small{opacity:.95}

/* ============ PERCORSO A FASI ============ */
.fasc-layout{display:grid;grid-template-columns:244px 1fr;gap:30px;align-items:start}
@media(max-width:900px){.fasc-layout{grid-template-columns:1fr}}

/* Stepper verticale con linea di connessione */
.fase-nav{display:flex;flex-direction:column;position:sticky;top:20px;padding-left:4px;border-left:0}
.fase-nav a{
  position:relative;display:flex;align-items:center;gap:13px;padding:10px 12px 10px 4px;
  color:var(--text-2);font-weight:500;font-size:13.5px;transition:.15s;border-radius:var(--r-sm);
}
.fase-nav a::before{content:"";position:absolute;left:15px;top:-8px;bottom:26px;width:2px;background:var(--border-strong)}
.fase-nav a:first-child::before{display:none}
.fase-nav a:hover{color:var(--text);text-decoration:none;background:var(--surface)}
.fase-nav a.attiva{color:var(--primary-600);font-weight:600}
.fase-nav .ic{position:relative;z-index:1;width:23px;height:23px;border-radius:50%;flex:0 0 auto;
  display:flex;align-items:center;justify-content:center;font-size:11.5px;font-weight:600;
  background:var(--surface);color:var(--muted);border:2px solid var(--border-strong);
  box-shadow:0 0 0 4px var(--bg);transition:.16s}
.fase-nav .ic.completa{background:var(--success);color:#fff;border-color:var(--success)}
.fase-nav .ic.attiva{background:var(--primary);color:#fff;border-color:var(--primary);box-shadow:0 0 0 4px var(--primary-100)}
.fase-nav .ic.iniziata{background:var(--warning-bg);color:var(--warning);border-color:var(--warning)}
.fase-nav .txt{flex:1;min-width:0;line-height:1.25}
.fase-nav .txt small{display:block;font-weight:500;font-size:11px;color:var(--muted)}
.fase-nav a.attiva .txt small{color:var(--info)}

/* Stepper ORIZZONTALE delle fasi, bloccato in alto mentre il resto scorre */
.fase-steps{display:flex;align-items:flex-start;overflow-x:auto;
  position:sticky;top:0;z-index:20;margin:0 0 22px;padding:12px 0 11px;
  background:var(--bg);border-bottom:1px solid var(--border);
  box-shadow:0 8px 14px -10px rgba(13,33,55,.22)}
.fase-steps .fstep{position:relative;flex:1 0 92px;display:flex;flex-direction:column;align-items:center;
  text-align:center;gap:8px;padding:4px 6px;color:var(--text-2);font-weight:500;min-width:0}
.fase-steps .fstep::before{content:"";position:absolute;top:15px;left:-50%;width:100%;height:2px;
  background:var(--border-strong);z-index:0}
.fase-steps .fstep:first-child::before{display:none}
.fase-steps .fstep.st-completa::before{background:var(--success)}
.fase-steps .node{position:relative;z-index:1;width:30px;height:30px;border-radius:50%;flex:0 0 auto;
  display:flex;align-items:center;justify-content:center;font-size:12.5px;font-weight:600;
  background:var(--surface);color:var(--muted);border:2px solid var(--border-strong);
  box-shadow:0 0 0 4px var(--bg);transition:.16s}
.fase-steps .node.completa{background:var(--success);color:#fff;border-color:var(--success)}
.fase-steps .node.attiva{background:var(--primary);color:#fff;border-color:var(--primary);box-shadow:0 0 0 4px var(--primary-100)}
.fase-steps .node.iniziata{background:var(--warning-bg);color:var(--warning);border-color:var(--warning)}
.fase-steps .lab{font-size:11.5px;line-height:1.25;color:inherit;max-width:14ch}
.fase-steps .lab small{display:block;font-size:10.5px;color:var(--muted);font-weight:500;margin-top:1px}
.fase-steps .lab small.fscad{display:inline-block;font-size:9.5px;font-weight:600;color:var(--text-2);
  background:var(--surface-2);border:1px solid var(--border);border-radius:6px;padding:0 6px;margin-top:4px}
.fase-steps .fstep:hover{text-decoration:none;color:var(--text)}
.fase-steps .fstep.attiva{color:var(--primary-600);font-weight:600}
.fase-steps .fstep.attiva .lab small{color:var(--info)}

/* Fasi: timeline VERTICALE a sinistra + contenuto della fase a destra */
.fasc-fasi{display:grid;grid-template-columns:290px minmax(0,1fr);gap:30px;align-items:start}
.fasc-fase-body{min-width:0}
.fase-vnav{display:flex;flex-direction:column;gap:3px;position:sticky;top:14px;
  background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:8px;box-shadow:var(--sh-sm)}
.fase-vnav .vfase{display:flex;align-items:center;gap:13px;padding:12px 14px;border-radius:var(--r-md);
  color:var(--text-2);text-decoration:none;border-left:3px solid transparent;transition:background .12s}
.fase-vnav .vfase:hover{background:var(--surface-2);color:var(--text)}
.fase-vnav .vfase.attiva{background:var(--primary-50);border-left-color:var(--primary);color:var(--primary-600)}
.fase-vnav .node{width:34px;height:34px;border-radius:50%;flex:0 0 auto;display:flex;align-items:center;
  justify-content:center;font-size:14px;font-weight:700;background:var(--surface-2);color:var(--text-2);
  border:2px solid var(--border)}
.fase-vnav .node.completa{background:var(--success);color:#fff;border-color:var(--success)}
.fase-vnav .node.attiva{background:var(--primary);color:#fff;border-color:var(--primary)}
.fase-vnav .node.iniziata{background:var(--warning-bg);color:var(--warning);border-color:var(--warning)}
.fase-vnav .vlab{font-size:14.5px;line-height:1.25;min-width:0;font-weight:500}
.fase-vnav .vfase.attiva .vlab{font-weight:600}
.fase-vnav .vlab small{display:block;font-size:11.5px;color:var(--muted);font-weight:500;margin-top:2px}
@media(max-width:900px){
  .fasc-fasi{grid-template-columns:1fr;gap:12px}
  .fase-vnav{flex-direction:row;overflow-x:auto;position:static;padding-bottom:6px}
  .fase-vnav .vfase{flex:0 0 auto}
}

/* Titolo della sezione corrente: banda a tutta larghezza, in primo piano */
/* Barra fascicolo: menù a sinistra; a destra il box significatività (mini-tabella). */
.fasc-bar-right{margin-left:auto;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.fasc-bar-right .msg.compatto{margin-bottom:0;font-size:11.5px;font-weight:600;padding:5px 10px;box-shadow:none}
.fasc-bar-right .msg.compatto .rl-ic{width:14px;height:14px}
/* Avviso come indicatore di stato accanto al badge del fascicolo (in alto). */
.fasc-head .stato-avviso{display:inline-flex;align-items:center;gap:5px;background:var(--warning-bg);color:var(--warning);
  border:1px solid #e9d3a6;border-radius:20px;padding:2px 10px;font-size:11.5px;font-weight:600;white-space:nowrap}
.fasc-head .stato-avviso .rl-ic{width:13px;height:13px}
.fase-corrente{background:var(--primary-50);border:1px solid var(--primary-100);
  border-left:3px solid var(--primary);border-radius:var(--r-md);padding:15px 22px;margin-bottom:22px}
.fase-corrente-top{display:flex;align-items:flex-start;gap:16px;flex-wrap:wrap}
.fase-corrente .overline{display:block;font-size:10.5px;text-transform:uppercase;letter-spacing:.09em;
  color:var(--primary-600);font-weight:700;margin-bottom:2px}
.fase-corrente h2{font-family:var(--serif);font-size:23px;font-weight:600;color:var(--text);
  letter-spacing:-.02em;margin:0;line-height:1.15}
.fase-corrente .obiettivo{color:var(--text-2);margin:9px 0 0;max-width:76ch;line-height:1.5}
.fase-corrente .rif{margin-top:7px;font-size:12.5px;color:var(--muted);line-height:1.6}
.fase-corrente .rif .rl-ic{opacity:.7}
.fase-corrente .rif a{color:var(--primary-600);font-weight:500}
.fase-corrente .scad{margin-left:auto;display:flex;align-items:center;gap:7px;font-size:13px;
  color:var(--text-2);white-space:nowrap}
.fase-corrente .scad-dot{display:inline-block;width:10px;height:10px;border-radius:50%}
.fase-corrente .scad-gg{color:var(--muted)}
.step-sez{margin-bottom:26px}
.step-sez > .tit{font-family:var(--sans);font-weight:600;font-size:11px;color:var(--muted);text-transform:uppercase;
  letter-spacing:.07em;margin:0 0 8px}

/* Sottofasi (step) come pannelli collassabili, per ridurre il caos */
.step-acc{border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface);
  margin-bottom:12px;box-shadow:var(--sh-sm)}
.step-acc>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:13px;
  padding:13px 16px;border-radius:var(--r-md);transition:background .13s}
.step-acc>summary::-webkit-details-marker{display:none}
.step-acc>summary::marker{content:""}
.step-acc>summary:hover{background:var(--surface-2)}
.step-acc[open]>summary{border-bottom:1px solid var(--border);border-radius:var(--r-md) var(--r-md) 0 0}
.step-num{flex:0 0 auto;width:25px;height:25px;border-radius:7px;background:var(--primary-50);
  color:var(--primary-600);border:1px solid var(--primary-100);display:flex;align-items:center;
  justify-content:center;font-size:12px;font-weight:700;font-family:var(--mono)}
.step-acc.completo .step-num{background:var(--success);color:#fff;border-color:var(--success)}
.step-name{flex:1;font-size:14px;font-weight:600;color:var(--text);min-width:0}
.step-meta{display:flex;align-items:center;gap:9px;flex:0 0 auto}
.step-prog{width:66px;height:6px;border-radius:999px;background:var(--primary-100);overflow:hidden;display:inline-block}
.step-prog>i{display:block;height:100%;background:var(--success);border-radius:999px;transition:width .4s}
.step-count{font-size:12px;color:var(--muted);font-weight:600;font-variant-numeric:tabular-nums;min-width:30px;text-align:right}
.step-chev{flex:0 0 auto;width:17px;height:17px;color:var(--muted);transition:transform .18s}
.step-acc[open] .step-chev{transform:rotate(90deg)}
.step-body{padding:14px 16px 4px}

/* Biblioteca documenti del fascicolo/cliente */
.doc-sez{font-size:15px;font-weight:600;margin:28px 0 12px;color:var(--text)}
.doc-sez small{font-weight:400;color:var(--muted);font-size:12.5px}
.link-danger{background:none;border:none;color:var(--danger);font:inherit;font-size:12.5px;
  font-weight:600;cursor:pointer;padding:0 0 0 14px}
.link-danger:hover{text-decoration:underline}

/* Dashboard bilanci: card per tipo di import */
.bil-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(258px,1fr));gap:16px}
.bil-card{border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface);
  box-shadow:var(--sh-sm);padding:16px 18px;display:flex;flex-direction:column;gap:11px;min-height:150px}
.bil-card.piena{border-left:3px solid var(--primary)}
.bil-card-h{font-weight:600;font-size:14px;color:var(--text);line-height:1.3}
.bil-meta{margin:0;font-size:12.5px;display:flex;flex-direction:column;gap:4px}
.bil-meta div{display:flex;justify-content:space-between;gap:12px}
.bil-meta dt{color:var(--muted)}
.bil-meta dd{margin:0;text-align:right;color:var(--text-2)}
.bil-card-vuota{font-size:12.5px;color:var(--muted);font-style:italic}
.bil-card-a{margin-top:auto;display:flex;align-items:center;gap:12px}
.bil-card-a .btn{font-size:13px;padding:7px 14px}

/* Dettaglio bilancio riclassificato */
.bil-tab{width:100%;border-collapse:collapse;font-size:13.5px}
.bil-tab th{background:var(--surface-2);color:var(--muted);font-size:10.5px;text-transform:uppercase;
  letter-spacing:.05em;font-weight:600;padding:9px 14px;text-align:left}
.bil-tab th.num,.bil-tab td.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.bil-tab td{padding:6px 14px;border-bottom:1px solid var(--border)}
.bil-tab td.voce{color:var(--text)}
.bil-tab tr.liv1 td.voce{padding-left:30px;color:var(--text-2)}
.bil-tab tr.r-H td.voce{font-weight:600;background:var(--surface-2)}
.bil-tab tr.r-T td{font-weight:600;color:var(--text);background:var(--primary-50)}
.bil-tab td.var{color:var(--muted);font-size:12px}
.bil-tab input{width:128px;text-align:right;padding:5px 8px;font-size:13px;
  border:1px solid var(--border);border-radius:var(--r-sm);font-variant-numeric:tabular-nums;margin:0}
.bil-tab input:disabled{background:var(--surface-2);color:var(--text-2)}

/* Raccordo voci */
table.raccordo td{vertical-align:middle}
table.raccordo select{width:100%;min-width:240px;padding:5px 8px;font-size:13px;margin:0;
  border:1px solid var(--border);border-radius:var(--r-sm)}
table.raccordo tr.non-ass td{background:var(--warning-bg)}
table.raccordo tr.non-ass select{border-color:var(--warning)}
.carta-riga{display:flex;align-items:center;gap:12px;padding:12px 15px;border:1px solid var(--border);
  border-radius:var(--r-md);background:var(--surface);margin-bottom:8px;transition:.15s;box-shadow:var(--sh-sm)}
.carta-riga:hover{border-color:var(--primary-100);box-shadow:var(--sh);transform:translateX(2px)}
.carta-riga.sel{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary) inset}
.carta-riga .nome{flex:1;font-size:13.5px;font-weight:500;color:var(--text)}
.carta-apri{font-size:12.5px;font-weight:600;color:var(--primary-600);white-space:nowrap;letter-spacing:.1px}
.carta-apri:hover{color:var(--info)}
.carta-dettaglio{border:1px solid var(--primary-100);border-left:3px solid var(--brass);
  border-radius:var(--r-md);background:var(--surface);padding:18px 20px;margin:-3px 0 12px;box-shadow:var(--sh)}
.carta-dettaglio .tipo{color:var(--info);font-size:11px;text-transform:uppercase;letter-spacing:.06em;font-weight:600}
.carta-dettaglio h3{margin:2px 0 6px;font-family:var(--serif);font-size:17px;font-weight:600}
.carta-dettaglio .aiuto{color:var(--muted);font-size:12.5px;margin-bottom:14px}
/* Barra firma in cima a ogni carta: due firme indipendenti Preparata / Rivista */
.firma-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:16px;padding:9px 13px;
  background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--brass);
  border-radius:var(--r-md);box-shadow:var(--sh-sm)}
.firma-bar .fb-tit{font-size:10px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);font-weight:700}
.firma-bar .fb-slot{display:flex;align-items:center;gap:8px;padding:5px 10px;border-radius:var(--r-sm);
  background:var(--surface-2);border:1px solid var(--border)}
.firma-bar .fb-slot.on{background:var(--success-bg);border-color:#bfe3cc}
.firma-bar .fb-k{width:20px;height:20px;flex-shrink:0;border-radius:50%;background:var(--border);color:var(--text-2);
  display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700}
.firma-bar .fb-slot.on .fb-k{background:var(--success);color:#fff}
.firma-bar .fb-v{font-size:13px;color:var(--text)}
.firma-bar .fb-firma{display:flex;align-items:center;gap:6px;margin:0}
.firma-bar .fb-date{padding:4px 7px;font-size:12.5px}
.firma-bar .fb-btn{padding:5px 11px;font-size:12.5px}
.firma-bar .fb-x{background:none;border:none;cursor:pointer;color:var(--danger);font-size:13px;padding:2px 5px;font-weight:700}
.firma-bar .fb-esito{font-size:13px;font-weight:700;color:var(--success);white-space:nowrap}
.firma-bar .fb-scad{margin-left:auto;font-size:12.5px;color:var(--muted);white-space:nowrap}

/* ============ LAYOUT IBRIDO (legacy) ============ */
.due-col{display:grid;grid-template-columns:minmax(320px,1.05fr) 1.35fr;gap:22px;align-items:start}
@media(max-width:900px){.due-col{grid-template-columns:1fr}}

.step-blocco{margin-bottom:18px}
.step-tit{font-weight:600;color:var(--text);margin:14px 0 8px;font-size:14px;display:flex;align-items:center;gap:8px}
.step-tit::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--brass)}
ul.carte{list-style:none;margin:0;padding:0}
ul.carte li a{
  display:flex;align-items:center;gap:11px;padding:11px 13px;
  border:1px solid var(--border);border-radius:var(--r-sm);margin-bottom:7px;
  background:var(--surface);color:var(--text);transition:.15s;
}
ul.carte li a:hover{border-color:var(--primary-100);background:var(--primary-50);text-decoration:none;transform:translateX(2px)}
ul.carte li a.sel{border-color:var(--primary);background:var(--primary-50);box-shadow:0 0 0 1px var(--primary) inset}
.codice{font-size:11px;color:var(--text-2);font-family:var(--mono);background:var(--surface-2);
  border:1px solid var(--border);padding:1px 6px;border-radius:5px}
.carta-tit{flex:1;font-size:13.5px;font-weight:500}

/* Pallini di stato */
.dot{width:11px;height:11px;border-radius:50%;flex:0 0 auto;box-shadow:0 0 0 3px rgba(13,33,55,.05)}
.st-DA_FARE{background:#c2c8d0}
.st-IN_CORSO{background:#c0851f}
.st-COMPLETATO{background:#1a7a45}
.st-RIVISTO{background:#1e4e8c}
.st-NON_APPLICABILE{background:#c2c8d0;opacity:.5}

/* Etichette di stato */
.tag{display:inline-flex;align-items:center;font-size:10px;padding:3px 8px;border-radius:4px;font-weight:600;
  white-space:nowrap;background:var(--slate-bg);color:var(--slate);letter-spacing:.04em;text-transform:uppercase}
.tag.DA_FARE,.tag.PROPOSTO{background:var(--slate-bg);color:var(--slate)}
.tag.IN_CORSO{background:var(--warning-bg);color:var(--warning)}
.tag.COMPLETATO,.tag.ACCETTATO{background:var(--success-bg);color:var(--success)}
.tag.RIVISTO{background:var(--info-bg);color:var(--info)}
.tag.MODIFICATO{background:var(--violet-bg);color:var(--violet)}
.tag.RIFIUTATO{background:var(--danger-bg);color:var(--danger)}
.tag.NON_APPLICABILE,.tag.ARCHIVIATO{background:var(--slate-bg);color:var(--muted)}
/* Stati/esiti circolarizzazione */
.tag.BOZZA{background:var(--slate-bg);color:var(--slate)}
.tag.DA_INVIARE{background:var(--warning-bg);color:var(--warning)}
.tag.INVIATA{background:var(--info-bg);color:var(--info)}
.tag.RISPOSTA{background:var(--success-bg);color:var(--success)}
.tag.CHIUSA{background:var(--slate-bg);color:var(--muted)}
.tag.IN_ATTESA{background:var(--slate-bg);color:var(--slate)}
.tag.CONFERMATO{background:var(--success-bg);color:var(--success)}
.tag.NON_CONFERMATO{background:var(--warning-bg);color:var(--warning)}
.tag.ALTERNATIVA{background:var(--danger-bg);color:var(--danger)}
.tag.INATTENDIBILE{background:var(--danger-bg);color:var(--danger)}
.tag.scaduta{background:var(--danger-bg);color:var(--danger)}
tr.riga-scaduta td{background:#f8ece9}
tr.riga-anomalia td{background:#f9ebe8}
.commento-ai{font-size:12px;color:var(--danger);margin-top:4px}

/* ============ PANNELLO DETTAGLIO ============ */
.dettaglio{position:sticky;top:20px}
.dettaglio .tipo{color:var(--info);font-size:11px;text-transform:uppercase;letter-spacing:.06em;font-weight:600}
.dettaglio h2{margin-top:3px;margin-bottom:16px}

/* --- Selettore anni nel fascicolo (navigazione tra esercizi) --- */
.anni-strip{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:-4px 0 12px}
.anni-strip .lbl{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.6px;margin-right:2px}
.anno-chip{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border-radius:6px;
  border:1px solid var(--border-strong);background:var(--surface);color:var(--text);
  font-size:13px;font-weight:700;text-decoration:none;font-family:var(--mono);line-height:1;cursor:pointer}
.anno-chip:hover{border-color:var(--muted)}
.anno-chip.current{background:var(--primary);color:#fff;border-color:var(--primary)}
.anno-chip .dot{width:7px;height:7px;border-radius:50%;background:var(--warning);display:inline-block}
.anno-chip.current .dot{background:#d7b678}
.anno-chip .lock{font-size:11px;opacity:.75}
.anno-chip.anno-new{border-style:dashed;color:var(--muted);font-weight:600}

/* ============ FORM ============ */
form .campo{margin-bottom:15px}
form label{display:block;font-weight:600;font-size:12.5px;color:var(--text-2);margin-bottom:6px}
form input,form select,form textarea{
  width:100%;padding:10px 13px;border:1px solid var(--border-strong);border-radius:var(--r-sm);
  font-size:14px;font-family:inherit;color:var(--text);background:var(--surface);transition:.15s;
}
form input[type=checkbox],form input[type=radio]{
  width:16px;height:16px;min-height:0;padding:0;border:none;background:none;box-shadow:none;
  flex:0 0 auto;margin:0;accent-color:var(--primary);cursor:pointer;
}
form input::placeholder,form textarea::placeholder{color:var(--muted)}
form input:hover,form select:hover,form textarea:hover{border-color:var(--muted)}
form input:focus,form select:focus,form textarea:focus{
  outline:none;border-color:var(--info);box-shadow:var(--ring);
}
form textarea{min-height:92px;resize:vertical;line-height:1.55}
.riga2{display:grid;grid-template-columns:1fr 1fr;gap:14px}

.vuoto{color:var(--muted);text-align:center;padding:48px 20px;font-size:14px}

/* ============ MESSAGGI ============ */
.messaggi{margin-bottom:18px}
.msg{padding:13px 16px 13px 18px;border-radius:var(--r-sm);margin-bottom:10px;font-size:14px;font-weight:500;
  border:1px solid transparent;box-shadow:var(--sh-sm);position:relative;
  animation:saliGiu .35s cubic-bezier(.22,1,.36,1)}
.msg::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;border-radius:3px 0 0 3px;background:currentColor;opacity:.55}
.msg.success{background:var(--success-bg);color:var(--success);border-color:#bfe3cc}
.msg.info{background:var(--info-bg);color:var(--info);border-color:#c8d8ee}
.msg.warning{background:var(--warning-bg);color:var(--warning);border-color:#e9d3a6}
.msg.error{background:var(--danger-bg);color:var(--danger);border-color:#eecac3}
/* Avviso compatto: una riga sottile, non un box grande (usato nell'hub fascicolo). */
.msg.compatto{padding:7px 12px 7px 14px;font-size:12.5px;margin-bottom:10px;box-shadow:none;width:fit-content;max-width:100%}
.msg.compatto .rl-ic{width:15px;height:15px}

/* ============ RESPONSIVE ============ */
@media(max-width:820px){
  body.has-sidebar{flex-direction:column}
  .sidebar{width:100%;flex:none;height:auto;position:static;flex-direction:row;align-items:center;padding:12px 16px;gap:12px}
  body.has-sidebar .main{margin-left:0}
  .brand{padding:0}
  .side-nav{flex-direction:row;margin:0;overflow-x:auto}
  .side-foot{margin:0 0 0 auto;padding:0;border:none}
  .user-chip{display:none}
  .content{padding:22px 18px 50px}
  .fasc-head{gap:10px}
}

/* Riduce il movimento se richiesto dall'utente */
@media(prefers-reduced-motion:reduce){
  *{animation:none !important;transition:none !important}
}

/* Stampa: nasconde sidebar ed elementi no-print */
@media print{
  .sidebar, .no-print, .messaggi{display:none !important}
  .main, .content{margin:0 !important;padding:0 !important}
  body{background:#fff !important}
}

/* --- Dashboard Fascicoli raggruppata per cliente --- */
.cli-card{padding:15px 16px;border-bottom:1px solid var(--border)}
.cli-card:last-child{border-bottom:0}
.cli-top{display:flex;align-items:baseline;gap:10px;margin-bottom:11px}
.cli-name{font-weight:800;font-size:15px;flex:1}
.cli-sub{color:var(--muted);font-size:12.5px}
.cli-anni{display:flex;gap:10px;overflow-x:auto;padding-bottom:4px}
.yb{display:block;min-width:180px;flex:0 0 auto;padding:10px 12px;border:1px solid var(--border-strong);
  border-radius:8px;background:var(--surface);text-decoration:none;color:var(--text)}
.yb:hover{border-color:var(--muted);box-shadow:0 1px 5px rgba(13,33,55,.08)}
.yb-top{display:flex;align-items:center;gap:8px;margin-bottom:7px}
.yb-anno{font-family:var(--mono);font-weight:800;font-size:15px}
.yb-bar{display:flex;align-items:center;gap:7px}
.yb-bar .progress{flex:1}
.yb .lock{font-size:12px;opacity:.7}

/* ---- UX: sezioni etichettate della sidebar ---- */
.side-sec{font-size:10px;letter-spacing:.6px;color:#6b7f99;font-weight:700;margin:14px 14px 4px;text-transform:uppercase}
.side-nav .side-sec:first-child{margin-top:2px}

/* ---- UX: barra azioni uniforme delle carte ---- */
.carta-azioni{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:10px 0 14px}
.carta-azioni .spazio{flex:1}
