/* Cantiere 3D — base: font, colori, guscio, barra in alto, pulsanti, card, testate, toast, drawer.
   Tema chiaro "carta bianca, blu notte, rosso segnale"; il viewport 3D resta blu notte (stage.css). */
@font-face{font-family:"Sora";font-weight:600;font-style:normal;font-display:swap;src:url(../fonts/sora-latin-600-normal.woff2) format("woff2")}
@font-face{font-family:"Sora";font-weight:700;font-style:normal;font-display:swap;src:url(../fonts/sora-latin-700-normal.woff2) format("woff2")}
@font-face{font-family:"Manrope";font-weight:400;font-style:normal;font-display:swap;src:url(../fonts/manrope-latin-400-normal.woff2) format("woff2")}
@font-face{font-family:"Manrope";font-weight:500;font-style:normal;font-display:swap;src:url(../fonts/manrope-latin-500-normal.woff2) format("woff2")}
@font-face{font-family:"Manrope";font-weight:600;font-style:normal;font-display:swap;src:url(../fonts/manrope-latin-600-normal.woff2) format("woff2")}
@font-face{font-family:"Manrope";font-weight:700;font-style:normal;font-display:swap;src:url(../fonts/manrope-latin-700-normal.woff2) format("woff2")}
@font-face{font-family:"JetBrains Mono";font-weight:400;font-style:normal;font-display:swap;src:url(../fonts/jetbrains-mono-latin-400-normal.woff2) format("woff2")}
@font-face{font-family:"JetBrains Mono";font-weight:500;font-style:normal;font-display:swap;src:url(../fonts/jetbrains-mono-latin-500-normal.woff2) format("woff2")}

:root{
  --night:#eef1f5;--panel:#fff;--panel-2:#f5f7fa;--line:#d8dee6;--ink:#1c2633;--muted:#5d6b7c;
  --sodium:#c8102e;--steel:#1f5aa6;--signal:#2e8540;--alert:#c8102e;
  --red:#d1193a;--red-2:#a80f2c;--navy:#0b2447;--navy-2:#0d2b52;--blue:#2f6fd6;--amber:#9a6700;--r:14px;
  --f-display:"Sora","Segoe UI",Arial,sans-serif;--f-body:"Manrope","Segoe UI",system-ui,Arial,sans-serif;--f-mono:"JetBrains Mono",ui-monospace,Menlo,Consolas,monospace;
  color-scheme:light;
}
*,*::before,*::after{box-sizing:border-box}
html,body{height:100%;margin:0;padding:0}
body{background:#f2f4f8;background-image:radial-gradient(900px 500px at 85% -10%,rgba(47,111,214,.10),transparent 60%),radial-gradient(700px 400px at -10% 10%,rgba(209,25,58,.06),transparent 60%);background-attachment:fixed;color:var(--ink);font-family:var(--f-body);font-size:14px;line-height:1.45;-webkit-text-size-adjust:100%}
body.noscroll{overflow:hidden}
button,input,select,textarea{font:inherit;color:inherit}
input,select,textarea{font-size:max(13px,1em)}
a{color:var(--steel)}
code{font-family:var(--f-mono);font-size:.92em;background:rgba(13,43,82,.07);padding:0 4px;border-radius:4px}
:focus-visible{outline:2px solid var(--sodium);outline-offset:2px}
[hidden]{display:none!important}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.muted{color:var(--muted)}
.bad,.badtxt{color:#c8102e}
.eyebrow{font-family:var(--f-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--sodium)}

/* guscio */
.shell{height:100%;display:grid;grid-template-rows:auto minmax(0,1fr);grid-template-columns:minmax(0,1fr)}
.appviews{min-height:0;position:relative}
.view{height:100%;position:relative}
.page{overflow:auto}
.pagewrap{max-width:1240px;margin:0 auto;padding-block:26px 60px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));display:flex;flex-direction:column;gap:18px}

