:root{--bg:#F7F8F9;--surface:#FFFFFF;--surface-2:#F1F2F4;--surface-3:#F7F8F9;--border:#DCDFE4;--border-strong:#B3B9C4;--ink:#172B4D;--ink-2:#44546F;--ink-3:#626F86;--brand-dark:#142e1d;--accent:#12876f;--accent-ink:#0e5f4e;--accent-soft:#E6F2EC;--good:#216E4E;--good-soft:#DCFFF1;--warn:#A54800;--warn-soft:#FFF7D6;--crit:#AE2E24;--crit-soft:#FFECEB;--teal:#206A83;--teal-soft:#E7F9FF;--info:#0055CC;--info-soft:#E9F2FF;--shadow-sm:0 1px 1px rgba(9,30,66,.13),0 0 1px rgba(9,30,66,.25);--shadow-md:0 8px 12px rgba(9,30,66,.15),0 0 1px rgba(9,30,66,.31);--r:4px;--sidebar:232px}@media (prefers-color-scheme:dark){:root{--bg:#101413;--surface:#171E1B;--surface-2:#121816;--surface-3:#1C2420;--border:#263230;--border-strong:#3A4A46;--ink:#E6EDEA;--ink-2:#A7B6B0;--ink-3:#6F7F79;--brand-dark:#142e1d;--accent:#3EB491;--accent-ink:#6FD0B2;--accent-soft:#14312A;--good:#40C983;--good-soft:#112A1E;--warn:#E4A64A;--warn-soft:#2A2113;--crit:#F26A6E;--crit-soft:#2E1719;--teal:#4BBBD8;--teal-soft:#10292E;--info:#7CA8FF;--info-soft:#16233C;--shadow-sm:0 1px 2px rgba(0,0,0,.3);--shadow-md:0 8px 22px rgba(0,0,0,.4)}}*{box-sizing:border-box}body,html{height:100%}body{margin:0;background:var(--bg);color:var(--ink);font-family:Segoe UI,system-ui,-apple-system,Roboto,Helvetica Neue,Arial,sans-serif;font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}a{color:var(--accent-ink);text-decoration:none}a:hover{text-decoration:underline}.num{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.app{display:grid;grid-template-columns:var(--sidebar) 1fr;height:100vh;overflow:hidden}.sidebar{background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;min-height:0}.brand{display:flex;align-items:center;gap:10px;padding:16px 18px;border-bottom:1px solid var(--border)}.brand .mark{width:30px;height:30px;border-radius:6px;background:var(--brand-dark);display:grid;place-items:center;color:#fff;font-size:16px;font-weight:700;flex:none;box-shadow:var(--shadow-sm)}.brand .name{font-weight:700;letter-spacing:-.2px}.brand .name small{display:block;font-weight:500;font-size:11px;color:var(--ink-3);letter-spacing:.3px}.nav{padding:12px;display:flex;flex-direction:column;gap:2px}.nav .lbl{font-size:10.5px;text-transform:uppercase;letter-spacing:.8px;color:var(--ink-3);padding:12px 10px 6px;font-weight:700}.nav a{display:flex;align-items:center;gap:11px;padding:8px 10px;border-radius:8px;color:var(--ink-2);font-weight:500;border:1px solid transparent}.nav a:hover{background:var(--surface-2);color:var(--ink);text-decoration:none}.nav a.active{background:var(--accent-soft);color:var(--accent-ink);border-color:color-mix(in srgb,var(--accent) 22%,transparent)}.nav a .cnt{margin-left:auto;font-size:11.5px;color:var(--ink-3);background:var(--surface-2);padding:1px 7px;border-radius:20px;font-weight:600}.avatar{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;font-size:11.5px;font-weight:700;color:#fff;background:var(--accent);flex:none}.avatar.sm{width:22px;height:22px;font-size:9.5px}.appbar{position:relative;display:flex;align-items:center;justify-content:flex-end;gap:4px;padding:5px 16px;background:var(--surface);border-bottom:1px solid var(--border)}.icon-btn{position:relative;width:30px;height:30px;display:grid;place-items:center;border-radius:6px;border:none;background:transparent;color:var(--ink-2);cursor:pointer}.icon-btn.on,.icon-btn:hover{background:var(--surface-2);color:var(--ink)}.icon-btn .bdg{position:absolute;top:0;right:0;min-width:15px;height:15px;padding:0 4px;border-radius:8px;background:var(--crit);color:#fff;font-size:9.5px;font-weight:700;display:grid;place-items:center;line-height:1}.profile-btn{display:flex;align-items:center;gap:7px;padding:4px 7px;border-radius:6px;border:none;background:transparent;color:var(--ink);font-family:inherit;font-size:12.5px;font-weight:600;cursor:pointer;min-width:0}.profile-btn.on,.profile-btn:hover{background:var(--surface-2)}.profile-btn .p-name{max-width:140px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.profile-btn svg{color:var(--ink-3);flex:none}.dd{position:absolute;top:calc(100% - 2px);right:16px;z-index:60;min-width:200px;padding:5px;background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:var(--shadow-md)}.dd.wide{min-width:300px;max-width:340px}.dd a,.dd button.item{display:block;width:100%;text-align:left;padding:7px 10px;border-radius:6px;border:none;background:none;color:var(--ink);font-family:inherit;font-size:13px;font-weight:500;cursor:pointer}.dd a:hover,.dd button.item:hover{background:var(--surface-2);text-decoration:none}.dd .dd-head{padding:6px 10px 8px;border-bottom:1px solid var(--border);margin-bottom:5px}.dd .dd-head b{display:block;font-size:13px}.dd .dd-head span{font-size:11.5px;color:var(--ink-3)}.dd .sep{height:1px;background:var(--border);margin:5px 0}.dd .dd-empty{padding:12px 10px;font-size:12.5px;color:var(--ink-3)}.dd .notif-item .t{font-size:12.5px;font-weight:600}.dd .notif-item .m,.dd .notif-item .t{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dd .notif-item .m{font-size:11.5px;color:var(--ink-3)}.main{display:flex;flex-direction:column;min-width:0;min-height:0}.topbar{display:flex;align-items:center;gap:14px;padding:12px 22px;border-bottom:1px solid var(--border);background:var(--surface)}.titles h1{margin:0;font-size:17px;font-weight:700;letter-spacing:-.3px}.titles p{margin:1px 0 0;font-size:12.5px;color:var(--ink-3)}.spacer{flex:1 1}.content{flex:1 1;overflow:auto;padding:20px 22px 32px}.btn{display:inline-flex;align-items:center;gap:7px;padding:7px 13px;border-radius:var(--r);border:1px solid transparent;background:var(--surface-2);color:var(--ink);font-size:13px;font-weight:600;cursor:pointer;font-family:inherit}.btn:hover{background:var(--border)}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover{background:var(--accent-ink)}.btn.sm{padding:4px 9px;font-size:12.5px}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));grid-gap:14px;gap:14px;margin-bottom:20px}.kpi{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:14px 16px;box-shadow:var(--shadow-sm);position:relative;overflow:hidden}.kpi .lab{font-size:11.5px;color:var(--ink-3);font-weight:600;text-transform:uppercase;letter-spacing:.4px}.kpi .val{font-size:26px;font-weight:700;letter-spacing:-.5px;margin-top:4px}.kpi .sub{font-size:11.5px;margin-top:2px;color:var(--ink-3)}.kpi .strip{position:absolute;left:0;top:0;bottom:0;width:3px}.s-blue{background:var(--accent)}.s-amber{background:var(--warn)}.s-teal{background:var(--teal)}.s-green{background:var(--good)}.s-crit{background:var(--crit)}.s-slate{background:var(--border-strong)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);box-shadow:var(--shadow-sm)}.card .hd{padding:13px 16px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:10px}.card .hd h2{margin:0;font-size:14px;font-weight:700}.card .bd{padding:16px}.tbl-wrap{overflow-x:auto}table.tbl{width:100%;border-collapse:collapse;font-size:13px}.tbl th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--ink-3);font-weight:700;white-space:nowrap}.tbl td,.tbl th{padding:10px 14px;border-bottom:1px solid var(--border)}.tbl td{vertical-align:top}.tbl tbody tr:hover{background:var(--surface-3)}.tbl tbody tr:last-child td{border-bottom:none}.badge{display:inline-flex;align-items:center;padding:2px 6px;border-radius:3px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.3px;white-space:nowrap}.b-open{background:var(--info-soft);color:var(--info)}.b-progress{background:var(--warn-soft);color:var(--warn)}.b-closed{background:var(--good-soft);color:var(--good)}.b-high{background:var(--crit-soft);color:var(--crit)}.b-normal{background:var(--surface-2);color:var(--ink-2)}.b-low{background:var(--teal-soft);color:var(--teal)}.b-off{background:var(--crit-soft);color:var(--crit)}.b-on{background:var(--good-soft);color:var(--good)}.b-net{background:var(--teal-soft);color:var(--teal)}.filters{display:flex;align-items:center;gap:8px;margin-bottom:16px;flex-wrap:wrap}.filters form{display:contents}input.field,select.field,textarea.field{padding:8px 12px;border-radius:8px;border:1px solid var(--border-strong);background:var(--surface-3);color:var(--ink);font-size:13px;outline:none;font-family:inherit}input.field:focus,select.field:focus,textarea.field:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}textarea.field{width:100%;resize:vertical}.pager{display:flex;align-items:center;gap:10px;margin-top:14px;font-size:12.5px;color:var(--ink-3)}.detail-grid{display:grid;grid-template-columns:2fr 1fr;grid-gap:16px;gap:16px;align-items:start}@media (max-width:980px){.detail-grid{grid-template-columns:1fr}}.kv{display:grid;grid-template-columns:150px 1fr;grid-gap:6px 14px;gap:6px 14px;font-size:13px}.kv dt{color:var(--ink-3);font-weight:600}.kv dd{margin:0;overflow-wrap:anywhere}.timeline{display:flex;flex-direction:column;gap:12px}.tl-item{border:1px solid var(--border);border-radius:8px;background:var(--surface-3);padding:10px 14px}.tl-item .meta{font-size:11.5px;color:var(--ink-3);margin-bottom:4px}.tl-item .meta b{color:var(--ink-2)}.tl-item .txt{white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px}.empty{padding:28px;text-align:center;color:var(--ink-3);font-size:13px}.board{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:14px;gap:14px;align-items:start}@media (max-width:900px){.board{grid-template-columns:1fr}}.bcol{background:var(--surface-2);border-radius:6px;padding:8px;min-height:120px}.bcol.drag-over{outline:2px dashed var(--accent);outline-offset:-2px}.bcol-h{display:flex;align-items:center;gap:8px;padding:6px 8px 10px;font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--ink-3)}.bcol-h .n{background:var(--border);border-radius:10px;padding:0 7px;font-size:11px;color:var(--ink-2)}.bdot{width:8px;height:8px;border-radius:50%}.bcard{background:var(--surface);border-radius:var(--r);box-shadow:var(--shadow-sm);padding:10px 12px;margin-bottom:8px;cursor:-webkit-grab;cursor:grab;border-left:3px solid transparent}.bcard:hover{background:var(--surface-3)}.bcard.alta{border-left-color:var(--crit)}.bcard.dragging{opacity:.4}.bcard .t{font-size:13px;line-height:1.35;margin-bottom:8px;color:var(--ink)}.bcard .m{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--ink-3);flex-wrap:wrap}.bcard .bav{display:inline-grid;place-items:center;width:20px;height:20px;border-radius:50%;background:var(--brand-dark);color:#fff;font-size:9px;font-weight:700;margin-left:auto}.bcard.chiuso{opacity:.7}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:24px}.login-card{width:100%;max-width:380px;background:var(--surface);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow-md);padding:32px}.login-card .brand{border:none;padding:0 0 18px}.login-card h1{margin:0 0 4px;font-size:20px;letter-spacing:-.3px}.login-card p.sub{margin:0 0 20px;color:var(--ink-3);font-size:13px}.login-card label{display:block;font-size:12.5px;font-weight:600;color:var(--ink-2);margin:14px 0 5px}.login-card input{width:100%}.login-card .btn{width:100%;justify-content:center;margin-top:20px;padding:10px}.login-err{margin-top:14px;background:var(--crit-soft);color:var(--crit)}.login-err,.msg-ok{border-radius:8px;padding:9px 12px;font-size:12.5px}.msg-ok{background:var(--good-soft);color:var(--good);margin-bottom:16px}.form-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:12px 18px;gap:12px 18px}@media (max-width:780px){.form-grid{grid-template-columns:1fr}}.f-lbl{display:block;font-size:12px;font-weight:600;margin-bottom:4px}.f-check,.f-lbl{color:var(--ink-2)}.f-check{display:inline-flex;align-items:center;gap:6px;font-size:13px}.pills{display:flex;flex-wrap:wrap;gap:6px}.pill{background:var(--surface-2);border:1px solid var(--border);border-radius:20px;padding:2px 10px;font-size:11.5px;font-weight:600;color:var(--ink-2)}