@font-face{font-family:"GSans";src:url(fonts/google-sans-flex-latin-400-normal.woff2) format("woff2");font-weight:400;font-display:swap}
[hidden]{display:none!important}
@font-face{font-family:"GSans";src:url(fonts/google-sans-flex-latin-500-normal.woff2) format("woff2");font-weight:500;font-display:swap}
@font-face{font-family:"GSans";src:url(fonts/google-sans-flex-latin-600-normal.woff2) format("woff2");font-weight:600;font-display:swap}
@font-face{font-family:"GSans";src:url(fonts/google-sans-flex-latin-700-normal.woff2) format("woff2");font-weight:700;font-display:swap}

:root{
  color-scheme:light;
  --bg:#eef2f5; --panel:#fbfcfd; --panel2:#f3f6f9; --ink:#0f1d2b; --ink2:#44566a; --muted:#6b7b8b; --line:#dbe3ea; --line2:#e7edf2;
  --accent:#2a78d6; --accent-soft:#e3eefb; --accent-ink:#ffffff;
  --rail:#0d2031; --rail-ink:#c9d6e3; --rail-mute:#7f93a7; --rail-active:#1a3a57;
  --good:#0ca30c; --warn:#fab219; --serious:#ec835a; --crit:#d03b3b;
  --good-t:#006300; --warn-t:#8a5a00; --serious-t:#a8441b; --crit-t:#b02a2a;
  --good-bg:rgba(12,163,12,.12); --warn-bg:rgba(250,178,25,.2); --serious-bg:rgba(236,131,90,.17); --crit-bg:rgba(208,59,59,.12);
  --s1:#2a78d6; --s2:#eb6834; --s3:#1baf7a; --s4:#8a63d2; --s5:#7d8b99; --s6:#c9a227;
  --font:"GSans","Google Sans",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif; --display:"GSans","Google Sans",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  color-scheme:dark;
  --bg:#0a1117; --panel:#131b23; --panel2:#18222b; --ink:#e8eef4; --ink2:#aebccb; --muted:#7f90a2; --line:#233140; --line2:#1c2834;
  --accent:#4a97ee; --accent-soft:#17283b; --accent-ink:#06121e;
  --rail:#0d151c; --rail-active:#1b2a38;
  --good-t:#3ccf3c; --warn-t:#f5bd3a; --serious-t:#f09a78; --crit-t:#ef7777;
  --good-bg:rgba(12,163,12,.2); --warn-bg:rgba(250,178,25,.16); --serious-bg:rgba(236,131,90,.17); --crit-bg:rgba(208,59,59,.2);
  --s1:#3987e5; --s2:#d95926; --s3:#199e70; --s4:#9b7ae0; --s5:#8d9bab; --s6:#d4b13d;
}}
:root[data-theme="dark"]{
  color-scheme:dark;
  --bg:#0a1117; --panel:#131b23; --panel2:#18222b; --ink:#e8eef4; --ink2:#aebccb; --muted:#7f90a2; --line:#233140; --line2:#1c2834;
  --accent:#4a97ee; --accent-soft:#17283b; --accent-ink:#06121e;
  --rail:#0d151c; --rail-active:#1b2a38;
  --good-t:#3ccf3c; --warn-t:#f5bd3a; --serious-t:#f09a78; --crit-t:#ef7777;
  --good-bg:rgba(12,163,12,.2); --warn-bg:rgba(250,178,25,.16); --serious-bg:rgba(236,131,90,.17); --crit-bg:rgba(208,59,59,.2);
  --s1:#3987e5; --s2:#d95926; --s3:#199e70; --s4:#9b7ae0; --s5:#8d9bab; --s6:#d4b13d;
}