/* barra in alto */
.topbar{display:flex;align-items:center;gap:14px;padding-block:10px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));background:rgba(255,255,255,.82);backdrop-filter:blur(14px) saturate(160%);-webkit-backdrop-filter:blur(14px) saturate(160%);border-bottom:1px solid rgba(13,43,82,.08);box-shadow:0 1px 0 rgba(255,255,255,.6) inset,0 6px 20px -14px rgba(11,36,71,.35);position:relative;z-index:40;flex-wrap:nowrap}
.topbar::before{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:linear-gradient(90deg,#d1193a,#ff6b6b 40%,#2f6fd6 100%)}
.tb-brand{display:flex;align-items:center;gap:12px;min-width:0;text-decoration:none;color:inherit}
.tb-mark{width:34px;height:34px;border-radius:10px;background:linear-gradient(145deg,#123a6e,#0b2447);display:grid;place-items:center;box-shadow:0 6px 14px -6px rgba(11,36,71,.6);flex:none}
.tb-mark svg{width:22px;height:22px}
.tb-txt{display:flex;flex-direction:column;line-height:1.1;min-width:0}
.tb-code{font-family:var(--f-mono);font-size:10.5px;letter-spacing:.14em;color:var(--red);text-transform:uppercase}
.tb-name{font-family:var(--f-display);font-size:16px;font-weight:700;color:var(--navy);letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:280px}
.selmenu{position:relative;margin-left:-6px}
.selbtn{width:26px;height:26px;border-radius:8px;border:1px solid #d5dce7;background:#fff;color:var(--navy);display:grid;place-items:center;cursor:pointer;padding:0}
.selbtn:hover{border-color:var(--navy)}
.selpop{left:0;right:auto}
.selpop button[aria-current="true"]{background:#eef3fb;font-weight:700;color:var(--navy)}
body.senzacant .tabs{visibility:hidden}
body.senzacant .selmenu{display:none}
.tabs{display:flex;gap:2px;background:#eef1f6;border:1px solid #e3e8f0;border-radius:12px;padding:4px;flex-wrap:nowrap;min-width:0;flex:0 1 auto;overflow-x:auto;scrollbar-width:none}
.tabs::-webkit-scrollbar{display:none}
.tabs button{display:inline-flex;align-items:center;gap:6px;border:none;background:none;color:#55657a;padding:7px 14px;border-radius:9px;cursor:pointer;font-size:13px;font-weight:600;position:relative;white-space:nowrap;transition:background .15s,color .15s,box-shadow .15s}
.tabs button:hover{background:#fff;color:var(--navy)}
.tabs button[aria-current="page"]{background:#fff;color:var(--navy);box-shadow:0 1px 2px rgba(16,24,40,.08),0 4px 10px -6px rgba(16,24,40,.25)}
.tabs .ti,.tabs .ts{display:none}
.tabs .tab-add{background:linear-gradient(135deg,#e2234a,#b10f2b);color:#fff;margin-left:6px;box-shadow:0 6px 14px -6px rgba(209,25,58,.7)}
.tabs .tab-add:hover,.tabs .tab-add[aria-current="page"]{background:linear-gradient(135deg,#ef2d55,#c0122f);color:#fff}
.tabs button{flex:none}
.tabbadge{display:inline-grid;place-items:center;min-width:18px;height:18px;padding:0 5px;margin-left:2px;border-radius:9px;background:#c8102e;color:#fff;font-size:10.5px;font-weight:700;line-height:1}
.tab-add .tabbadge{display:none}

/* stato dell'archivio */
.dbstatus{margin-left:auto;display:flex;align-items:center;gap:6px;border-radius:999px;padding:5px 11px;font-weight:600;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:340px;min-width:0}
.dbstatus::before{content:"";width:7px;height:7px;border-radius:50%;flex:none}
.dbstatus.ok{background:#eaf6ee;color:#1f6b3a}.dbstatus.ok::before{background:#2e9e57;animation:pulse 2.4s infinite}
.dbstatus.dirty{background:#fff5d6;color:#8a6200}.dbstatus.dirty::before{background:#e0a800}
.dbstatus.off{background:#fdecef;color:#a80f2c}.dbstatus.off::before{background:var(--red)}
.dbstatus.local{background:#eef4fd;color:#0d2b52}.dbstatus.local::before{background:#1f5aa6}
.dbstatus.wait{background:#eef1f6;color:#55657a}.dbstatus.wait::before{background:#8193ab}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(46,158,87,.45)}70%{box-shadow:0 0 0 7px rgba(46,158,87,0)}100%{box-shadow:0 0 0 0 rgba(46,158,87,0)}}
.archmenu{position:relative;flex:none}
.archbtn{display:flex;align-items:center;gap:6px;border:1px solid #c3ccd8;background:#fff;color:#0d2b52;border-radius:999px;padding:5px 12px;font-size:12.5px;font-weight:600;cursor:pointer}
.archbtn:hover{border-color:#0d2b52}
.archpop{position:absolute;right:0;top:calc(100% + 8px);z-index:50;width:300px;background:#fff;border:1px solid #e3e8f0;border-radius:14px;box-shadow:0 18px 40px -14px rgba(16,24,40,.35);padding:8px;display:flex;flex-direction:column;gap:2px;animation:popIn .16s ease}
.archpop .ap-h{font-size:12px;color:#5d6b7c;padding:6px 8px 8px;border-bottom:1px solid #edf0f4;margin-bottom:4px;line-height:1.45;overflow-wrap:anywhere}.archpop .ap-h b{color:#0d2b52}
.archpop button{border:none;background:none;text-align:left;padding:8px 10px;border-radius:8px;font-size:13px;color:#1c2633;cursor:pointer}
.archpop button:hover{background:#f2f5f9}
.archpop button.dang{color:#c8102e}
.archpop .ap-n{margin:4px 8px;font-size:11.5px;color:#7a8797;line-height:1.4}
.archpop .ap-n:empty{display:none}
@keyframes popIn{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}

/* barra di aggiornamento */
.updbar{position:fixed;left:50%;top:70px;transform:translateX(-50%);z-index:90;display:flex;align-items:center;gap:12px;background:#0d2b52;color:#fff;padding:8px 10px 8px 16px;border-radius:999px;box-shadow:0 14px 30px -12px rgba(11,36,71,.6);font-size:13px;font-weight:600}
.updbar span::after{content:" ·";opacity:.6}
.updbar .mini{background:#fff;color:#0d2b52;border-color:#fff}

/* testata delle pagine: blu, luce lenta e riflesso */
.pagehead{position:relative;overflow:hidden;isolation:isolate;border-radius:20px;padding:30px 30px 28px;background:linear-gradient(120deg,#0b2447 0%,#123a6e 55%,#1d5aa8 100%);color:#fff;box-shadow:0 18px 40px -22px rgba(11,36,71,.65);display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap}
.pagehead>*{position:relative;z-index:1;min-width:0}
.pagehead::before{content:"";position:absolute;width:520px;height:520px;right:-140px;top:-260px;border-radius:50%;background:radial-gradient(circle,rgba(90,163,255,.45),rgba(90,163,255,0) 65%);z-index:0;animation:glow 14s ease-in-out infinite alternate;pointer-events:none}
.pagehead::after{content:"";position:absolute;inset:0;background:linear-gradient(115deg,transparent 40%,rgba(255,255,255,.07) 50%,transparent 60%);background-size:250% 100%;animation:sheen 9s ease-in-out infinite;z-index:0;pointer-events:none}
@keyframes glow{from{transform:translate(0,0) scale(1)}to{transform:translate(-120px,60px) scale(1.15)}}
@keyframes sheen{0%,60%{background-position:120% 0}100%{background-position:-60% 0}}
.pagehead .eyebrow{color:#ff9aa8;letter-spacing:.16em}
.pagehead h2{color:#fff;font-family:var(--f-display);font-weight:700;font-size:clamp(26px,3.2vw,38px);letter-spacing:-.02em;margin:4px 0 8px;overflow-wrap:anywhere}
.lede{margin:0;color:#c6d5ec;max-width:72ch}
.lede code{background:rgba(255,255,255,.12)}
.actions{display:flex;gap:8px;flex-wrap:wrap}
.pagehead .actions{margin-top:14px}
.pagehead .btn.ghost{background:rgba(255,255,255,.1);color:#fff;border-color:rgba(255,255,255,.28);backdrop-filter:blur(6px);box-shadow:none}
.pagehead .btn.ghost:hover{background:rgba(255,255,255,.18);border-color:#fff}

/* pulsanti */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border-radius:10px;padding:9px 16px;background:linear-gradient(135deg,#e2234a,#b10f2b);border:1px solid transparent;color:#fff;font-weight:600;font-size:13px;cursor:pointer;text-decoration:none;box-shadow:0 8px 18px -8px rgba(209,25,58,.65);transition:transform .12s,box-shadow .12s}
.btn:hover{background:linear-gradient(135deg,#ef2d55,#c0122f);transform:translateY(-1px)}
.btn:disabled{opacity:.55;cursor:wait;transform:none}
.btn.ghost{background:#fff;color:var(--navy);border-color:#d5dce7;box-shadow:0 1px 2px rgba(16,24,40,.06)}
.btn.ghost:hover{border-color:var(--navy)}
.btn.danger{background:#fff;color:#c8102e;border-color:#e3a3ad;box-shadow:none}
.mini{display:inline-flex;align-items:center;gap:4px;border:1px solid #c3ccd8;background:#fff;color:#1c2633;padding:4px 10px;border-radius:8px;font-size:11.5px;font-weight:600;cursor:pointer;text-decoration:none;white-space:nowrap}
.mini:hover{border-color:#c8102e;color:#c8102e}
.mini:disabled{opacity:.5;cursor:default}
.lnk{font-size:11px;color:#1f5aa6}

/* campi */
.page select,.page input:not([type=checkbox]):not([type=file]):not([type=radio]),.page textarea{background:#fff;border:1px solid #d5dce7;color:#1c2633;border-radius:10px;padding:9px 11px;font-size:13px;width:100%}
.page select:focus,.page input:focus,.page textarea:focus{outline:none;border-color:#1f5aa6;box-shadow:0 0 0 3px rgba(31,90,166,.15)}
.page input[type=file]{font-size:12.5px;max-width:100%}
.filterrow{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--muted);flex-wrap:wrap}
.page .filterrow select{width:auto;flex:0 1 200px;min-width:0}
.filterrow .fnote{font-size:12px;color:#7a8797}
.count,.cnt{font-family:var(--f-mono);font-size:11px;color:var(--muted)}

/* card, kpi */
.card{background:#fff;border:1px solid #e3e8f0;border-radius:var(--r);padding:14px 16px 12px;min-width:0;display:flex;flex-direction:column;gap:8px;box-shadow:0 1px 2px rgba(16,24,40,.04),0 12px 28px -18px rgba(16,24,40,.22);transition:transform .22s ease,box-shadow .22s ease}
.card.wide{grid-column:1/-1}
.card header{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
.card h3{margin:0;font-family:var(--f-display);font-size:15px;font-weight:600;color:var(--navy);letter-spacing:-.01em;display:flex;align-items:center;gap:8px}
.card h3::before{content:"";display:inline-block;width:8px;height:8px;border-radius:2px;background:var(--red);flex:none}
.card h3 svg{width:18px;height:18px;color:var(--navy)}
.cap{margin:0;font-size:12.5px;color:var(--muted)}
.cgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}
.kpi{position:relative;overflow:hidden;background:#fff;border-radius:var(--r);border:1px solid #e3e8f0;box-shadow:0 1px 2px rgba(16,24,40,.04),0 12px 28px -18px rgba(16,24,40,.22);padding:16px 18px;display:flex;flex-direction:column;gap:4px;min-width:0;transition:transform .22s ease,box-shadow .22s ease}
.kpi .k{font-weight:600;color:#55657a;font-size:12px;text-transform:uppercase;letter-spacing:.06em}
.kpi .v{font-family:var(--f-display);font-size:32px;font-weight:700;line-height:1;letter-spacing:-.02em;color:var(--navy);margin-top:2px;font-variant-numeric:tabular-nums}
.kpi .v small{font-size:15px;color:var(--muted);font-weight:600}
.kpi .s{font-size:12px;color:var(--muted)}
.kpi.hero{background:linear-gradient(135deg,#d1193a,#8f0c25);border-color:transparent}
.kpi.hero .k,.kpi.hero .s{color:#ffd6dd}.kpi.hero .v,.kpi.hero .v small{color:#fff}
.kpi:hover,.ctl-chip:hover,.gs:hover{transform:translateY(-2px);box-shadow:0 1px 2px rgba(16,24,40,.05),0 18px 32px -18px rgba(16,24,40,.38)}
.nodata{color:var(--muted);font-size:13px;padding:24px 0;text-align:center;margin:0}
.warnbox{margin:0;font-size:12.5px;color:#8a5a00;background:#fff5d6;border-radius:10px;padding:8px 12px}
.cstat{font-size:12px;font-weight:700;color:#9a6700;background:#fff5d6;border-radius:999px;padding:3px 10px}
.cstat.ok{color:#16794c;background:#e3f4ea}.cstat.bad{color:#c8102e;background:#fde8eb}.cstat.info{color:#1f5aa6;background:#eef4fd}

/* anelli */
.rings{display:flex;gap:22px;flex-wrap:wrap}
.ring{display:flex;flex-direction:column;align-items:center;gap:6px;min-width:110px}
.ring svg{width:104px;height:104px;display:block}
.ring .rv{font-family:var(--f-display);font-weight:700;font-size:22px;fill:#fff}
.ring .rl{font-size:12px;color:#c6d5ec;text-align:center;line-height:1.3}
.ring .rl b{display:block;color:#fff;font-family:var(--f-display);font-size:13px}
.ring svg circle+circle{animation:ringIn 1.2s cubic-bezier(.2,.8,.2,1) both}
@keyframes ringIn{from{stroke-dasharray:0 999}}

/* pill dei binari */
.pill{display:inline-block;font-family:var(--f-mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;padding:1px 5px;border-radius:3px;margin-right:4px;vertical-align:1px}
.pill.pari{background:#fdf0dc;color:#8a5200}.pill.dispari{background:#e3eefa;color:#1f5aa6}.pill.ni,.pill.unico{background:#eef1f5;color:#5d6b7c}

/* moduli */
form fieldset,.sc-form fieldset{border:1px solid #e3e8f0;border-radius:var(--r);padding:12px 14px 14px;margin:0 0 12px;background:#fff;display:flex;flex-direction:column;gap:10px;min-width:0}
form legend{background:#0b2447;color:#fff;border-radius:999px;padding:3px 10px;font-family:var(--f-mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase}
.fr{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
form label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted);min-width:0}
form label.full{grid-column:1/-1}
form label.check{flex-direction:row;align-items:center;gap:8px;color:var(--ink);font-size:13px}
form label.check input{width:auto;accent-color:var(--sodium)}
.checks{grid-column:1/-1;display:flex;gap:14px;flex-wrap:wrap;align-items:center}
.pvlab{margin:0;font-size:11.5px;color:var(--muted)}
.formbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.fmsg{font-size:12.5px;color:#9a6700}
.kv2{display:grid;grid-template-columns:auto 1fr;gap:4px 14px;margin:0;font-size:13px}
.kv2 dt{color:var(--muted)}.kv2 dd{margin:0;overflow-wrap:anywhere}

/* schermata di scelta */
.sc-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.sc-arch.cartella{border-color:#bfe3cd}.sc-arch.riaprire{border-color:#f0b6c0}
.sc-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px}
.sc-ca{display:flex;flex-direction:column;gap:3px;padding:14px 16px;border:1px solid #e3e8f0;border-radius:12px;background:linear-gradient(180deg,#fff,#f7f9fc);text-decoration:none;color:#1c2633;transition:transform .18s,box-shadow .18s,border-color .18s;min-width:0}
.sc-ca:hover{transform:translateY(-2px);border-color:#9fbbe6;box-shadow:0 14px 26px -18px rgba(16,24,40,.45)}
.sc-ca b{font-family:var(--f-display);font-size:14.5px;color:var(--navy);overflow-wrap:anywhere}
.sc-ca span{font-size:12.5px;color:#3b4a5d}
.sc-ca small{font-family:var(--f-mono);font-size:11px;color:#7a8797;overflow-wrap:anywhere}
.sc-ca .sc-k{font-family:var(--f-mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--red)}
.sc-ca.err{border-color:#f0b6c0;background:#fff5f6}

/* toast */
.toast{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0px));transform:translate(-50%,20px);background:#0d2b52;color:#fff;border:1px solid #0d2b52;padding:9px 14px;border-radius:10px;font-size:13px;opacity:0;transition:.2s;z-index:100;pointer-events:none;max-width:min(560px,calc(100% - 32px))}
.toast.on{opacity:1;transform:translate(-50%,0)}
.toast.ok{border-color:#2e9e57;box-shadow:0 0 0 2px rgba(46,158,87,.3)}
.toast.bad{background:#8f0c25;border-color:#8f0c25}

/* drawer */
.drawer-ov{position:fixed;inset:0;background:rgba(7,18,38,.42);backdrop-filter:blur(3px);z-index:80;animation:fadeIn .2s ease}
.drawer{position:fixed;top:0;right:0;bottom:0;width:min(420px,100%);background:#fff;z-index:81;display:flex;flex-direction:column;box-shadow:-24px 0 60px -20px rgba(7,18,38,.45);animation:slideIn .28s cubic-bezier(.2,.8,.2,1)}
.dr-h{display:flex;justify-content:space-between;align-items:flex-start;padding:22px 22px 14px;background:linear-gradient(120deg,#0b2447,#16508f);color:#fff}
.dr-h .eyebrow{color:#ff9aa8}.dr-h h3{margin:4px 0 0;font-family:var(--f-display);font-size:20px}
.dr-x{border:1px solid rgba(255,255,255,.3);background:rgba(255,255,255,.1);color:#fff;width:34px;height:34px;border-radius:10px;cursor:pointer;font-size:15px;flex:none}
.dr-b{flex:1;overflow:auto;padding:16px 22px;display:flex;flex-direction:column;gap:18px}
.dr-b section{display:flex;flex-direction:column;gap:10px}
.dr-b h4{margin:0;font-family:var(--f-mono);font-size:10.5px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:#5d6b7c}
.dr-b label{display:grid;grid-template-columns:1fr 130px;align-items:center;gap:4px 10px;font-size:13px;color:#1c2633;margin:0}
.dr-b label span{color:#7a8797;font-size:11.5px;grid-column:1}
.dr-b label input{grid-column:2;grid-row:1/span 2;width:100%;border:1px solid #c3ccd8;border-radius:10px;padding:8px 10px;font-family:var(--f-mono);font-size:14px;text-align:right;color:#0d2b52}
.dr-b input:focus{outline:none;border-color:#1d5aa8;box-shadow:0 0 0 3px rgba(29,90,168,.15)}
.dr-n{margin:0;font-size:12px;color:#7a8797}
.dr-f{padding:14px 22px calc(14px + env(safe-area-inset-bottom,0px));border-top:1px solid #edf0f4}.dr-f .btn{width:100%}
@keyframes slideIn{from{transform:translateX(100%)}to{transform:none}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}

/* tooltip dei grafici */
.ctip{position:fixed;z-index:95;pointer-events:none;background:#fff;color:#1c2633;border:1px solid #c3ccd8;box-shadow:0 8px 24px rgba(16,24,40,.14);border-radius:8px;padding:8px 10px;font-size:12px;line-height:1.45;opacity:0;transition:opacity .1s;max-width:280px}
.ctip.on{opacity:1}

/* ingresso in sequenza */
.view.enter .pagewrap>*{animation:rise .55s cubic-bezier(.2,.8,.2,1) both;animation-delay:calc(var(--i,0)*55ms)}
.view.enter .kpis>*,.view.enter .cgrid>*,.view.enter .ctl-grid>*,.view.enter .gsum>*,.view.enter .sc-grid>*{animation:rise .55s cubic-bezier(.2,.8,.2,1) both;animation-delay:calc(120ms + var(--j,0)*45ms)}
@keyframes rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
}
