/* ══════════════════════════════════════════════════════════════════
   LO.CO.TA – DESIGN SYSTEM v4.0
   Estratto da index.html · gestito separatamente
══════════════════════════════════════════════════════════════════ */
:root{
  --bg:#060810;--bg2:#0b0f1a;--bg3:#111827;--bg4:#1a2235;--bg5:#1f2a40;
  --bd:#1c2538;--bd2:#243050;--bd3:#2d3a54;
  --a:#e8a020;--a2:#f5b840;--a3:#ffc94d;--ad:rgba(232,160,32,.12);--ad2:rgba(232,160,32,.06);
  --bl:#4a9eff;--bl2:#6fb3ff;--cy:#00d4ff;
  --gn:#2dd4a0;--gn2:#3de0ac;
  --rd:#f06070;--rd2:#ff7585;
  --or:#f59042;--or2:#ffaa5a;
  --pu:#a87ef5;--pu2:#bf9fff;
  --t1:#e2eaf8;--t2:#8099b8;--t3:#3d5270;--t4:#22334d;
  --r:10px;--r2:14px;--r3:18px;
  --fn:'Inter',-apple-system,BlinkMacSystemFont,sans-serif;--fm:'Inter',ui-monospace,monospace;
  --sh1:0 2px 8px rgba(0,0,0,.4);--sh2:0 8px 24px rgba(0,0,0,.5);--sh3:0 20px 60px rgba(0,0,0,.7);
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{font-family:var(--fn);background:var(--bg);color:var(--t1);font-size:14px;min-height:100vh;letter-spacing:.01em;-webkit-font-smoothing:antialiased}
::-webkit-scrollbar{width:4px;height:4px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--bd3);border-radius:2px}
::-webkit-scrollbar-thumb:hover{background:var(--t3)}
/* Shell */
.shell{display:flex;min-height:100vh}
/* Sidebar */
.sb{width:228px;flex-shrink:0;background:linear-gradient(180deg,#0b0f1a 0%,#080c15 100%);border-right:1px solid var(--bd);display:flex;flex-direction:column;position:fixed;inset:0 auto 0 0;z-index:200;box-shadow:4px 0 24px rgba(0,0,0,.4)}
.sb-logo{padding:20px 18px 16px;border-bottom:1px solid var(--bd);background:linear-gradient(135deg,rgba(232,160,32,.1) 0%,rgba(232,160,32,.02) 100%);position:relative;overflow:hidden}
.sb-logo-t{font-size:18px;font-weight:800;letter-spacing:4px;color:var(--a);text-shadow:0 0 30px rgba(232,160,32,.4)}
.sb-logo-s{font-size:8.5px;color:var(--t3);letter-spacing:2.5px;text-transform:uppercase;margin-top:2px}
.sb-logo-v{font-family:var(--fm);font-size:9px;color:var(--t4);margin-top:4px}
nav{flex:1;padding:10px 0;overflow-y:auto}
.ni{display:flex;align-items:center;gap:10px;padding:8px 16px 8px 14px;cursor:pointer;color:var(--t3);font-size:12px;font-weight:500;transition:all .18s cubic-bezier(.4,0,.2,1);border-left:2px solid transparent;user-select:none;letter-spacing:.04em;margin:1px 6px;border-radius:6px}
.ni:hover{color:var(--t2);background:rgba(255,255,255,.04)}
.ni.on{color:var(--a);background:linear-gradient(90deg,rgba(232,160,32,.14),rgba(232,160,32,.04));border-left-color:var(--a);margin-left:6px;box-shadow:inset 0 0 0 1px rgba(232,160,32,.1)}
.ni-i{font-size:15px;width:20px;text-align:center;flex-shrink:0}
.ni-b{margin-left:auto;background:var(--rd);color:#fff;font-size:10px;font-weight:700;padding:1px 6px;border-radius:20px;min-width:18px;text-align:center;font-family:var(--fm);animation:pulse 2s infinite}
@keyframes pulse{0%,100%{box-shadow:0 0 0 0 rgba(240,96,112,.4)}50%{box-shadow:0 0 0 4px rgba(240,96,112,0)}}
.nsep{height:1px;background:linear-gradient(90deg,transparent,var(--bd),transparent);margin:6px 14px}
.nlbl{font-size:8px;color:var(--t4);text-transform:uppercase;letter-spacing:2.5px;padding:10px 20px 3px;font-weight:700}
.sb-ft{padding:12px 16px;border-top:1px solid var(--bd);font-size:9.5px;color:var(--t4);font-family:var(--fm);letter-spacing:.03em}
/* Main */
.main{flex:1;margin-left:228px;display:flex;flex-direction:column;min-height:100vh}
.tb{height:56px;background:rgba(11,15,26,.92);border-bottom:1px solid var(--bd);display:flex;align-items:center;padding:0 24px;gap:12px;position:sticky;top:0;z-index:100;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px)}
.tb-t{font-size:14px;font-weight:700;letter-spacing:3px;text-transform:uppercase;color:var(--t1)}
.tb-r{margin-left:auto;display:flex;align-items:center;gap:8px}
.dbind{display:flex;align-items:center;gap:6px;font-size:11px;font-family:var(--fm);padding:5px 11px;border-radius:6px;border:1px solid var(--bd2);background:var(--bg3);cursor:pointer;color:var(--t3);transition:all .2s}
.dbind.dok{border-color:rgba(45,212,160,.4);color:var(--gn);background:rgba(45,212,160,.05)}
.dbind.derr{border-color:rgba(240,96,112,.4);color:var(--rd)}
.cnt{padding:24px;flex:1}
.pg{display:none}
.pg.on{display:block;animation:fi .22s cubic-bezier(.4,0,.2,1)}
@keyframes fi{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
/* Pulsanti */
.btn{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:7px;border:none;cursor:pointer;font-family:var(--fn);font-size:12px;font-weight:600;transition:all .18s cubic-bezier(.4,0,.2,1);white-space:nowrap;letter-spacing:.04em;position:relative;overflow:hidden}
.btn::after{content:'';position:absolute;inset:0;opacity:0;background:linear-gradient(rgba(255,255,255,.1),rgba(255,255,255,0));transition:opacity .18s}
.btn:hover::after{opacity:1}
.btn:active{transform:translateY(1px)!important}
.ba{background:linear-gradient(135deg,var(--a),var(--a2));color:#000;box-shadow:0 2px 12px rgba(232,160,32,.25)}
.ba:hover{box-shadow:0 4px 20px rgba(232,160,32,.4);transform:translateY(-1px)}
.bg{background:var(--bg3);color:var(--t2);border:1px solid var(--bd2)}
.bg:hover{color:var(--t1);border-color:var(--bd3);background:var(--bg4)}
.br{background:rgba(240,96,112,.08);color:var(--rd);border:1px solid rgba(240,96,112,.2)}
.br:hover{background:rgba(240,96,112,.16);border-color:rgba(240,96,112,.4)}
.bgn{background:rgba(45,212,160,.08);color:var(--gn);border:1px solid rgba(45,212,160,.2)}
.bgn:hover{background:rgba(45,212,160,.16);border-color:rgba(45,212,160,.4)}
.bbl{background:rgba(74,158,255,.08);color:var(--bl);border:1px solid rgba(74,158,255,.2)}
.bbl:hover{background:rgba(74,158,255,.16);border-color:rgba(74,158,255,.4)}
.bpu{background:rgba(168,126,245,.08);color:var(--pu);border:1px solid rgba(168,126,245,.2)}
.bsm{padding:4px 10px;font-size:11px}
.bxs{padding:3px 7px;font-size:10px;border-radius:5px}
/* Card */
.card{background:var(--bg2);border:1px solid var(--bd);border-radius:var(--r2);overflow:hidden;transition:border-color .2s}
.card:hover{border-color:var(--bd2)}
.ch{padding:13px 18px;border-bottom:1px solid var(--bd);display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:rgba(255,255,255,.015)}
.ct{font-size:11px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:var(--t2)}
.ca{margin-left:auto;display:flex;gap:6px;align-items:center}
.cb{padding:20px}
.g2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.sec{font-size:11px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:var(--t3);margin-bottom:14px;display:flex;align-items:center;gap:10px}
.sec::after{content:'';flex:1;height:1px;background:linear-gradient(90deg,var(--bd),transparent)}
/* KPI */
.kg{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-bottom:22px}
.kpi{background:var(--bg2);border:1px solid var(--bd);border-radius:var(--r2);padding:16px 16px 14px;position:relative;overflow:hidden;transition:all .22s cubic-bezier(.4,0,.2,1)}
.kpi:hover{transform:translateY(-3px);border-color:var(--bd3);box-shadow:var(--sh2)}
.kpi::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;border-radius:var(--r2) var(--r2) 0 0}
.kpi::after{content:'';position:absolute;top:0;right:0;width:80px;height:80px;border-radius:50%;opacity:.06;transform:translate(30%,-30%)}
.ka::before{background:linear-gradient(90deg,var(--a),var(--a2))}.ka::after{background:var(--a)}
.kbl::before{background:var(--bl)}.kbl::after{background:var(--bl)}
.kgn::before{background:var(--gn)}.kgn::after{background:var(--gn)}
.kye::before{background:var(--or)}.kye::after{background:var(--or)}
.kre::before{background:var(--rd)}.kre::after{background:var(--rd)}
.kcy::before{background:var(--cy)}.kcy::after{background:var(--cy)}
.kpu::before{background:var(--pu)}.kpu::after{background:var(--pu)}
.ki{font-size:20px;margin-bottom:8px;display:block}
.kv{font-size:26px;font-weight:800;line-height:1;margin-bottom:4px;letter-spacing:-1px}
.kl{font-size:9.5px;color:var(--t3);font-weight:700;text-transform:uppercase;letter-spacing:1.2px}
.ks{font-size:9px;color:var(--t4);margin-top:3px;font-family:var(--fm)}
/* KPI v2 */
.kpi2-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:20px}
@media(max-width:900px){.kpi2-grid{grid-template-columns:repeat(2,1fr)}}
.kpi2{background:var(--bg2);border:1px solid var(--bd2);border-radius:var(--r2);padding:18px 20px;display:flex;align-items:flex-start;gap:14px;cursor:default;transition:transform .18s,box-shadow .18s;position:relative;overflow:hidden}
.kpi2:hover{transform:translateY(-2px);box-shadow:var(--sh2)}
.kpi2-icon{width:44px;height:44px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:20px;flex-shrink:0}
.kpi2-icon.gold{background:rgba(232,160,32,.15)}.kpi2-icon.blue{background:rgba(79,142,247,.15)}.kpi2-icon.green{background:rgba(45,212,160,.15)}.kpi2-icon.red{background:rgba(240,96,112,.15)}.kpi2-icon.purple{background:rgba(167,139,250,.15)}
.kpi2-body{flex:1;min-width:0}
.kpi2-val{font-size:24px;font-weight:800;color:var(--t1);font-family:var(--fm);line-height:1.1;margin-bottom:2px}
.kpi2-label{font-size:11px;color:var(--t3);margin-bottom:6px;text-transform:uppercase;letter-spacing:.6px;font-weight:600}
.kpi2-trend{display:inline-flex;align-items:center;gap:3px;font-size:11px;font-weight:700;font-family:var(--fm);padding:1px 6px;border-radius:4px}
.kpi2-trend.up{color:var(--gn);background:rgba(45,212,160,.12)}.kpi2-trend.down{color:var(--rd);background:rgba(240,96,112,.12)}.kpi2-trend.neu{color:var(--t3);background:var(--bg4)}
/* Tabelle */
.tw{overflow-x:auto}
table{width:100%;border-collapse:collapse}
th{padding:10px 14px;text-align:left;font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:var(--t3);background:var(--bg3);border-bottom:1px solid var(--bd);white-space:nowrap;user-select:none}
tbody tr{border-bottom:1px solid rgba(28,37,56,.6);transition:background .12s}
tbody tr:last-child{border-bottom:none}
tbody tr:hover{background:rgba(255,255,255,.025)}
td{padding:10px 14px;font-size:13px;vertical-align:middle}
.tda{display:flex;gap:4px;align-items:center}
/* Badge & Pills */
.pill{display:inline-flex;align-items:center;padding:3px 9px;border-radius:20px;font-size:10.5px;font-weight:700;white-space:nowrap;letter-spacing:.3px}
.pgn{background:rgba(45,212,160,.12);color:var(--gn);border:1px solid rgba(45,212,160,.2)}
.pye{background:rgba(245,144,66,.12);color:var(--or);border:1px solid rgba(245,144,66,.2)}
.pre{background:rgba(240,96,112,.12);color:var(--rd);border:1px solid rgba(240,96,112,.2)}
.pbl{background:rgba(74,158,255,.12);color:var(--bl);border:1px solid rgba(74,158,255,.2)}
.pgy{background:rgba(128,153,184,.08);color:var(--t2);border:1px solid var(--bd2)}
.ppu{background:rgba(168,126,245,.12);color:var(--pu);border:1px solid rgba(168,126,245,.2)}
/* Form */
.fg{display:flex;flex-direction:column;gap:5px}
.fg2{display:grid;grid-template-columns:1fr 1fr;gap:13px}
.fg3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:13px}
.fg4{display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:13px}
.full{grid-column:1/-1}
label{font-size:9.5px;font-weight:700;color:var(--t3);text-transform:uppercase;letter-spacing:1.2px;font-family:var(--fn)}
input,select,textarea{background:var(--bg3);border:1px solid var(--bd2);border-radius:7px;padding:8px 11px;color:var(--t1);font-family:var(--fn);font-size:13px;outline:none;transition:border-color .18s,box-shadow .18s,background .18s;width:100%}
input:focus,select:focus,textarea:focus{border-color:var(--a);box-shadow:0 0 0 3px rgba(232,160,32,.1);background:var(--bg4)}
input::placeholder{color:var(--t4);font-weight:400}
select option{background:var(--bg2);color:var(--t1)}
textarea{resize:vertical;min-height:62px;line-height:1.6}
input[type=color]{padding:3px 5px;height:36px;cursor:pointer}
.srch{position:relative;display:inline-flex;align-items:center}
.si{font-size:13px;pointer-events:none;position:absolute;left:11px;color:var(--t3)}
.srch input{padding-left:32px;min-width:200px}
.fbar{display:flex;gap:9px;margin-bottom:16px;flex-wrap:wrap;align-items:center}
.fsel{background:var(--bg2);border:1px solid var(--bd2);border-radius:7px;padding:7px 11px;color:var(--t2);font-family:var(--fn);font-size:12px;outline:none;cursor:pointer;transition:all .18s}
.fsel:focus,.fsel:hover{border-color:var(--bd3);color:var(--t1)}
/* Toggle */
.ttog{display:grid;grid-template-columns:1fr 1fr;border-radius:9px;overflow:hidden;border:1px solid var(--bd2);background:var(--bg3)}
.ttb{padding:12px;text-align:center;cursor:pointer;font-size:12px;font-weight:700;transition:all .2s;background:transparent;color:var(--t3);border:none;font-family:var(--fn);letter-spacing:1px}
.ttb:hover{color:var(--t2);background:rgba(255,255,255,.03)}
.ttc{background:rgba(45,212,160,.14)!important;color:var(--gn)!important;box-shadow:inset 0 0 0 1px rgba(45,212,160,.2)}
.tts{background:rgba(240,96,112,.14)!important;color:var(--rd)!important}
/* Articolo preview */
.apv{background:var(--bg3);border:1px solid var(--bd2);border-radius:10px;padding:14px 18px;display:none;gap:20px;flex-wrap:wrap;align-items:center}
.apv.on{display:flex}
.api{font-size:9.5px;color:var(--t3);font-weight:700;text-transform:uppercase;letter-spacing:.5px}
.api strong{display:block;font-size:16px;color:var(--t1);font-weight:700;text-transform:none;margin-top:2px}
.aph{width:60px;height:60px;border-radius:9px;background:var(--bg4);border:1px solid var(--bd2);display:flex;align-items:center;justify-content:center;font-size:24px;flex-shrink:0;cursor:zoom-in;overflow:hidden}
.aph img{width:100%;height:100%;object-fit:cover}
.bigsub{width:100%;padding:13px;font-size:13px;font-weight:700;letter-spacing:2px;border-radius:9px;border:none;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);margin-top:14px}
.bsc{background:linear-gradient(135deg,var(--gn),#1fb886);color:#000;box-shadow:0 2px 16px rgba(45,212,160,.25)}
.bss{background:linear-gradient(135deg,var(--rd),#e04050);color:#fff;box-shadow:0 2px 16px rgba(240,96,112,.25)}
.bsr{background:linear-gradient(135deg,var(--pu),#8b6bdf);color:#fff}
.bigsub:hover{transform:translateY(-2px);filter:brightness(1.1);box-shadow:var(--sh2)}
/* Modali */
.ov{position:fixed;inset:0;background:rgba(0,0,8,.82);z-index:500;display:none;align-items:center;justify-content:center;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);padding:16px}
.ov.on{display:flex}
.mod{background:var(--bg2);border:1px solid var(--bd2);border-radius:var(--r3);width:min(640px,100%);max-height:92vh;overflow-y:auto;padding:26px;animation:pi .22s cubic-bezier(.34,1.56,.64,1);box-shadow:var(--sh3),0 0 0 1px rgba(232,160,32,.06)}
.modxl{width:min(860px,100%)}
.modxxl{width:min(1100px,100%)}
@keyframes pi{from{transform:scale(.88) translateY(20px);opacity:0}to{transform:scale(1) translateY(0);opacity:1}}
.mth{font-size:14px;font-weight:700;letter-spacing:2.5px;text-transform:uppercase;margin-bottom:22px;color:var(--a);display:flex;align-items:center;gap:10px}
.mth::after{content:'';flex:1;height:1px;background:linear-gradient(90deg,rgba(232,160,32,.3),transparent)}
.mft{display:flex;gap:9px;margin-top:22px;justify-content:flex-end;padding-top:16px;border-top:1px solid var(--bd)}
/* Toast */
.tw2{position:fixed;bottom:22px;right:22px;z-index:9999;display:flex;flex-direction:column-reverse;gap:8px;pointer-events:none}
.toast{display:flex;align-items:flex-start;gap:10px;padding:11px 16px;border-radius:10px;min-width:240px;max-width:380px;font-size:13px;font-family:var(--fn);font-weight:500;box-shadow:0 8px 32px rgba(0,0,0,.45);opacity:1;transform:translateX(0);transition:opacity .4s ease,transform .4s ease;pointer-events:auto;cursor:pointer;backdrop-filter:blur(12px);position:relative;overflow:hidden}
.toast::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px}
.toast::after{content:'';position:absolute;bottom:0;left:0;height:2px;animation:toastProgress 3.5s linear forwards}
@keyframes toastProgress{from{width:100%}to{width:0}}
.tok{background:rgba(15,25,15,.9);color:var(--gn)}.tok::before{background:var(--gn)}.tok::after{background:var(--gn)}
.twarn,.twn{background:rgba(25,20,8,.9);color:var(--or)}.twarn::before,.twn::before{background:var(--or)}.twarn::after,.twn::after{background:var(--or)}
.terr{background:rgba(25,8,12,.9);color:var(--rd)}.terr::before{background:var(--rd)}.terr::after{background:var(--rd)}
.tinfo{background:rgba(8,15,25,.9);color:var(--bl)}.tinfo::before{background:var(--bl)}.tinfo::after{background:var(--bl)}
.toast-icon{font-size:16px;flex-shrink:0;margin-top:1px}
.toast-body{flex:1}
.toast-title{font-weight:700;font-size:12px;text-transform:uppercase;letter-spacing:.8px;margin-bottom:2px}
.toast-msg{font-size:12px;opacity:.85;line-height:1.4}
.toast-close{background:none;border:none;cursor:pointer;color:inherit;opacity:.5;font-size:14px;padding:0;transition:opacity .15s;flex-shrink:0;pointer-events:auto}
.toast-close:hover{opacity:1}
/* Barre progresso */
.sb2{height:5px;border-radius:3px;background:var(--bg4);width:64px;overflow:hidden;flex-shrink:0;display:inline-block}
.sb2f{height:100%;border-radius:3px;transition:width .4s}
/* Categorie */
.catb{display:inline-block;padding:3px 8px;border-radius:6px;font-size:11px;font-weight:700}
/* Alert */
.al{border-radius:10px;padding:11px 16px;margin-bottom:14px;display:flex;align-items:center;gap:10px;font-size:13px;font-weight:500}
.al-y{background:rgba(245,144,66,.1);border:1px solid rgba(245,144,66,.25);color:var(--or)}
.al-r{background:rgba(240,96,112,.1);border:1px solid rgba(240,96,112,.25);color:var(--rd)}
.al-g{background:rgba(45,212,160,.1);border:1px solid rgba(45,212,160,.25);color:var(--gn)}
/* Commesse/Accordion */
.cc{background:var(--bg2);border:1px solid var(--bd);border-radius:var(--r2);overflow:hidden;margin-bottom:12px;transition:border-color .2s}
.cc:hover{border-color:var(--bd2)}
.cch{padding:13px 18px;display:flex;align-items:center;gap:12px;flex-wrap:wrap;cursor:pointer;user-select:none;transition:background .18s}
.cch:hover{background:rgba(255,255,255,.025)}
.ccb{padding:0;max-height:0;overflow:hidden;transition:max-height .35s ease,padding .35s ease}
.ccb.on{max-height:2000px;padding:16px 18px}
/* Dropdown autocomplete */
.artdd{background:var(--bg2);border:1px solid var(--bd2);border-radius:10px;max-height:240px;overflow-y:auto;display:none;margin-top:4px;box-shadow:var(--sh3);position:absolute;left:0;right:0;z-index:300}
.adi{padding:10px 14px;cursor:pointer;border-bottom:1px solid rgba(28,37,56,.5);display:flex;align-items:center;gap:11px;transition:background .12s}
.adi:hover{background:var(--bg3)}
.adi:last-child{border-bottom:none}
/* Schermata login */
#db-screen{position:fixed;inset:0;background:var(--bg);z-index:999;display:flex;align-items:center;justify-content:center}
#db-screen.h{display:none}
.dbox{background:var(--bg2);border:1px solid var(--bd2);border-radius:20px;padding:40px 48px;text-align:center;max-width:460px;width:100%;box-shadow:var(--sh3),0 0 0 1px rgba(232,160,32,.08)}
.dbl{font-size:30px;font-weight:800;letter-spacing:5px;color:var(--a);margin-bottom:5px;text-shadow:0 0 40px rgba(232,160,32,.3)}
.dbs{color:var(--t2);font-size:13px;margin-bottom:28px;line-height:1.7}
.dbb{width:100%;padding:13px;font-size:13px;font-weight:700;letter-spacing:2px;border-radius:10px;border:none;cursor:pointer;background:linear-gradient(135deg,var(--a),var(--a2));color:#000;margin-bottom:9px;transition:all .2s;box-shadow:0 2px 16px rgba(232,160,32,.2)}
.dbb:hover{transform:translateY(-2px);box-shadow:0 6px 24px rgba(232,160,32,.35)}
.dbb:disabled{opacity:.5;cursor:not-allowed;transform:none}
.pb-login-inp{width:100%;padding:10px 13px;background:var(--bg3);border:1px solid var(--bd2);border-radius:9px;color:var(--t1);font-family:var(--fn);font-size:13px;outline:none;margin-bottom:10px;transition:border-color .18s,box-shadow .18s;text-align:left}
.pb-login-inp:focus{border-color:var(--a);box-shadow:0 0 0 3px rgba(232,160,32,.12)}
.pb-err{color:var(--rd);font-size:11px;margin-bottom:10px;min-height:16px;font-family:var(--fm)}
.pb-spinner{display:inline-block;width:14px;height:14px;border:2px solid rgba(0,0,0,.3);border-top-color:#000;border-radius:50%;animation:spin .6s linear infinite;vertical-align:middle;margin-right:6px}
@keyframes spin{to{transform:rotate(360deg)}}
/* Skeleton */
@keyframes shimmer{0%{background-position:-600px 0}100%{background-position:600px 0}}
.skeleton{background:linear-gradient(90deg,var(--bg3) 25%,var(--bg4) 50%,var(--bg3) 75%);background-size:600px 100%;animation:shimmer 1.4s ease-in-out infinite;border-radius:5px}
.sk-line{height:13px;margin-bottom:8px}.sk-line.sk-w-80{width:80%}.sk-line.sk-w-60{width:60%}.sk-line.sk-w-40{width:40%}.sk-line.sk-w-20{width:20%}
.sk-cell{height:38px;border-radius:4px}.sk-kpi{height:90px;border-radius:var(--r2)}
/* Expiry badges */
.exb{display:inline-flex;align-items:center;gap:3px;padding:2px 8px;border-radius:6px;font-size:10px;font-weight:700;font-family:var(--fm)}
.exok{background:rgba(45,212,160,.1);color:var(--gn);border:1px solid rgba(45,212,160,.2)}
.exsn{background:rgba(245,144,66,.1);color:var(--or);border:1px solid rgba(245,144,66,.2)}
.exex{background:rgba(240,96,112,.1);color:var(--rd);border:1px solid rgba(240,96,112,.2)}
/* Grafico barre */
.bcr{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.bclb{font-size:11px;color:var(--t2);width:90px;flex-shrink:0;text-align:right;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bcbw{flex:1;background:var(--bg4);border-radius:4px;height:18px;overflow:hidden}
.bcb{height:100%;border-radius:4px;transition:width .6s cubic-bezier(.4,0,.2,1);display:flex;align-items:center;padding-left:7px;font-size:10px;font-weight:700;color:rgba(0,0,0,.65);min-width:2px}
.bcv{font-family:var(--fm);font-size:10px;color:var(--t2);width:74px;flex-shrink:0;text-align:right}
/* Toggle switch */
.tgl{position:relative;width:40px;height:22px;flex-shrink:0;margin-top:3px}
.tgl input{opacity:0;width:0;height:0}
.tsl{position:absolute;inset:0;background:var(--bg4);border-radius:11px;cursor:pointer;transition:.25s;border:1px solid var(--bd3)}
.tsl::before{content:'';position:absolute;width:16px;height:16px;left:2px;top:2px;background:var(--t3);border-radius:50%;transition:.25s}
.tgl input:checked+.tsl{background:rgba(232,160,32,.2);border-color:var(--a)}
.tgl input:checked+.tsl::before{transform:translateX(18px);background:var(--a)}
/* Image drop zone */
.imd{border:2px dashed var(--bd2);border-radius:10px;padding:20px;text-align:center;cursor:pointer;transition:all .2s;position:relative}
.imd:hover{border-color:var(--a);background:var(--ad2)}
.imd input{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%}
.impr{width:100%;max-height:160px;object-fit:contain;border-radius:8px;margin-top:10px;display:none}
.impr.on{display:block}
/* Note veloci */
.nota{display:flex;align-items:flex-start;gap:9px;padding:9px 11px;border-radius:8px;margin-bottom:6px;border:1px solid transparent;position:relative;transition:all .18s}
.nota:hover{transform:translateX(2px)}
.nota.chiusa{opacity:.4}
.nota-or{background:rgba(245,144,66,.07);border-color:rgba(245,144,66,.18)}
.nota-bl{background:rgba(74,158,255,.07);border-color:rgba(74,158,255,.18)}
.nota-gn{background:rgba(45,212,160,.07);border-color:rgba(45,212,160,.18)}
.nota-pu{background:rgba(168,126,245,.07);border-color:rgba(168,126,245,.18)}
.nota-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0;margin-top:5px}
.nota-or .nota-dot{background:var(--or)}.nota-bl .nota-dot{background:var(--bl)}.nota-gn .nota-dot{background:var(--gn)}.nota-pu .nota-dot{background:var(--pu)}
.nota-testo{flex:1;font-size:13px;line-height:1.55;cursor:pointer;word-break:break-word}
.nota-meta{font-size:9px;color:var(--t4);font-family:var(--fm);margin-top:2px}
.nota-btn{background:none;border:none;cursor:pointer;color:var(--t4);font-size:13px;padding:0 3px;transition:color .15s;flex-shrink:0}
.nota-btn:hover{color:var(--t1)}
/* Quick Search */
#qs-ov{position:fixed;inset:0;background:rgba(0,0,10,.8);z-index:800;display:none;align-items:flex-start;justify-content:center;padding-top:9vh;backdrop-filter:blur(6px)}
#qs-ov.on{display:flex}
#qs-box{background:var(--bg2);border:1px solid var(--bd2);border-radius:14px;width:min(600px,92vw);box-shadow:var(--sh3)}
#qs-inp{width:100%;background:transparent;border:none;padding:17px 20px;font-size:15px;color:var(--t1);font-family:var(--fn);outline:none;border-bottom:1px solid var(--bd)}
#qs-inp::placeholder{color:var(--t4)}
#qs-res{max-height:380px;overflow-y:auto}
#qs-hint{padding:8px 18px;font-size:10px;color:var(--t4);display:flex;justify-content:space-between}
.qs-item{display:flex;align-items:center;gap:13px;padding:10px 18px;cursor:pointer;border-bottom:1px solid rgba(28,37,56,.4);transition:background .1s}
.qs-item:last-child{border-bottom:none}
.qs-item:hover,.qsa{background:var(--bg3)}
/* Photo zoom */
#photo-zoom-ov{position:fixed;inset:0;background:rgba(0,0,0,.92);z-index:9999;display:none;align-items:center;justify-content:center;cursor:zoom-out;backdrop-filter:blur(8px)}
#photo-zoom-ov.on{display:flex}
#photo-zoom-ov img{max-width:90vw;max-height:88vh;border-radius:10px;box-shadow:var(--sh3);object-fit:contain}
/* Offline banner */
.offline-banner{position:fixed;top:56px;left:228px;right:0;z-index:500;background:rgba(240,96,112,.15);border-bottom:1px solid rgba(240,96,112,.3);padding:8px 24px;display:none;align-items:center;gap:10px;font-size:12px;color:var(--rd);font-weight:600;backdrop-filter:blur(8px)}
.offline-banner.visible{display:flex}
.offline-dot{width:8px;height:8px;border-radius:50%;background:var(--rd);flex-shrink:0}
/* Live indicator */
.live-dot,.live-topbar{display:inline-flex;align-items:center;gap:5px;font-size:10px;color:var(--gn);font-family:var(--fm);padding:3px 8px;background:rgba(45,212,160,.08);border:1px solid rgba(45,212,160,.2);border-radius:6px}
/* Validazione */
input.field-error,select.field-error{border-color:var(--rd)!important;box-shadow:0 0 0 3px rgba(240,96,112,.15)!important}
input.field-ok{border-color:var(--gn)!important}
.field-hint{font-size:10px;margin-top:3px;font-family:var(--fm)}.field-hint.err{color:var(--rd)}.field-hint.ok{color:var(--gn)}
/* Confirm dialog */
#confirm-overlay{position:fixed;inset:0;z-index:9998;background:rgba(0,0,10,.75);backdrop-filter:blur(6px);display:none;align-items:center;justify-content:center}
#confirm-overlay.on{display:flex}
.confirm-box{background:var(--bg2);border:1px solid var(--bd2);border-radius:14px;padding:28px 28px 22px;width:min(420px,92vw);box-shadow:var(--sh3);animation:fi .2s cubic-bezier(.4,0,.2,1)}
.confirm-icon{font-size:36px;margin-bottom:12px;text-align:center}
.confirm-title{font-size:16px;font-weight:800;color:var(--t1);margin-bottom:8px;text-align:center;letter-spacing:.3px}
.confirm-msg{font-size:13px;color:var(--t2);text-align:center;line-height:1.6;margin-bottom:22px}
.confirm-btns{display:flex;gap:10px;justify-content:center}
/* Empty states */
.empty-state{padding:40px 24px;text-align:center;color:var(--t3)}
.empty-state .es-icon{font-size:40px;margin-bottom:12px;opacity:.5}
.empty-state .es-title{font-size:14px;font-weight:700;color:var(--t2);margin-bottom:6px;letter-spacing:.5px}
.empty-state .es-sub{font-size:12px;color:var(--t4);line-height:1.6}
/* Impostazioni */
.imp-tabs{display:flex;gap:4px;padding:0 0 20px;flex-wrap:wrap}
.imp-tab{padding:8px 18px;border-radius:8px;border:1px solid var(--bd2);font-size:12px;font-weight:600;cursor:pointer;transition:all .18s;background:var(--bg3);color:var(--t2);letter-spacing:.3px;display:flex;align-items:center;gap:7px}
.imp-tab:hover{border-color:var(--bd3);color:var(--t1)}
.imp-tab.on{background:var(--ad);border-color:var(--a);color:var(--a);box-shadow:0 0 0 1px rgba(232,160,32,.1)}
.imp-panel{display:none}.imp-panel.on{display:block}
.imp-sec{font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:1.2px;color:var(--t3);margin:20px 0 10px;padding-bottom:6px;border-bottom:1px solid var(--bd)}
.imp-sec:first-child{margin-top:0}
/* Profilo */
.profile-card{display:flex;gap:20px;align-items:flex-start;padding:20px;background:var(--bg3);border:1px solid var(--bd2);border-radius:var(--r2);margin-bottom:16px}
.profile-avatar{width:68px;height:68px;border-radius:50%;background:linear-gradient(135deg,var(--a),var(--a2));display:flex;align-items:center;justify-content:center;font-size:26px;font-weight:800;color:#000;flex-shrink:0;cursor:pointer;transition:transform .18s;border:2px solid rgba(232,160,32,.3)}
.profile-avatar:hover{transform:scale(1.06)}
.profile-info{flex:1;min-width:0}
.profile-name{font-size:16px;font-weight:800;color:var(--t1);margin-bottom:3px}
.profile-role{font-size:11px;color:var(--a);font-family:var(--fm);margin-bottom:8px}
.profile-stats{display:flex;gap:16px}
.profile-stat{text-align:center}
.profile-stat-n{font-size:18px;font-weight:800;color:var(--t1);font-family:var(--fm)}
.profile-stat-l{font-size:9px;color:var(--t3);text-transform:uppercase;letter-spacing:.8px}
/* Opt grid */
.opt-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:10px}
.oc{display:flex;align-items:center;gap:12px;padding:12px 14px;background:var(--bg3);border:1px solid var(--bd2);border-radius:var(--r);transition:border-color .15s}
.oc:hover{border-color:var(--bd3)}
.oc.active{border-color:rgba(232,160,32,.3);background:var(--ad2)}
.oi{font-size:20px;flex-shrink:0;width:28px;text-align:center}
.oin{flex:1;min-width:0}
.on2{font-size:12.5px;font-weight:700;color:var(--t1);margin-bottom:2px}
.od{font-size:10.5px;color:var(--t3);line-height:1.4}
/* Tema card */
.theme-card{cursor:pointer;padding:14px 10px;border-radius:10px;border:1px solid var(--bd2);display:flex;flex-direction:column;align-items:center;gap:6px;transition:all .18s;position:relative}
.theme-card:hover{transform:translateY(-2px);box-shadow:var(--sh2)}
.theme-card.sel{border-width:2px}
.theme-card-dot{width:32px;height:32px;border-radius:50%}
.theme-card-name{font-size:10px;font-weight:600;font-family:var(--fm)}
.theme-card-mode{font-size:9px;opacity:.6}
/* Font opt */
.font-opt{cursor:pointer;padding:9px 14px;border-radius:8px;border:1px solid var(--bd2);background:var(--bg3);font-size:14px;transition:all .2s;text-align:center}
.font-opt:hover,.font-opt.sel{border-color:var(--a);background:var(--ad);color:var(--a)}
/* Danger zone */
.danger-zone{border:1px solid rgba(240,96,112,.25);border-radius:var(--r2);padding:16px 18px;background:rgba(240,96,112,.04)}
.danger-zone-title{font-size:11px;font-weight:800;color:var(--rd);text-transform:uppercase;letter-spacing:.8px;margin-bottom:10px;display:flex;align-items:center;gap:6px}
/* Info badge */
.info-badge{display:inline-flex;align-items:center;gap:5px;font-size:10px;color:var(--t3);font-family:var(--fm);padding:3px 8px;background:var(--bg3);border:1px solid var(--bd);border-radius:5px}
/* Dashboard layout */
.dash-greeting{background:linear-gradient(135deg,var(--bg3) 0%,var(--bg2) 100%);border:1px solid var(--bd2);border-radius:var(--r2);padding:22px 26px;display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:20px;position:relative;overflow:hidden}
.dg-title{font-size:20px;font-weight:800;color:var(--t1);margin-bottom:4px}
.dg-sub{font-size:13px;color:var(--t3);margin-bottom:14px}
.dg-chips{display:flex;gap:8px;flex-wrap:wrap}
.dg-chip{font-size:11px;font-weight:600;padding:4px 10px;border-radius:20px;border:1px solid var(--bd2);color:var(--t2);background:var(--bg4);font-family:var(--fm);cursor:pointer;transition:all .15s}
.dg-chip:hover{border-color:var(--a);color:var(--a)}
.dg-chip.accent{background:var(--ad2);border-color:var(--a);color:var(--a)}
.dg-illus{font-size:64px;opacity:.85;flex-shrink:0;line-height:1}
.dash-row{display:grid;gap:16px;margin-bottom:18px}
.dash-row.c2{grid-template-columns:1fr 1fr}
.dash-row.c3{grid-template-columns:1fr 1fr 1fr}
.dash-row.c21{grid-template-columns:2fr 1fr}
@media(max-width:860px){.dash-row.c2,.dash-row.c21,.dash-row.c12,.dash-row.c3{grid-template-columns:1fr}}
/* Activity feed */
.activity-item{display:flex;align-items:flex-start;gap:12px;padding:10px 16px;border-bottom:1px solid rgba(28,37,56,.5);transition:background .1s}
.activity-item:hover{background:rgba(255,255,255,.015)}
.activity-item:last-child{border-bottom:none}
.act-dot{width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:15px;flex-shrink:0;margin-top:1px}
.act-body{flex:1;min-width:0}
.act-title{font-size:12.5px;font-weight:600;color:var(--t1);margin-bottom:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.act-sub{font-size:11px;color:var(--t3);font-family:var(--fm)}
.act-right{text-align:right;flex-shrink:0}
.act-amount{font-size:12px;font-weight:700;font-family:var(--fm)}
.act-time{font-size:10px;color:var(--t3);margin-top:2px}
/* Lavori in corso */
.comm-dash-item{display:flex;align-items:center;gap:10px;padding:9px 16px;border-bottom:1px solid rgba(28,37,56,.5)}
.comm-dash-item:last-child{border-bottom:none}
.comm-dash-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.comm-dash-info{flex:1;min-width:0}
.comm-dash-name{font-size:12px;font-weight:600;color:var(--t1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.comm-dash-sub{font-size:10.5px;color:var(--t3);font-family:var(--fm)}
.comm-progress-wrap{width:70px;flex-shrink:0}
.comm-progress-bar{height:4px;border-radius:2px;background:var(--bg4);overflow:hidden;margin-bottom:2px}
.comm-progress-fill{height:100%;border-radius:2px;transition:width .4s}
.comm-progress-pct{font-size:9px;color:var(--t3);text-align:right;font-family:var(--fm)}
/* Stock donut */
.stock-legend{display:flex;flex-direction:column;gap:8px;margin-top:12px;padding:0 16px 16px}
.stock-legend-item{display:flex;align-items:center;gap:8px;font-size:12px}
.stock-legend-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}
.stock-legend-label{flex:1;color:var(--t2)}
.stock-legend-val{font-family:var(--fm);font-weight:700;color:var(--t1)}
/* Dipendenti */
.dip-card{background:var(--bg2);border:1px solid var(--bd2);border-radius:var(--r2);padding:0;overflow:hidden;transition:box-shadow .18s,transform .18s}
.dip-card:hover{box-shadow:var(--sh2);transform:translateY(-1px)}
.dip-header{display:flex;align-items:center;gap:14px;padding:14px 18px;border-bottom:1px solid var(--bd)}
.dip-avatar{width:42px;height:42px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:800;flex-shrink:0;color:#000}
.dip-info{flex:1;min-width:0}
.dip-nome{font-size:14px;font-weight:700;color:var(--t1)}
.dip-ruolo{font-size:11px;color:var(--t3);margin-top:1px}
.dip-badges{display:flex;gap:5px;flex-wrap:wrap;margin-top:5px}
.dip-badge{font-size:9px;font-weight:700;padding:2px 6px;border-radius:8px;background:var(--bg4);color:var(--t2);border:1px solid var(--bd2)}
.dip-stats{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--bd)}
.dip-stat{padding:10px 14px;text-align:center;border-right:1px solid var(--bd)}
.dip-stat:last-child{border-right:none}
.dip-stat-val{font-size:18px;font-weight:800;font-family:var(--fm);color:var(--t1)}
.dip-stat-lbl{font-size:9px;color:var(--t3);text-transform:uppercase;letter-spacing:.6px;margin-top:1px}
.dip-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}
/* Calendario presenze */
.cal-header{display:grid;grid-template-columns:120px repeat(31,1fr);gap:1px;background:var(--bg3);border:1px solid var(--bd2);border-radius:var(--r) var(--r) 0 0;overflow:hidden}
.cal-header-cell{padding:6px 2px;text-align:center;font-size:9px;font-weight:700;color:var(--t3);text-transform:uppercase;background:var(--bg3)}
.cal-row{display:grid;grid-template-columns:120px repeat(31,1fr);gap:1px;background:var(--bd);border-left:1px solid var(--bd2);border-right:1px solid var(--bd2)}
.cal-row:last-child{border-bottom:1px solid var(--bd2)}
.cal-name{padding:6px 10px;font-size:11px;font-weight:600;color:var(--t1);background:var(--bg2);display:flex;align-items:center;gap:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cal-cell{height:30px;display:flex;align-items:center;justify-content:center;font-size:9px;font-weight:700;background:var(--bg2);cursor:pointer;transition:filter .1s;position:relative}
.cal-cell:hover{filter:brightness(1.15)}
.cal-cell.present{background:rgba(45,212,160,.25);color:var(--gn)}
.cal-cell.malattia{background:rgba(240,96,112,.2);color:var(--rd)}
.cal-cell.ferie{background:rgba(79,142,247,.2);color:var(--bl)}
.cal-cell.permesso{background:rgba(251,146,60,.2);color:var(--or)}
.cal-cell.straord{background:rgba(167,139,250,.2);color:var(--pu)}
.cal-cell.weekend{background:var(--bg3);color:var(--t3);opacity:.5}
.cal-cell.future{opacity:.3;pointer-events:none}
.ore-table th,.ore-table td{padding:8px 12px;text-align:left}
.ore-total{font-weight:800;color:var(--a);font-family:var(--fm)}
.ore-dip-header{display:flex;align-items:center;gap:10px;padding:10px 14px;background:var(--bg3);border-bottom:1px solid var(--bd)}
/* Commesse tab */
.ctabs{display:flex;border-bottom:1px solid var(--bd);background:var(--bg3);overflow-x:auto;flex-shrink:0}
.ctab{padding:10px 16px;border:none;background:none;cursor:pointer;font-size:12px;font-weight:600;color:var(--t3);border-bottom:2px solid transparent;white-space:nowrap;transition:all .15s;font-family:var(--fn);letter-spacing:.2px;display:flex;align-items:center;gap:6px}
.ctab:hover{color:var(--t1);background:rgba(255,255,255,.03)}
.ctab.on{color:var(--a);border-bottom-color:var(--a);background:rgba(232,160,32,.04)}
.ctab .ctab-badge{background:var(--a);color:#000;font-size:9px;font-weight:800;min-width:16px;height:16px;border-radius:8px;padding:0 4px;display:inline-flex;align-items:center;justify-content:center}
.cpanel{display:none;padding:0}
.cpanel.on{display:block}
.cpanel-inner{padding:18px 22px}
/* Eco cards */
.eco-kpi{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;margin-bottom:20px}
.eco-card{padding:14px;border-radius:var(--r);background:var(--bg3);border:1px solid var(--bd2);position:relative;overflow:hidden}
.eco-card::before{content:'';position:absolute;top:0;left:0;right:0;height:2px}
.eco-card.ricavi::before{background:var(--gn)}.eco-card.costi::before{background:var(--rd)}.eco-card.margine::before{background:var(--a)}.eco-card.neutro::before{background:var(--bl)}
.eco-label{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--t3);margin-bottom:6px}
.eco-value{font-size:20px;font-weight:800;font-family:var(--fm);color:var(--t1);margin-bottom:2px}
.eco-sub{font-size:10px;color:var(--t3);font-family:var(--fm)}
/* File */
.file-row{display:flex;align-items:center;gap:10px;padding:8px 14px;border-bottom:1px solid rgba(28,37,56,.4);transition:background .1s;font-size:12px}
.file-row:hover{background:rgba(255,255,255,.02)}
.file-name{flex:1;min-width:0}
.file-name strong{display:block;color:var(--t1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.file-name span{font-size:10px;color:var(--t3);font-family:var(--fm)}
/* Preventivi */
.prev-col-lbl{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:var(--t3)}
.prev-riga{background:var(--bg3);border:1px solid var(--bd2);border-radius:8px;margin-bottom:5px;overflow:hidden;transition:border-color .15s}
.prev-row{display:grid;grid-template-columns:90px 90px 1fr 110px 120px;gap:12px;align-items:center;padding:10px 14px;border-bottom:1px solid var(--bd);font-size:12px;transition:background .1s}
.prev-row:hover{background:rgba(255,255,255,.02)}
.prev-stato{display:inline-flex;align-items:center;gap:5px;font-size:10px;font-weight:700;padding:3px 8px;border-radius:10px;font-family:var(--fm);white-space:nowrap}
.ps-bozza{background:rgba(128,153,184,.15);color:var(--t2)}.ps-inviato{background:rgba(79,142,247,.15);color:var(--bl)}.ps-accettato{background:rgba(45,212,160,.15);color:var(--gn)}.ps-rifiutato{background:rgba(240,96,112,.15);color:var(--rd)}
/* Prontuario */
.pron-riga{display:grid;grid-template-columns:2fr 3fr 90px 36px;gap:8px;align-items:center;padding:8px 14px;border-bottom:1px solid rgba(28,37,56,.4)}
.pron-riga:last-child{border-bottom:none}
.pron-riga:hover{background:rgba(255,255,255,.015)}
.pron-riga input{background:var(--bg3);border:1px solid var(--bd2);border-radius:6px;padding:5px 9px;color:var(--t1);font-size:12.5px;font-family:inherit;width:100%;transition:border-color .15s}
.pron-riga input:focus{border-color:var(--a);outline:none}
/* Audit */
.audit-row{display:grid;grid-template-columns:130px 80px 80px 1fr 140px;gap:12px;padding:9px 14px;border-bottom:1px solid rgba(28,37,56,.5);align-items:center;font-size:12px;transition:background .1s}
.audit-row:hover{background:rgba(255,255,255,.02)}
.audit-ts{font-family:var(--fm);font-size:10px;color:var(--t3)}
.audit-entity{font-size:10px;background:var(--bg3);border:1px solid var(--bd2);border-radius:4px;padding:2px 7px;display:inline-block}
.audit-desc{color:var(--t2);line-height:1.4;font-size:11.5px}
.audit-user{font-size:10px;color:var(--t3);font-family:var(--fm)}
.audit-op-CREATE{color:var(--gn);font-weight:700}.audit-op-UPDATE{color:var(--bl);font-weight:700}.audit-op-DELETE{color:var(--rd);font-weight:700}.audit-op-LOGIN{color:var(--pu);font-weight:700}.audit-op-EXPORT{color:var(--or);font-weight:700}
/* Responsive */
@media(max-width:768px){
  .sb{transform:translateX(-100%);transition:transform .3s}
  .sb.open{transform:translateX(0)}
  .main{margin-left:0}
  .g2{grid-template-columns:1fr}
  .kg{grid-template-columns:repeat(2,1fr)}
  .modxxl,.modxl{width:min(100%,100vw)}
  .cnt{padding:16px}
  .offline-banner{left:0}
}
@media print{
  .sb,.tb,.no-print{display:none!important}
  .main{margin-left:0!important}
  body{background:#fff;color:#000;font-size:12px}
  .card{border:1px solid #ddd}
}
/* ── MOBILE SIDEBAR ─────────────────────────────────────── */
#sb-hamburger { display:none; background:none; border:none; color:var(--t1); font-size:20px; cursor:pointer; padding:4px 8px; border-radius:6px; }
#sb-hamburger:hover { background:var(--bg3); }
#sb-overlay { display:none; position:fixed; inset:0; background:rgba(0,0,0,.5); z-index:149; }

@media (max-width: 768px) {
  #sb-hamburger { display:flex; align-items:center; justify-content:center; }
  .sb {
    position:fixed; left:0; top:0; bottom:0; z-index:150;
    transform:translateX(-100%);
    transition:transform .25s cubic-bezier(.4,0,.2,1);
    box-shadow:4px 0 24px rgba(0,0,0,.4);
  }
  .sb.open { transform:translateX(0); }
  .sb.open ~ #sb-overlay, #sb-overlay.open { display:block; }
  .main { margin-left:0 !important; }
}
/* ── SIDEBAR PRIMARY ITEMS ──────────────────────────────── */
.ni-primary { font-weight:700; font-size:12.5px; color:var(--t2); letter-spacing:.02em; }
.ni-primary .ni-i { font-size:17px; }
.ni-primary:hover { color:var(--t1); }
.ni-primary.on { color:var(--a); }

/* ── PAGINA PROFILO ─────────────────────────────────────── */
.profilo-header { display:flex; align-items:center; gap:20px; padding:20px 0 24px; }
.profilo-info { flex:1; }
.profilo-nome { font-size:22px; font-weight:800; color:var(--t1); }
.profilo-ruolo { font-size:13px; color:var(--a); font-weight:600; margin:4px 0; }
.profilo-email { font-size:11px; color:var(--t3); font-family:var(--fm); }

/* ── Calendario Profilo ──────────────────────────────────────────── */
.cal-pro-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;margin-bottom:8px}
.cal-pro-day{font-size:9px;font-weight:700;text-align:center;color:var(--t3);padding:3px 0;text-transform:uppercase;letter-spacing:.5px}
.cal-pro-cell{aspect-ratio:1;border-radius:6px;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:10px;font-weight:700;cursor:pointer;position:relative;border:1px solid var(--bd2);background:var(--bg3);transition:opacity .15s;gap:1px;min-height:36px}
.cal-pro-cell:hover{opacity:.75}
.cal-pro-cell.empty{background:transparent;border:none;cursor:default;pointer-events:none}
.cal-pro-cell.weekend{background:var(--bg2);opacity:.35;cursor:default;pointer-events:none}
.cal-pro-cell.vuoto{border:1px dashed var(--bd2);background:var(--bg2)}
.cal-pro-cell.future{opacity:.45;border-style:dashed;cursor:pointer}
.cal-pro-cell.approvata{background:rgba(52,211,153,.18);border-color:rgba(52,211,153,.5);color:var(--gn)}
.cal-pro-cell.bozza{background:rgba(251,146,60,.18);border:1px dashed rgba(251,146,60,.5);color:var(--or)}
.cal-pro-cell.rifiutata{background:rgba(240,96,112,.18);border:1px dashed rgba(240,96,112,.5);color:var(--rd)}
.cal-pro-cell.ferie{background:rgba(99,102,241,.2);border-color:rgba(99,102,241,.5);color:#818cf8}
.cal-pro-cell.malattia{background:rgba(107,114,128,.2);border-color:rgba(107,114,128,.4);color:var(--t2)}
.cal-pro-cell.permesso{background:rgba(157,126,245,.2);border-color:rgba(157,126,245,.4);color:var(--pu)}
.cal-pro-cell.straordinario{background:rgba(52,211,153,.18);border-color:rgba(52,211,153,.5);color:var(--gn)}
.cal-pro-cell .cal-num{font-size:8px;color:var(--t3);position:absolute;top:3px;left:5px}
.cal-pro-cell .cal-ico{font-size:14px;line-height:1}
.cal-pro-cell .cal-ore{font-size:8px;opacity:.85}
.cal-pro-legend{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px;font-size:10px;color:var(--t3)}
.cal-pro-legend span{display:flex;align-items:center;gap:4px}
.cal-pro-legend i{display:inline-block;width:8px;height:8px;border-radius:2px;flex-shrink:0}

/* ── Form ore utente ─────────────────────────────────────────────── */
.ore-tipo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:4px}
.ore-tipo-btn{display:flex;flex-direction:column;align-items:center;gap:5px;padding:10px 6px;border-radius:var(--r);border:2px solid var(--bd2);background:var(--bg3);color:var(--t2);cursor:pointer;font-size:11px;font-weight:600;transition:all .15s;line-height:1}
.ore-tipo-btn span{font-size:22px}
.ore-tipo-btn.on{border-color:var(--a);background:rgba(45,212,160,.1);color:var(--a)}
.ore-stepper{display:flex;align-items:center;gap:14px;justify-content:center;padding:4px 0}
.ore-stepper #mou-ore-val{font-size:26px;font-weight:800;font-family:var(--fm);min-width:64px;text-align:center;color:var(--t1)}
.ore-stepper .btn{width:36px;height:36px;font-size:18px;display:flex;align-items:center;justify-content:center;padding:0;flex-shrink:0}
.mou-lavoro-row{display:grid;grid-template-columns:60px 1fr 1fr 28px;gap:5px;align-items:center;margin-bottom:7px}
.mou-lavoro-row input[type="number"]{text-align:center;font-weight:700;font-family:var(--fm);padding:6px 4px}
.mou-lavoro-row select{font-size:12px}