*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.5 var(--font);-webkit-font-smoothing:antialiased}
h1,h2,h3{font-family:var(--display);font-weight:600;letter-spacing:-.012em;margin:0}
.score .n,.kpi .v,.stat .v,.crow .sc,.meter .top2 span:last-child,.dl .when{font-variant-numeric:tabular-nums}
button,input,select,textarea{font:inherit;color:inherit}
a{color:var(--accent)}
:focus-visible{outline:2.5px solid var(--accent);outline-offset:2px;border-radius:6px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
svg.i{width:18px;height:18px;flex:none;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}

/* shell */
.shell{display:grid;grid-template-columns:236px 1fr;min-height:100vh}
.rail{background:var(--rail);color:var(--rail-ink);padding:22px 14px;display:flex;flex-direction:column;gap:6px;position:sticky;top:0;height:100vh}
.brand{display:flex;align-items:center;gap:10px;padding:2px 10px 20px;font-family:var(--display);font-weight:600;font-size:21px;color:#fff;letter-spacing:-.02em}
.brand svg{width:30px;height:30px}
.nav{display:flex;flex-direction:column;gap:2px;flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;margin:0 -6px;padding:0 6px;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.18) transparent}
.nav::-webkit-scrollbar{width:6px}.nav::-webkit-scrollbar-thumb{background:rgba(255,255,255,.18);border-radius:3px}
.navgb{display:flex;flex-direction:column;gap:2px}
.navgrp+.navgrp{margin-top:4px}
button.navg{all:unset;box-sizing:border-box;display:flex;align-items:center;gap:8px;width:100%;cursor:pointer;border-radius:9px;padding:7px 12px}
button.navg:hover{background:rgba(255,255,255,.05);color:var(--rail-ink)}
button.navg:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
button.navg span{flex:1}
.navn{font-weight:600;font-size:10.5px;opacity:.7;padding:1px 7px;border-radius:9px;background:rgba(255,255,255,.07)}
button.navg[aria-expanded="true"] .navn{display:none}
.navgrp.here>button.navg{color:var(--rail-ink)}
.chev{width:7px;height:7px;border-right:1.6px solid currentColor;border-bottom:1.6px solid currentColor;transform:rotate(-45deg);transition:transform .15s;margin-right:2px}
button.navg[aria-expanded="true"] .chev{transform:rotate(45deg) translate(-2px,-1px)}
.railgear{margin-left:auto;width:34px;height:34px;border-radius:10px;display:grid;place-items:center;color:var(--rail-ink);text-decoration:none}
.railgear:hover{background:rgba(255,255,255,.08);color:#fff}
.railgear[aria-current="page"]{background:var(--rail-active);color:#fff}
.railgear svg{width:20px;height:20px}
.railgear:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.nav a{display:flex;align-items:center;gap:12px;padding:9px 12px;border-radius:12px 12px 12px 4px;color:var(--rail-ink);text-decoration:none;font-weight:500}
.nav a:hover{background:rgba(255,255,255,.06)}
.nav a[aria-current="page"]{background:var(--rail-active);color:#fff}
.nav .sep{height:1px;background:rgba(255,255,255,.09);margin:10px 8px}
.rail .foot{margin-top:auto;font-size:12px;color:var(--rail-mute);padding:10px 12px}
.main{min-width:0;padding:0 clamp(16px,3vw,40px) 60px}
.top{display:flex;align-items:center;gap:12px;padding:18px 0;flex-wrap:wrap}
.top .grow{flex:1}
.select{appearance:none;background:var(--panel) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' fill='none' stroke='%237f90a2' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M1 1l5 5 5-5'/%3E%3C/svg%3E") no-repeat right 12px center;border:1px solid var(--line);border-radius:12px;padding:8px 34px 8px 14px;font-weight:600;max-width:100%}
.iconbtn{display:inline-grid;place-items:center;width:38px;height:38px;border-radius:12px;border:1px solid var(--line);background:var(--panel);cursor:pointer;color:var(--ink2)}
.iconbtn:hover{border-color:var(--accent);color:var(--accent)}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:12px;background:var(--panel);padding:3px;gap:2px}
.seg button{border:0;background:none;padding:5px 11px;border-radius:9px;cursor:pointer;font-weight:600;color:var(--ink2)}
.seg button[aria-pressed="true"]{background:var(--accent-soft);color:var(--accent)}
.banner{background:var(--warn-bg);color:var(--warn-t);border-radius:12px;padding:8px 14px;font-weight:600;margin-bottom:10px}

/* buttons / forms */
.btn{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line);background:var(--panel);padding:8px 15px;border-radius:12px;cursor:pointer;font-weight:600}
.btn:hover{border-color:var(--accent)}
.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.btn.primary:hover{filter:brightness(1.07)}
.btn.small{padding:4px 10px;font-size:13px;border-radius:9px}
.btn.danger{color:var(--crit-t)}
.btn[disabled]{opacity:.55;cursor:default}
.field{display:flex;flex-direction:column;gap:5px;margin-bottom:12px}
.field>span{font-weight:600;font-size:13px;color:var(--ink2)}
.input,.field input,.field select,.field textarea{border:1px solid var(--line);background:var(--panel);border-radius:11px;padding:9px 12px;width:100%}
.field textarea{min-height:90px;resize:vertical}
.check{display:flex;gap:9px;align-items:center;margin-bottom:10px}
.check input{width:18px;height:18px;accent-color:var(--accent)}
.row{display:flex;gap:12px;flex-wrap:wrap;align-items:center}
.row>.field{flex:1;min-width:160px}
.err{color:var(--crit-t);font-weight:600;min-height:1.4em}
.muted{color:var(--muted)}
.small{font-size:13px}

/* chips */
.chip{display:inline-flex;align-items:center;gap:6px;padding:2px 10px 2px 7px;border-radius:99px;font-weight:600;font-size:13px;white-space:nowrap}
.chip svg.i{width:14px;height:14px;stroke-width:2.4}
.chip.good{background:var(--good-bg);color:var(--good-t)}.chip.warning{background:var(--warn-bg);color:var(--warn-t)}
.chip.serious{background:var(--serious-bg);color:var(--serious-t)}.chip.critical{background:var(--crit-bg);color:var(--crit-t)}
.chip.neutral{background:var(--panel2);color:var(--ink2);border:1px solid var(--line)}
.tag{display:inline-block;padding:1px 8px;border-radius:7px;background:var(--accent-soft);color:var(--accent);font-weight:600;font-size:12.5px}

/* hero */
.hero{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:28px;align-items:end;padding:26px clamp(20px,3vw,40px) 20px;background:var(--panel);border:1px solid var(--line);border-radius:30px 30px 8px 30px}
.hero>*{min-width:0}
.ribbon-wrap{overflow:hidden}
.hero .who{color:var(--muted);font-weight:600;margin-bottom:8px;display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.hero h1{font-size:clamp(30px,4.2vw,52px);line-height:1.04;max-width:18ch;font-variation-settings:"wdth" 100}
.hero .sub{color:var(--ink2);margin-top:10px;max-width:56ch}
.score{text-align:right}
.score .n{font-family:var(--display);font-weight:600;font-size:clamp(64px,9vw,104px);line-height:.85;letter-spacing:-.04em}
.score .n small{font-size:.28em;font-weight:500;color:var(--muted);letter-spacing:0;margin-left:4px}
.score .lbl{margin-top:10px;display:flex;gap:8px;justify-content:flex-end;align-items:center;flex-wrap:wrap}
.score .delta{color:var(--muted);font-size:13px;margin-top:4px}
.ribbon-wrap{grid-column:1/-1;margin-top:10px}
.ribbon{display:flex;align-items:flex-end;gap:2px;height:56px}
.ribbon i{flex:1;min-width:0;border-radius:2px;background:var(--line);position:relative}
.ribbon i:hover{outline:2px solid var(--ink);outline-offset:1px}
.ribbon-axis{display:flex;justify-content:space-between;font-size:12px;color:var(--muted);margin-top:6px}
.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12.5px;color:var(--ink2)}
.legend span{display:inline-flex;align-items:center;gap:6px}
.legend b{width:10px;height:10px;border-radius:3px;display:inline-block}

/* layout blocks */
.grid{display:grid;gap:18px;margin-top:18px}
.g-7-5{grid-template-columns:minmax(0,7fr) minmax(0,5fr)}
.g-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.plate{background:var(--panel);border:1px solid var(--line);border-radius:22px;padding:22px}
.plate.soft{background:var(--panel2);border-color:var(--line2);border-radius:8px 22px 22px 22px}
.plate h2{font-size:20px;margin-bottom:4px}
.plate .hint{color:var(--muted);font-size:13px;margin-bottom:14px}
.page-h{display:flex;align-items:flex-end;gap:16px;flex-wrap:wrap;margin:6px 0 18px}
.page-h h1{font-size:clamp(28px,3.4vw,40px);line-height:1.05}
.page-h .grow{flex:1}
.page-h p{margin:6px 0 0;color:var(--ink2);max-width:62ch}

/* todo list */
.todo{list-style:none;margin:0;padding:0}
.todo li{display:grid;grid-template-columns:auto 1fr;gap:12px;padding:12px 0;border-top:1px solid var(--line2);align-items:start}
.todo li:first-child{border-top:0}
.todo .sev{margin-top:1px}
.todo .t{font-weight:500}
.todo .d{color:var(--muted);font-size:13px}
.more{margin-top:8px}

/* meters */
.meters{display:flex;flex-direction:column;gap:14px}
.meter .top2{display:flex;justify-content:space-between;align-items:baseline;gap:8px;font-weight:600}
.meter .top2 span:last-child{font-family:var(--display);font-size:20px}
.bar{height:9px;border-radius:5px;background:var(--panel2);border:1px solid var(--line2);overflow:hidden;margin-top:6px}
.bar>i{display:block;height:100%;border-radius:5px}
.bar-good{background:var(--good)}.bar-warning{background:var(--warn)}.bar-serious{background:var(--serious)}.bar-critical{background:var(--crit)}
details.why{margin-top:16px;border-top:1px solid var(--line2);padding-top:10px}
details.why summary{cursor:pointer;font-weight:600;color:var(--ink2)}
details.why ul{margin:10px 0 0;padding-left:0;list-style:none;font-size:13.5px;color:var(--ink2)}
details.why li{display:flex;justify-content:space-between;gap:12px;padding:3px 0}
details.why li b{color:var(--crit-t);white-space:nowrap}

/* backup calendar */
.cal{display:flex;flex-direction:column;gap:12px}
.cal .job{font-weight:600;font-size:13.5px;display:flex;justify-content:space-between;gap:8px;margin-bottom:5px}
.cells{display:grid;grid-template-columns:repeat(30,1fr);gap:2px}
.cells.mini{grid-template-columns:repeat(14,1fr)}
.cells i{aspect-ratio:1;border-radius:4px;display:grid;place-items:center;color:#fff;min-width:0}
.cells i svg{width:70%;height:70%;stroke-width:3}
.cells i.ok{background:var(--good)}.cells i.failed{background:var(--crit)}
.cells i.warning{background:var(--warn);color:#0b0b0b}
.cells i.missing{background:transparent;border:1.5px dashed var(--muted);color:var(--muted)}

/* stats */
.stats{display:grid;grid-template-columns:1fr 1fr;gap:16px 12px}
.stat .v{font-family:var(--display);font-weight:600;font-size:34px;line-height:1;letter-spacing:-.03em}
.stat .l{color:var(--muted);font-size:13px;margin-top:4px}
.stat.bad .v{color:var(--crit-t)}

/* deadlines */
.dl{list-style:none;padding:0;margin:0}
.dl li{display:grid;grid-template-columns:62px 1fr;gap:12px;padding:10px 0;border-top:1px solid var(--line2);align-items:center}
.dl li:first-child{border-top:0}
.dl .when{font-family:var(--display);font-weight:600;text-align:center;line-height:1.05;border-radius:10px;padding:6px 4px;background:var(--panel2)}
.dl .when small{display:block;font-family:var(--font);font-weight:500;font-size:11.5px;color:var(--muted)}
.dl .when.late{background:var(--crit-bg);color:var(--crit-t)}.dl .when.soon{background:var(--warn-bg);color:var(--warn-t)}
.dl .what{font-weight:500}.dl .kind{font-size:13px;color:var(--muted)}

/* compliance strip */
.fwbar{display:flex;height:14px;border-radius:7px;overflow:hidden;gap:2px;margin:10px 0}
.fwbar i{display:block;height:100%}
.fwbar .ok{background:var(--good)}.fwbar .partial{background:var(--warn)}.fwbar .gap{background:var(--crit)}.fwbar .unknown{background:var(--line)}

/* tables */
.tablewrap{overflow-x:auto;border:1px solid var(--line);border-radius:20px;background:var(--panel)}
table.t{width:100%;border-collapse:collapse;min-width:640px}
.t th{text-align:left;font-size:13px;font-weight:600;color:var(--muted);padding:12px 16px;border-bottom:1px solid var(--line);white-space:nowrap}
.t td{padding:11px 16px;border-top:1px solid var(--line2);vertical-align:middle}
.t tr:first-child td{border-top:0}
.t tbody tr:hover{background:var(--panel2)}
.t tr.click{cursor:pointer}
.t .num{font-variant-numeric:tabular-nums;text-align:right}
.diskbar{display:inline-block;width:70px;height:7px;border-radius:4px;background:var(--panel2);border:1px solid var(--line2);vertical-align:middle;margin-right:8px;overflow:hidden}
.diskbar i{display:block;height:100%}
.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:14px}
.toolbar .input{max-width:260px}

/* msp */
.kpis{display:flex;gap:clamp(18px,4vw,56px);flex-wrap:wrap;padding:6px 4px 22px}
.kpi .v{font-family:var(--display);font-weight:700;font-size:clamp(38px,5vw,60px);line-height:.95;letter-spacing:-.04em}
.kpi .l{color:var(--ink2);font-weight:500}
.kpi.bad .v{color:var(--crit-t)}
.clients{display:flex;flex-direction:column;gap:10px}
.crow{display:grid;grid-template-columns:minmax(180px,2fr) 110px 84px minmax(0,3fr) minmax(130px,1.4fr);gap:16px;align-items:center;padding:14px 18px;background:var(--panel);border:1px solid var(--line);border-radius:18px;cursor:pointer;text-align:left;width:100%}
.crow:nth-child(odd){border-radius:18px 18px 6px 18px}
.crow:hover{border-color:var(--accent)}
.crow .nm{font-weight:600;font-size:16px}
.crow .sc{font-family:var(--display);font-weight:700;font-size:30px;letter-spacing:-.03em;display:flex;align-items:baseline;gap:8px}
.flags{display:flex;gap:6px;flex-wrap:wrap}
.feed{list-style:none;padding:0;margin:0}
.feed li{display:grid;grid-template-columns:auto 1fr;gap:12px;padding:10px 0;border-top:1px solid var(--line2)}
.feed li:first-child{border-top:0}

/* compliance rows */
.ctrl{display:grid;grid-template-columns:112px 1fr auto;gap:14px;padding:14px 0;border-top:1px solid var(--line2);align-items:start}
.ctrl:first-child{border-top:0}
.ctrl .tt{font-weight:600}.ctrl .ev{color:var(--ink2);font-size:14px}.ctrl .fw{color:var(--muted);font-size:12.5px;margin-top:2px}

/* supplier */
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}
.sup{background:var(--panel);border:1px solid var(--line);border-radius:20px 20px 6px 20px;padding:18px;cursor:pointer;text-align:left}
.sup:hover{border-color:var(--accent)}
.sup h3{font-size:18px;margin-bottom:6px}

/* modal / drawer */
.scrim{position:fixed;inset:0;background:rgba(7,14,21,.5);display:grid;place-items:center;z-index:50;padding:16px}
.dialog{background:var(--panel);border:1px solid var(--line);border-radius:24px;padding:26px;width:min(560px,100%);max-height:90vh;overflow:auto}
.dialog.wide{width:min(940px,100%)}
.dialog h2{font-size:24px;margin-bottom:14px}
.dialog .actions{display:flex;gap:10px;justify-content:flex-end;margin-top:14px}
.tip{position:fixed;z-index:80;background:var(--ink);color:var(--bg);padding:6px 10px;border-radius:9px;font-size:13px;pointer-events:none;max-width:260px;box-shadow:0 6px 24px rgba(0,0,0,.25)}
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:var(--ink);color:var(--bg);padding:10px 18px;border-radius:12px;font-weight:600;z-index:90}
.code{font:13px/1.45 ui-monospace,SFMono-Regular,Menlo,monospace;background:var(--panel2);border:1px solid var(--line);border-radius:12px;padding:12px 14px;overflow-x:auto;white-space:pre}
.qr svg{width:180px;height:180px;border-radius:10px}
.empty{padding:30px;text-align:center;color:var(--muted)}

/* auth */
.auth{min-height:100vh;display:grid;grid-template-columns:1fr minmax(320px,460px);background:var(--bg)}
.auth .art{background:var(--rail);color:#fff;padding:clamp(28px,5vw,64px);display:flex;flex-direction:column;justify-content:space-between;position:relative;overflow:hidden}
.auth .art h1{font-size:clamp(34px,4.4vw,60px);line-height:1.02;max-width:12ch;color:#fff}
.auth .art .ribbon{height:90px;opacity:.9;margin-top:30px}
.auth .art .ribbon i{background:rgba(255,255,255,.2)}
.auth form,.auth .form{padding:clamp(28px,5vw,64px);display:flex;flex-direction:column;justify-content:center}
.auth form h2,.auth .form h2{font-size:28px;margin-bottom:6px}

@media (max-width:1050px){.g-7-5,.g-3{grid-template-columns:1fr}.crow{grid-template-columns:1fr 90px;}.crow .flags,.crow .spark{grid-column:1/-1}}
@media (max-width:860px){
  .shell{grid-template-columns:1fr}
  .rail{position:static;height:auto;flex-direction:row;align-items:center;padding:10px 12px;overflow-x:auto}
  .brand{padding:0 8px 0 4px}.brand span{display:none}.nav{flex-direction:row;overflow:visible;margin:0;padding:0}.nav a span{display:none}.nav .sep,.rail .foot{display:none}
  .navgrp,.navgb{display:flex!important;flex-direction:row}.navgb[hidden]{display:flex!important}button.navg{display:none}.navgrp+.navgrp{margin:0}.railgear{margin-left:4px}
  .hero{grid-template-columns:1fr}.score{text-align:left}.score .lbl{justify-content:flex-start}
  .auth{grid-template-columns:1fr}.auth .art{min-height:240px}
}
@media (prefers-reduced-motion:no-preference){
  .ribbon i{animation:rise .7s cubic-bezier(.2,.8,.2,1) both;animation-delay:calc(var(--k)*6ms);transform-origin:bottom}
  @keyframes rise{from{transform:scaleY(0)}to{transform:scaleY(1)}}
}

/* illustrazioni */
.ill{display:inline-block;flex:none;line-height:0}
.ill svg{width:100%;height:100%;overflow:visible}
.ill .f{fill:var(--accent-soft);stroke:var(--ink2);stroke-width:2;stroke-linejoin:round}
.ill .p{fill:var(--panel);stroke:var(--ink2);stroke-width:1.6}
.ill .w{fill:var(--panel);stroke:var(--ink2);stroke-width:2}
.ill .l{fill:none;stroke:var(--ink2);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.ill .la{fill:none;stroke:var(--accent);stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}
.ill .lw{fill:none;stroke:#fff;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}
.ill .a{fill:var(--accent)}.ill .g{fill:var(--good)}
.tile{display:inline-grid;place-items:center;width:42px;height:42px;border-radius:12px 12px 12px 4px;background:var(--panel2);border:1px solid var(--line2);vertical-align:middle;margin-right:12px}
.namecell{display:flex;align-items:center}
.stat{display:flex;gap:14px;align-items:center}
.stat .ill{opacity:.95}
.emptyart{display:flex;flex-direction:column;align-items:center;gap:10px;padding:26px 16px;color:var(--muted);text-align:center}
.dark-scope{--accent-soft:rgba(255,255,255,.07);--ink2:#9db3c9;--accent:#6db0ff;--panel:#0d2031;--good:#3ccf3c}
.auth .art-scene{display:flex;gap:clamp(10px,2vw,26px);align-items:flex-end;margin-top:34px;flex-wrap:wrap}

.namecell strong{white-space:nowrap}

/* ---- grafici */
.gauge,.dwrap{position:relative;flex:none}
.gv{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1}
.gv b{font-size:30px;font-weight:600;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.gv small{font-size:12px;color:var(--muted);margin-top:4px}
.garc{transition:stroke-dasharray .8s cubic-bezier(.2,.7,.2,1)}
.donut{display:flex;align-items:center;gap:22px;flex-wrap:wrap}
.lg{list-style:none;margin:0;padding:0;display:grid;gap:7px;flex:1;min-width:150px}
.lg li{display:flex;align-items:center;gap:9px;font-size:13.5px}
.lg i{width:10px;height:10px;border-radius:3px;flex:none}
.lg span{flex:1;color:var(--ink2)} .lg b{font-variant-numeric:tabular-nums}
.lg em{font-style:normal;font-size:11.5px;background:var(--serious-bg);color:var(--serious-t);border-radius:6px;padding:1px 7px}
.cols{display:flex;align-items:flex-end;gap:10px}
.col{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:5px;height:100%}
.col i{width:100%;max-width:46px;border-radius:5px 5px 0 0;transition:height .6s}
.cv{font-size:12.5px;font-weight:600;font-variant-numeric:tabular-nums;min-height:16px}
.cl{font-size:11.5px;color:var(--muted);white-space:nowrap}
.hbars{display:grid;gap:9px}
.hb{display:grid;grid-template-columns:minmax(90px,150px) 1fr 34px;gap:10px;align-items:center;font-size:13.5px}
.hl{color:var(--ink2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ht{height:8px;background:var(--line2);border-radius:6px;overflow:hidden;display:block}
.ht i{display:block;height:100%;border-radius:6px}
.hb b{text-align:right;font-variant-numeric:tabular-nums}
.usebar{display:block;height:8px;border-radius:6px;background:var(--line2);overflow:hidden;min-width:90px}
.usebar i{display:block;height:100%;border-radius:6px}
.usebar.big{height:11px}

/* ---- riepilogo parco */
.fleet{display:grid;grid-template-columns:repeat(12,1fr);gap:16px;margin-bottom:18px}
.fleet .plate{grid-column:span 4;margin:0}
.fleet .w6{grid-column:span 6}.fleet .w8{grid-column:span 8}.fleet .w12{grid-column:span 12}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(165px,1fr));gap:12px;grid-column:span 12}
.kpi2{position:relative;background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:16px 16px 14px;display:flex;flex-direction:column;gap:0;overflow:hidden}
.kpi2 .kr{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px;flex-direction:row-reverse}
.kpi2::before{content:"";position:absolute;left:0;top:0;right:0;height:3px;background:var(--good)}
.kpi2.bad::before{background:linear-gradient(90deg,var(--serious),var(--crit))}
.kpi2 .kic{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;flex:none;background:var(--accent-soft);color:var(--accent)}
.kpi2.bad .kic{background:var(--serious-bg);color:var(--serious-t)}
.kpi2.ok .kic{background:var(--good-bg);color:var(--good-t)}
.kpi2 .kic svg{width:22px;height:22px}
.kpi2 .v{font-size:30px;font-weight:600;line-height:1;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.kpi2 .l{font-size:13.5px;color:var(--ink2);font-weight:500}
.kpi2 .ks{font-size:12px;color:var(--muted);margin-top:3px}
.kpi2.bad{background:linear-gradient(180deg,var(--serious-bg),transparent 70%),var(--panel);border-color:var(--line)}
.riskrow{display:flex;align-items:center;gap:12px;padding:8px 6px;border-radius:10px;cursor:pointer}
.riskrow:hover,.riskrow:focus-visible{background:var(--panel2);outline:none}
.riskrow .rs{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;font-weight:600;font-size:14px;color:#fff;flex:none}
.riskrow .rt{flex:1;min-width:0}.riskrow .rt small{display:block;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media (max-width:1000px){.fleet .plate,.fleet .w6,.fleet .w8{grid-column:span 12}}

/* ---- scheda macchina (pannello laterale) */
.dv-back{position:fixed;inset:0;background:rgba(6,14,22,.55);backdrop-filter:blur(2px);z-index:60;animation:fade .2s}
.dv{position:fixed;top:0;right:0;bottom:0;width:min(1280px,96vw);background:var(--bg);z-index:61;overflow:auto;box-shadow:-20px 0 60px rgba(0,0,0,.3);animation:slide .28s cubic-bezier(.2,.8,.2,1)}
@keyframes slide{from{transform:translateX(40px);opacity:0}to{transform:none;opacity:1}}
@keyframes fade{from{opacity:0}to{opacity:1}}
.dv-hero{position:relative;padding:26px 28px 22px;color:#eaf2fa;background:linear-gradient(135deg,#0d2031 0%,#14344f 60%,#1c4a73 100%);overflow:hidden}
.dv-hero::after{content:"";position:absolute;right:-60px;top:-60px;width:260px;height:260px;border-radius:50%;background:radial-gradient(circle,rgba(109,176,255,.35),transparent 65%)}
.dv-hero .row{display:flex;gap:20px;align-items:center;position:relative;z-index:1;flex-wrap:wrap}
.dv-hero .big{width:84px;height:84px;border-radius:22px;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.18);display:grid;place-items:center;flex:none}
.dv-hero .big .ill{width:56px!important;height:56px!important}
.dv-hero h2{font-size:26px;color:#fff;letter-spacing:-.02em}
.dv-hero .meta{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.dv-hero .mt{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.14);border-radius:999px;padding:3px 11px;font-size:12.5px}
.dv-hero .grow{flex:1;min-width:200px}
.dv-hero .gv b{color:#fff}.dv-hero .gv small{color:#a9bdd1}
.dv-hero .gauge circle:first-child{stroke:rgba(255,255,255,.16)}
.dv-close{position:absolute;right:16px;top:14px;z-index:2;background:rgba(255,255,255,.12);border:0;color:#fff;width:36px;height:36px;border-radius:50%;cursor:pointer;font-size:18px}
.dv-close:hover,.dv-close:focus-visible{background:rgba(255,255,255,.25)}
.dv-tabs{display:flex;gap:4px;padding:0 22px;background:var(--panel);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:2;overflow-x:auto}
.dv-tabs button{background:none;border:0;padding:13px 14px;cursor:pointer;color:var(--ink2);border-bottom:2px solid transparent;white-space:nowrap;font-weight:500}
.dv-tabs button[aria-selected="true"]{color:var(--accent);border-color:var(--accent)}
.dv-tabs .cnt{font-size:11.5px;background:var(--panel2);border-radius:999px;padding:1px 7px;margin-left:6px}
.dv-body{padding:22px 24px 40px;display:grid;gap:16px}
.dv-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px}
.dv-body .plate{margin:0}
.spec{display:grid;grid-template-columns:auto 1fr;gap:9px 18px;font-size:14px;margin:0}
.spec dt{color:var(--muted)} .spec dd{margin:0;text-align:right;font-weight:500;word-break:break-word}
.find{display:flex;flex-direction:column;gap:8px;align-items:flex-start;min-width:0;padding:12px 14px;border-radius:12px;border:1px solid var(--line);background:var(--panel);border-left:4px solid var(--muted)}
.find.critical{border-left-color:var(--crit)}.find.serious{border-left-color:var(--serious)}.find.warning{border-left-color:var(--warn)}.find.info{border-left-color:var(--s1)}
.find .ft{width:100%;min-width:0;overflow-wrap:anywhere}.find small{display:block;color:var(--muted);margin-top:2px}
.metric{display:flex;gap:14px;align-items:center}
.metric .m2{flex:1}.metric .m2 small{color:var(--muted)}
.pk input{margin-bottom:10px;width:100%}
.okbox{display:flex;gap:12px;align-items:center;padding:18px;border-radius:14px;background:var(--good-bg);color:var(--good-t);font-weight:500}
.srcs{display:flex;gap:8px;flex-wrap:wrap}
.src{font-size:12.5px;border-radius:999px;padding:3px 11px;border:1px solid var(--line);background:var(--panel);color:var(--muted)}
.src.on{color:var(--good-t);border-color:var(--good);background:var(--good-bg)}

.dv-body,.dv-body .plate{min-width:0}.dv-body .plate,.spec dd{overflow-wrap:anywhere}
@media (max-width:700px){.dv{width:100vw}}

.kpi2.warn::before{background:var(--warn)}.kpi2.warn .kic{background:var(--warn-bg);color:var(--warn-t)}
.kpi2.info::before{background:var(--accent)}.kpi2.info .kic{background:var(--accent-soft);color:var(--accent)}
.kpis{margin:0 0 18px;grid-column:auto}
.fleet .kpis{grid-column:span 12;margin:0}
.gaugerow{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin-top:6px}
.gcell{display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center}
.gcell small{font-size:12.5px;color:var(--ink2);font-weight:500}
.gcell .gv b{font-size:19px}.gcell small{font-size:11.5px}
.duo{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:18px;align-items:start;margin-bottom:18px}
.duo>*{min-width:0}
@media (max-width:1050px){.duo{grid-template-columns:1fr}}

.swrow{border:1px solid var(--line);border-radius:14px;margin-bottom:8px;background:var(--panel);overflow:hidden}
.swrow summary{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 14px;cursor:pointer;list-style:none}
.swrow summary::-webkit-details-marker{display:none}
.swrow summary:hover,.swrow summary:focus-visible{background:var(--panel2);outline:none}
.swrow.bad{border-left:4px solid var(--serious)}
.swn{min-width:0}.swn strong{display:block;overflow-wrap:anywhere}.swn small{color:var(--muted);display:block;margin-top:2px;overflow-wrap:anywhere}
.pcs{display:flex;flex-wrap:wrap;gap:8px;padding:4px 14px 14px}
.pc{border:1px solid var(--line);background:var(--panel2);border-radius:999px;padding:4px 12px;font:inherit;font-size:13px;cursor:pointer;color:var(--ink)}
.pc small{color:var(--muted);margin-left:6px}
.pc:hover,.pc:focus-visible{border-color:var(--accent);outline:none}

.hb.click{cursor:pointer;border-radius:8px;padding:2px 4px;margin:-2px -4px}
.hb.click:hover,.hb.click:focus-visible{background:var(--panel2);outline:none}
.covcols{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.covcol{border:1px solid var(--line);border-radius:14px;padding:14px;background:var(--panel2);min-width:0}
.covcol h3{font-size:15px;margin-bottom:10px;display:flex;align-items:center;gap:6px}
.covcol.bad{border-left:4px solid var(--serious)}.covcol.ok{border-left:4px solid var(--good)}
@media (max-width:700px){.covcols{grid-template-columns:1fr}}
.dialog{max-height:92vh;overflow:auto}

/* ---- connettori */
.tabs{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 14px}
.tab{border:1px solid var(--line);background:var(--panel);border-radius:999px;padding:6px 14px;cursor:pointer;font-weight:600;color:var(--ink2)}
.tab.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.cgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:12px}
.ccard{display:flex;gap:12px;text-align:left;align-items:flex-start;border:1px solid var(--line);background:var(--panel);border-radius:18px;padding:14px;cursor:pointer;color:inherit}
.ccard:hover{border-color:var(--accent)}
.ccard.on{border-color:var(--good);background:linear-gradient(var(--good-bg),var(--panel))}
.cic{flex:none;width:40px;height:40px;border-radius:12px;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent)}
.cic .i{width:22px;height:22px}
.cbody{display:flex;flex-direction:column;gap:3px;min-width:0}
.cbody small{color:var(--muted)}
.cchips{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}
.cinfo{background:var(--panel2);border-radius:14px;padding:12px 14px;margin-bottom:14px}
.cinfo p{margin:6px 0 0}
.cmsg{margin-top:10px;font-size:13px;color:var(--ink2)}
.cmsg.bad{color:var(--crit-t);background:var(--crit-bg);border-radius:10px;padding:8px 12px}
.csec{margin-top:18px}
.csec-h{display:flex;gap:14px;align-items:center;margin-bottom:14px}
.csec-h>div{flex:1}
.csec-h h2{margin:0}
.ctab{margin-top:14px}
.ctab summary{cursor:pointer;font-weight:600;padding:6px 0}
.ctab summary small{color:var(--muted);font-weight:500}
/* ---- topologia */
.topo-wrap{padding:14px;overflow:auto}
.topo-svg{display:block;min-width:900px}
.legend-inline{display:flex;gap:6px;flex-wrap:wrap}
.tnet-bg{fill:var(--panel2);stroke:var(--line)}
.tnet-t{font-size:15px;font-weight:700;fill:var(--ink)}
.tnet-s{font-size:11px;fill:var(--muted)}
.tnode{cursor:pointer;outline:none}
.tnode-bg{fill:var(--panel);stroke:var(--line);stroke-width:1.5}
.tnode:hover .tnode-bg,.tnode:focus-visible .tnode-bg{stroke:var(--accent)}
.tnode.off .tnode-bg{stroke:var(--crit)}
.tnode.ext .tnode-bg{stroke:var(--s1);stroke-dasharray:0}
.tnode.cu .tnode-bg{stroke-dasharray:5 4;stroke:var(--s4)}
.tnode-n{font-size:12px;font-weight:600;fill:var(--ink)}
.tnode-s{font-size:10.5px;fill:var(--muted)}
.tdot{fill:var(--crit)}
.thub-bg{fill:var(--accent-soft);stroke:var(--accent);stroke-width:1.5}
.thub-n{font-size:14px;font-weight:700;fill:var(--ink)}
.tl-hub{fill:none;stroke:var(--accent);stroke-width:2;opacity:.55}
.tl-link{stroke:var(--s5);stroke-width:1.5;stroke-dasharray:2 4}
.tl-link.custom{stroke:var(--s4);stroke-dasharray:none;stroke-width:2}
.tl-dot{fill:var(--accent)}
.tl-vpn{fill:none;stroke:var(--s4);stroke-width:2;stroke-dasharray:6 5;opacity:.9}
.tl-vpn-t{fill:var(--s4);font-weight:600}
.tnet-ov{fill:color-mix(in srgb,var(--s4) 7%,var(--panel2));stroke:var(--s4);stroke-width:1.5;stroke-dasharray:6 5}
.tvpn{fill:var(--s4)}
.tvpn-t{fill:#fff;font-size:8px;font-weight:700;letter-spacing:.02em}
.thub{outline:none}
.thub.off .thub-bg{stroke:var(--crit)}

/* ---- panoramica: server, dischi, backup */
.scards{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px;margin-top:14px}
.scard{display:flex;flex-direction:column;gap:12px;border:1px solid var(--line);background:var(--panel);border-radius:20px;padding:16px;cursor:pointer}
.scard:hover,.scard:focus-visible{border-color:var(--accent);outline:none}
.scard.off{border-color:var(--crit);background:linear-gradient(var(--crit-bg),var(--panel))}
.scard header{display:flex;gap:12px;align-items:center}
.scard header small{display:block;color:var(--muted)}
.scard header .grow{min-width:0}
.scard header strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sms{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.sml{display:flex;justify-content:space-between;font-size:12.5px;color:var(--ink2);margin-bottom:4px}
.sm .usebar{display:block;width:100%}
.sds{display:flex;flex-direction:column;gap:7px}
.sd{display:grid;grid-template-columns:62px 1fr 42px 58px;gap:8px;align-items:center;font-size:12.5px}
.sd .usebar{display:block;width:100%}
.sdn{font-weight:600;overflow:hidden;text-overflow:ellipsis}
.sdv,.dskr b{font-weight:700;text-align:right}
.sdv.warn,.dskr b.warn{color:var(--warn-t)}.sdv.crit,.dskr b.crit{color:var(--crit-t)}
.sd small,.dskr small{color:var(--muted);text-align:right}
.svms small{color:var(--muted);display:block;margin-bottom:4px}
.vmchips{display:flex;gap:6px;flex-wrap:wrap}
.vm{font-size:12px;font-weight:600;border-radius:999px;padding:3px 10px;border:1px solid var(--line);background:var(--panel2)}
.vm.on{border-color:var(--good);color:var(--good-t)}.vm.off{border-color:var(--line);color:var(--muted);text-decoration:line-through}
.scard footer{display:flex;justify-content:space-between;align-items:center;gap:8px;color:var(--muted)}
.dsk{display:flex;flex-direction:column;gap:6px;margin-top:10px}
.dskr{display:grid;grid-template-columns:minmax(120px,1.2fr) 2fr 46px 88px;gap:10px;align-items:center;padding:6px 8px;border-radius:12px;cursor:pointer}
.dskr:hover{background:var(--panel2)}
.dskn small{display:block;color:var(--muted)}
.dskr .usebar{display:block;width:100%}
.bkl{display:flex;flex-direction:column;gap:14px;margin-top:10px}
.bkh{display:flex;justify-content:space-between;gap:8px;align-items:center}
.bkr small{display:block;margin:2px 0 6px}
/* ---- accesso mono-cliente, guide backup */
.guide pre{white-space:pre-wrap;word-break:break-all;background:var(--panel2);border:1px solid var(--line);border-radius:12px;padding:12px 14px;font-size:12.5px;margin:8px 0}
.guide details{border:1px solid var(--line);border-radius:14px;padding:10px 14px;margin:10px 0;background:var(--panel)}
.guide summary{cursor:pointer;font-weight:700}
.guide ol{padding-left:20px}
.kindsel{border:1px solid var(--line);background:var(--panel);border-radius:10px;padding:4px 8px;font-weight:600}
.kv{display:grid;grid-template-columns:max-content 1fr;gap:6px 20px;margin:12px 0 0}
.kv dt{color:var(--muted);font-weight:600}.kv dd{margin:0}
.dskn small{text-align:left}

/* ---- MFA, console centrale */
.mfa-choice{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:10px}
.mfa-opt{display:flex;flex-direction:column;gap:4px;align-items:flex-start;text-align:left;border:1px solid var(--line);background:var(--panel);border-radius:16px;padding:14px;cursor:pointer;color:inherit}
.mfa-opt:hover{border-color:var(--accent)}
.mfa-opt .i{width:22px;height:22px;color:var(--accent)}
.mfa-opt small{color:var(--muted)}
.banner.info{background:var(--accent-soft);color:var(--ink2)}
@media (max-width:640px){.mfa-choice{grid-template-columns:1fr}}
.dv-hero .kindsel{background:rgba(255,255,255,.12);color:#fff;border-color:rgba(255,255,255,.35)}
.dv-hero .kindsel option{color:#0f1d2b}
/* telefono: righe dei dischi su due livelli, chip che vanno a capo */
.grid>*{min-width:0}
@media (max-width:640px){
  .dskr{grid-template-columns:1fr auto;row-gap:4px}
  .dskr .usebar{grid-column:1 / -1;grid-row:2}
  .dskr small:last-child{grid-column:1 / -1;text-align:left}
  .sd{grid-template-columns:52px 1fr 40px}
  .sd small{display:none}
  .bkh,.job{flex-wrap:wrap}
}
@media (min-width:861px){.shell{background:linear-gradient(90deg,var(--rail) 236px,transparent 236px)}}
body.hub .rw{display:none!important}
.top{flex-wrap:nowrap}
.top>strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.top>.select{min-width:0;max-width:52vw}
.setidx{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 6px}
.setidx a{border:1px solid var(--line);background:var(--panel);border-radius:999px;padding:5px 12px;font-size:13px;font-weight:600;color:var(--ink2);text-decoration:none}
.setidx a:hover{border-color:var(--accent);color:var(--accent)}
section.plate[id^="set-"]{scroll-margin-top:16px}

/* ---- virtualizzazione */
.srcs{display:flex;gap:8px;flex-wrap:wrap;margin:-4px 0 14px}
.vstat{display:flex;gap:14px;flex-wrap:wrap;font-size:13px;color:var(--muted);margin-top:10px}
.vstat b{color:var(--ink);font-size:15px}
/* ---- grafico a linee */
.linewrap{display:flex;flex-direction:column;gap:10px}
.linebox{position:relative}
.lines{width:100%;height:auto;display:block}
.lines .ax{font-size:10px;fill:var(--muted)}
.lines-tip{position:absolute;top:6px;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:8px 10px;font-size:12px;box-shadow:0 6px 18px rgba(0,0,0,.12);pointer-events:none;min-width:140px}
.lines-tip div{display:flex;align-items:center;gap:6px}.lines-tip i{width:9px;height:9px;border-radius:3px;display:inline-block}
.lg.row-lg{display:flex;flex-wrap:wrap;gap:6px 18px}

/* ---- menù a gruppi */
.navg{font-size:11px;font-weight:700;color:var(--muted);letter-spacing:.02em;opacity:.9}
/* ---- comuni nuove viste */
.linkbtn{background:none;border:0;padding:0;color:var(--accent);cursor:pointer;font:inherit;text-decoration:underline;text-underline-offset:2px}
.linkbtn.small{font-size:12px}
.input.mini{padding:5px 8px;font-size:13px;border-radius:8px;min-width:0;width:auto;max-width:150px}
b.ok,span.ok{color:var(--good-t)}b.warn,span.warn{color:var(--warn-t)}b.crit,span.crit{color:var(--crit-t)}
.remline{display:flex;align-items:center;gap:10px;margin-top:12px;padding:10px 12px;border-radius:12px;background:var(--panel2);font-size:14px}
.remline.bad{background:color-mix(in srgb,var(--crit) 10%,var(--panel))}
.banner.crit{border-color:var(--crit);background:color-mix(in srgb,var(--crit) 10%,var(--panel))}
.banner a{color:inherit;font-weight:700}
.facts{display:grid;grid-template-columns:max-content 1fr;gap:4px 14px;margin:12px 0;font-size:14px}.facts dt{color:var(--muted)}.facts dd{margin:0}
.modlist{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.modlist li{display:grid;grid-template-columns:180px 1fr auto;gap:12px;align-items:center;padding:10px 12px;border:1px solid var(--line2);border-radius:12px}
.modlist li span{color:var(--ink2);font-size:14px}
.expgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:6px 18px;margin-bottom:14px}
code.wrap{word-break:break-all;white-space:normal}
/* ---- formazione */
.trhead{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:-4px 0 12px}
.trbody{margin-top:14px}
.fundbox{border-left:3px solid var(--s3);padding:4px 0 4px 12px;margin:6px 0 10px}
.addpeople{display:flex;gap:10px;align-items:flex-end;margin-bottom:12px}.addpeople .field{flex:1;margin:0}
.addlesson{border:1px solid var(--line2);border-radius:12px;padding:10px 12px;margin-bottom:12px}.addlesson summary{cursor:pointer;font-weight:600}
table.attm td.att{text-align:center}table.attm td.att.on{background:color-mix(in srgb,var(--good) 9%,transparent)}
table.attm td.att small{display:block;color:var(--muted)}
table.attm th{white-space:nowrap}
/* ---- siti web */
.wcards{display:grid;gap:16px;margin-top:4px}
.wcard header{gap:12px;align-items:flex-start}.wcard h2{margin:0}
.wic{display:inline-grid;place-items:center;width:38px;height:38px;border-radius:12px;background:var(--panel2);color:var(--accent)}
.wic.big{width:84px;height:84px;border-radius:24px}.wic.big svg{width:40px;height:40px}
.wmsg{margin:10px 0 0;padding:8px 12px;border-radius:10px;background:color-mix(in srgb,var(--warn) 12%,var(--panel));font-size:14px}
.wgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:10px;margin:14px 0}
.wm{border:1px solid var(--line2);border-radius:12px;padding:10px 12px;display:flex;flex-direction:column;gap:2px}
.wm small{color:var(--muted);font-size:12px}.wm b{font-size:17px}.wm span{font-size:12.5px;color:var(--ink2)}
.wm.bad{border-color:var(--crit)}.wm.warn{border-color:var(--warn)}
.wpd summary{cursor:pointer;font-weight:600;margin:4px 0 8px}
.wcard footer{gap:8px;align-items:center;margin-top:10px;flex-wrap:wrap}
.steps li{margin:6px 0}
/* ---- notizie */
.chips{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 14px}
.fchip{border:1px solid var(--line);background:var(--panel);border-radius:999px;padding:5px 12px;font-size:13px;cursor:pointer}
.fchip[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.newsgrp h3{margin:18px 0 8px;font-size:15px}
.news{border:1px solid var(--line2);border-left:4px solid var(--line);border-radius:12px;padding:10px 14px;margin-bottom:8px}
.news.hit.product{border-left-color:var(--warn)}.news.hit.present{border-left-color:var(--crit)}
.news .nh a{font-weight:700;color:var(--ink);text-decoration:none}.news .nh a:hover{text-decoration:underline}.news .nh svg{width:12px;height:12px;opacity:.5}
.news .nm{font-size:12.5px;color:var(--muted);margin-top:2px}.news .lang{margin-left:6px;border:1px solid var(--line);border-radius:6px;padding:0 5px;font-size:11px}
.news p{margin:6px 0 4px;font-size:14px;color:var(--ink2)}
.news .nt{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:6px}
.cve{font-size:12px;font-family:inherit;border:1px solid var(--line);border-radius:6px;padding:1px 6px;color:var(--ink2);text-decoration:none}
@media (max-width:720px){.modlist li{grid-template-columns:1fr}.addpeople{flex-direction:column;align-items:stretch}}
a.btn{text-decoration:none;color:inherit}a.btn.primary{color:var(--accent-ink)}
.row > .grow,.toolbar > .grow,.remline > .grow{flex:1;min-width:0}
.srcs .chip{white-space:normal;text-align:left}.toolbar .seg{flex-wrap:wrap}
.hbars b{white-space:nowrap}
/* elementi interattivi: riquadri, voci di legenda e colonne aprono l'elenco corrispondente */
.kpi2.click{cursor:pointer;transition:border-color .15s,box-shadow .15s,transform .15s}
.kpi2.click:hover{border-color:var(--accent);box-shadow:0 6px 20px rgba(16,40,70,.08);transform:translateY(-1px)}
.kpi2.click:focus-visible,.lg li.click:focus-visible,.col.click:focus-visible,.stat.click:focus-visible,.gcell.click:focus-visible,.drill li.click:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.kpi2.click::after{content:"";position:absolute;right:16px;bottom:16px;width:7px;height:7px;border-right:1.6px solid var(--ink2);border-bottom:1.6px solid var(--ink2);transform:rotate(-45deg);opacity:.4;transition:opacity .15s,transform .15s}
.kpi2.click:hover::after{opacity:.9;transform:translateX(2px) rotate(-45deg)}
.kpi2.click .l,.kpi2.click .ks{padding-right:14px}
.lg li.click{cursor:pointer;border-radius:8px;margin:0 -6px;padding-left:6px;padding-right:6px}
.lg li.click:hover{background:var(--accent-soft)}
.col.click{cursor:pointer;border-radius:8px}
.col.click:hover i{filter:brightness(1.12)}
.col.click:hover .cl{color:var(--accent);text-decoration:underline}
.stat.click,.gcell.click{cursor:pointer;border-radius:12px}
.stat.click:hover,.gcell.click:hover{background:var(--accent-soft)}
.todo li.click{cursor:pointer;border-radius:10px}
.todo li.click:hover{background:var(--accent-soft)}
ul.drill{list-style:none;margin:0;padding:0;max-height:62vh;overflow:auto;border:1px solid var(--line);border-radius:12px}
ul.drill li{display:flex;align-items:center;gap:12px;padding:10px 14px;border-bottom:1px solid var(--line2)}
ul.drill li:last-child{border-bottom:0}
ul.drill li.click{cursor:pointer}
ul.drill li.click:hover{background:var(--accent-soft)}
ul.drill .dt{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
ul.drill .dt small{color:var(--ink2)}
ul.drill .dr{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.fnote{display:flex;align-items:center;gap:10px;background:var(--accent-soft);color:var(--ink);border-radius:12px;padding:8px 10px 8px 14px;margin:0 0 10px}
.fnote span{flex:1}
.fnote svg.i{width:18px;height:18px;color:var(--accent)}
.flash{animation:flash 1.4s ease}
@keyframes flash{0%,40%{box-shadow:0 0 0 3px var(--accent)}100%{box-shadow:0 0 0 0 transparent}}
@media (prefers-reduced-motion: reduce){.kpi2.click:hover{transform:none}.flash{animation:none}}
/* anagrafica interna */
.sup.person h3{margin:0}
.sup.person.gone{opacity:.62}
.avatar{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;flex:none;background:var(--accent-soft);color:var(--accent);font-weight:600;font-size:15px;letter-spacing:.02em}
.staffinfo{border-top:1px solid var(--line);margin-top:14px;padding-top:4px}
.staffinfo h3{margin:14px 0 6px;font-size:14px}
.remline.click{cursor:pointer}
.dlwrap{display:block}
.dlwrap input{width:100%}
/* iscrizione ai corsi dalle persone interne */
.addpeople2{display:grid;grid-template-columns:1.3fr 1fr;gap:22px;margin-bottom:16px;padding:14px;border:1px solid var(--line);border-radius:14px;background:var(--panel2)}
.addpeople2 h3{margin:0 0 8px;font-size:14px}
.addpeople2 textarea{width:100%}
ul.picklist{list-style:none;margin:0;padding:4px 0;max-height:220px;overflow:auto;border:1px solid var(--line);border-radius:10px;background:var(--panel)}
ul.picklist li{padding:4px 10px}
ul.picklist label.check{margin:0;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
ul.picklist label.check span{flex:1;min-width:0}
@media (max-width:860px){.addpeople2{grid-template-columns:1fr}}
/* stato dei dischi: una riga per macchina, dischi nel dettaglio */
details.dskg{border-radius:12px}
details.dskg[open]{background:var(--panel2)}
details.dskg>summary{list-style:none}
details.dskg>summary::-webkit-details-marker{display:none}
details.dskg>summary.dskr{grid-template-columns:minmax(120px,1.2fr) 2fr 46px 20px}
details.dskg>summary .chev{color:var(--muted);justify-self:end;margin-right:6px}
details.dskg[open]>summary .chev{transform:rotate(45deg) translate(-2px,-1px)}
details.dskg>summary:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.dskbody{padding:0 0 8px 14px;border-left:2px solid var(--line);margin:2px 0 6px 14px}
.dskr.sub{cursor:default;padding:4px 8px}
.dskr.sub:hover{background:transparent}
.dskr.sub .dskn strong{font-weight:500;font-family:var(--mono, inherit);font-size:13px}
/* indirizzi di rete */
small.ipk{margin-left:6px;font-size:11px;font-weight:600;padding:1px 7px;border-radius:8px;background:var(--panel2);color:var(--ink2)}
small.ipk.vpn{background:var(--accent-soft);color:var(--accent)}
small.ipk.public{background:rgba(230,126,34,.15);color:var(--warn-t)}
ul.iplist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
ul.iplist li{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
ul.iplist .grow{flex:1}
/* piano di rimedio: motivo della chiusura e storico */
.autoreason{display:flex;gap:10px;align-items:flex-start;background:var(--good-soft, rgba(46,160,90,.1));border-radius:12px;padding:10px 12px;margin:10px 0}
.autoreason svg.i{width:18px;height:18px;color:var(--good);flex:none;margin-top:2px}
details.evlog{margin-top:12px;border-top:1px solid var(--line);padding-top:8px}
details.evlog summary{cursor:pointer;font-weight:600;font-size:13px}
details.evlog ul{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}

/* normative e moduli (impostazioni) */
.plate h3{font-size:14px;margin:18px 0 8px}
.modgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:8px}
.modrow,.radiocard{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border:1px solid var(--line2);border-radius:12px;cursor:pointer;background:var(--panel)}
.modrow input,.radiocard input{margin-top:3px;flex:none}
.modrow span,.radiocard span{display:flex;flex-direction:column;gap:2px}
.modrow small,.radiocard small{color:var(--muted);font-size:12.5px;line-height:1.35}
.modrow:has(input:checked),.radiocard:has(input:checked){border-color:var(--accent);background:var(--accent-soft)}
.modrow.dim{opacity:.5;cursor:not-allowed}
.nis2pos{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:8px}
/* percorso a passi (committenti NIS2) */
.steps{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.steps .step{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;padding:10px 12px;border:1px solid var(--line2);border-radius:12px}
.steps .step div{display:flex;flex-direction:column;gap:2px}
.steps .step small{color:var(--muted);font-size:12.5px}
.steps .step.done{background:var(--panel2)}
@media (max-width:720px){.steps .step{grid-template-columns:1fr}}

body.std .adm{display:none!important}
.segscroll{max-width:100%;overflow-x:auto;flex-wrap:nowrap;scrollbar-width:thin}
.segscroll button{white-space:nowrap}
@media (max-width:720px){
  /* sul telefono il tipo si cambia dalla scheda del dispositivo: la riga resta tutta cliccabile */
  table .kindsel{pointer-events:none;-webkit-appearance:none;appearance:none;border:0;background:none;padding:0;font-weight:400}
}
details.howto{margin:10px 0;border:1px solid var(--line2);border-radius:12px;padding:8px 12px;background:var(--panel2)}
details.howto summary{cursor:pointer;font-weight:600}
details.howto ol{margin:8px 0 8px 18px;padding:0;display:grid;gap:6px;font-size:13.5px}
details.howto pre{white-space:pre-wrap;word-break:break-all;font-size:12px}
/* stampanti e apparati di rete (SNMP) */
.suprow{margin:0 0 12px}.suphead{display:flex;align-items:center;gap:8px;font-size:13.5px;margin-bottom:5px}
.suphead .dot{width:12px;height:12px;border-radius:50%;flex:none;border:1px solid var(--line2)}
.supbar{height:8px;border-radius:4px;background:var(--panel2);overflow:hidden}.supbar i{display:block;height:100%;border-radius:4px}
.suprow.bad .suphead b{color:var(--crit)}
.trays{margin-top:14px}.trays h3{font-size:13px;margin:0 0 6px;color:var(--muted)}
.portgrid{display:flex;flex-wrap:wrap;gap:4px;margin-top:12px}
.portgrid .pt{width:16px;height:16px;border-radius:4px;background:var(--panel2);border:1px solid var(--line2)}
.portgrid .pt.up{background:var(--good);border-color:var(--good)}.portgrid .pt.off{border-style:dashed;background:transparent}
.portgrid .pt.poe{box-shadow:inset 0 0 0 2px var(--panel)}
.attached{display:flex;align-items:center;gap:6px;margin:0 0 10px;font-size:13.5px}
.namecell .nm{display:flex;flex-direction:column;line-height:1.25}.namecell .nm small{font-size:12px;color:var(--muted);font-weight:400}
.numlink{display:inline-flex;align-items:center;gap:4px;white-space:nowrap;background:none;border:0;padding:0;font:inherit;color:inherit;cursor:pointer;text-decoration:underline dotted;text-underline-offset:3px}
.numlink:hover,.numlink:focus-visible{color:var(--accent,var(--s1))}

.namecell .nm small.ips{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.ipmore{border:1px solid var(--line);background:var(--panel2);color:var(--ink);font-weight:600;font-size:11px;line-height:1;padding:2px 6px;border-radius:999px;cursor:pointer}
.ipmore:hover{background:var(--line)}
.dv-hero .idline{font-size:13px;color:var(--muted);margin:2px 0 6px}
details.inactive{margin-top:18px}
details.inactive summary{cursor:pointer;font-size:16px;padding:2px 0}
details.inactive[open] summary{margin-bottom:6px}
details.devgroup{margin-top:14px;padding:12px 16px}
details.devgroup>summary{display:flex;align-items:center;gap:10px;cursor:pointer;font-size:16px;list-style:none}
details.devgroup>summary::-webkit-details-marker{display:none}
details.devgroup>summary::before{content:"";width:8px;height:8px;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:rotate(-45deg);transition:transform .15s;margin-right:2px}
details.devgroup[open]>summary::before{transform:rotate(45deg)}
.nb-wrap{display:grid;gap:12px;margin-top:12px}
.netblock{border:1px solid var(--line);border-left:4px solid var(--nc);border-radius:12px;padding:8px 10px 4px;background:var(--panel)}
.nb-head{display:flex;align-items:center;gap:8px;margin:0 2px 6px}
.nb-tag{display:inline-block;font-size:12px;font-weight:700;color:#fff;background:var(--nc);padding:2px 10px;border-radius:999px}
.tl-vpn.t-mpls{stroke:var(--s2);stroke-dasharray:none}
.tl-vpn.t-wan{stroke:var(--s5);stroke-dasharray:10 4 2 4}
.tl-link.custom.t-lan{stroke:var(--s5);stroke-dasharray:none}
.tl-link.custom.t-vpn{stroke:var(--s4);stroke-dasharray:6 5}
.tl-link.custom.t-mpls{stroke:var(--s2);stroke-dasharray:none}
.tl-link.custom.t-wan{stroke:var(--s5);stroke-dasharray:10 4 2 4}
.tl-link.custom.t-wifi{stroke:var(--s3);stroke-dasharray:2 5;stroke-linecap:round}
.tl-lab{fill:var(--ink2);font-weight:600}
.tl-nb{fill:none;stroke:var(--s4);stroke-width:1.6;stroke-dasharray:3 4;opacity:.85}
.tvpn.gw{fill:color-mix(in srgb,var(--s4) 75%,#000)}
.lt-chip{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:var(--ink2);padding:3px 10px;border-radius:999px;border:1px solid var(--line);background:var(--panel)}
.lt-chip::before{content:"";width:18px;height:0;border-top:2px dashed var(--s4)}
.lt-chip.t-mpls::before{border-top:2px solid var(--s2)}.lt-chip.t-lan::before{border-top:2px solid var(--s5)}
.lt-chip.t-wan::before{border-top:2px dashed var(--s5)}.lt-chip.t-wifi::before{border-top:2px dotted var(--s3)}.lt-chip.t-nb::before{border-top:2px dotted var(--s4)}
.pairs{display:grid;gap:8px;margin-top:10px}
.pair{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.pair select,.pair input{min-width:0;flex:1 1 140px}
/* stesse colonne in tutti i riquadri delle reti (larghezze fisse, non in base al contenuto) */
.netblock table.t{table-layout:fixed;width:100%}
.netblock table.t td,.netblock table.t th{overflow:hidden;text-overflow:ellipsis}
.netblock.adm th:nth-child(1){width:34%}.netblock.adm th:nth-child(2){width:20%}.netblock.adm th:nth-child(3){width:20%}
.netblock.adm th:nth-child(4){width:13%}.netblock.adm th:nth-child(5){width:13%}
.netblock:not(.adm) th:nth-child(1){width:40%}.netblock:not(.adm) th:nth-child(2){width:26%}
.netblock:not(.adm) th:nth-child(3){width:17%}.netblock:not(.adm) th:nth-child(4){width:17%}
.netblock .kindsel{max-width:100%}
.tgrp-t{font-size:11px;font-weight:700;fill:var(--muted);letter-spacing:.02em}
.tgrp-l{stroke:var(--line);stroke-width:1}
.mtlink{cursor:pointer;font:inherit;color:inherit;text-decoration:underline;text-underline-offset:2px}
.mtlink:disabled{cursor:default;color:inherit;text-decoration:none}
.scard footer{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.scard footer small{flex:1 1 100%}
.scard footer .vfirst{margin-left:auto}

/* avvisi divisi per tipo (pagina Sicurezza) */
.agrp{border:1px solid var(--line);border-left:4px solid var(--gc);border-radius:12px;margin:0 0 12px;background:var(--panel2)}
.agrp>summary{display:flex;align-items:center;gap:10px;padding:12px 14px;cursor:pointer;list-style:none;font-weight:600}
.agrp>summary::-webkit-details-marker{display:none}
.agrp>summary::after{content:"";margin-left:auto;width:8px;height:8px;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:rotate(-45deg);transition:transform .15s}
.agrp[open]>summary::after{transform:rotate(45deg)}
.agrp .agn{font-size:12px;font-weight:700;color:var(--muted);background:var(--s-bg, rgba(127,127,127,.14));border-radius:999px;padding:1px 9px}
.agrp>.hint{padding:0 14px 6px;margin:0}
.agrp>.todo{padding:0 8px 8px}

/* sicurezza di Spectra (pannello amministratori) */
.pgrp{margin:6px 0 16px}.pgrp h3{margin:0 0 8px;font-size:14px;color:var(--muted);font-weight:600}
.pchecks{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px}
.pchk{border:1px solid var(--line);border-left:4px solid var(--good);border-radius:12px;padding:10px 12px;background:var(--panel2);display:flex;flex-direction:column;gap:4px;min-width:0}
.pchk.warn{border-left-color:var(--warn)}.pchk.down{border-left-color:var(--crit)}.pchk.unknown{border-left-color:var(--line)}
.pchk .pct{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.pchk .pcm{font-size:13px;color:var(--ink2);overflow-wrap:anywhere}
.pnote{border:1px solid var(--line);border-left:4px solid var(--s1, #5aa9ff);border-radius:12px;padding:12px 14px;margin:8px 0;background:var(--panel2)}
.pnote.warn{border-left-color:var(--warn)}.pnote.crit{border-left-color:var(--crit)}.pnote h3{margin:0 0 6px;font-size:15px}
.pnote pre,.plog{background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:10px 12px;overflow:auto;font-size:12.5px;white-space:pre-wrap}
.plog{max-height:60vh;margin:0}
.prows{display:grid;gap:10px}
.prow{display:flex;align-items:center;justify-content:space-between;gap:16px;border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:var(--panel2)}
.prow>div{min-width:0}
.tbar{display:flex;gap:8px;flex-wrap:wrap;margin:6px 0 12px}.tbar input[type=search]{min-width:220px}
.pv-sum{max-width:44ch;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pdet .kv{margin-top:0}.pdet p{overflow-wrap:anywhere}
.pform{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px 16px;margin-bottom:12px}
.pcomp>summary{cursor:pointer;list-style:none;padding:4px 0}.pcomp>summary::-webkit-details-marker{display:none}
.plogl{list-style:none;margin:0;padding:0;max-height:420px;overflow:auto}
.plogl li{display:grid;grid-template-columns:150px 1fr;gap:12px;padding:7px 4px;border-bottom:1px solid var(--line2);font-size:13.5px}
.plogl li time{color:var(--muted);font-variant-numeric:tabular-nums}
.plogl li.down,.plogl li.error,.plogl li.exploited{color:var(--crit)}.plogl li.warn{color:var(--warn)}
@media (max-width:700px){.prow{flex-direction:column;align-items:stretch}.plogl li{grid-template-columns:1fr}}

/* licenza: schermata di blocco e console */
.auth.lock .art{background:linear-gradient(160deg,var(--rail),#3a1d2b)}
.auth.lock .lead{color:rgba(255,255,255,.82);max-width:46ch;margin-top:14px;font-size:16px;line-height:1.5}
.lic-links{list-style:none;padding:0;margin:14px 0 18px;display:grid;gap:8px}
.lic-links li{display:flex;flex-direction:column;gap:2px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--panel)}
.lic-links a{word-break:break-all}
.lic-form{display:flex;flex-direction:column;gap:10px;padding:0!important}
.lic-form input{font-family:ui-monospace,monospace;letter-spacing:.04em}
.lic-cell{display:flex;flex-direction:column;gap:6px;min-width:0}
.lic-cell code{font-size:12px;white-space:nowrap}

/* scheda dispositivo: raggiungibilità */
.reachrow{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:12px}
.availbox{margin:4px 0 14px}
.availbox .avn{font-size:34px;font-weight:600;line-height:1;letter-spacing:-.02em}
.availbox small{display:block;color:var(--muted);margin:4px 0 8px}
