:root{--ground:#F3F6F5;--surface:#FFFFFF;--surface-2:#EEF2F1;--surface-3:#E7ECEA;--ink:#131A19;--ink-2:#3C4A47;--muted:#5B6B68;--faint:#8A9895;--border:#DCE4E1;--accent:#1D4E6F;--accent-2:#2E7CB0;--accent-soft:#E4EDF3;--ok:#2F7A4F;--warn:#A8690B;--crit:#A32B21;--ok-bg:#E8F2EC;--warn-bg:#F8EEDD;--crit-bg:#F8E7E5;--mono:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace;--sans:-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,sans-serif}@media (prefers-color-scheme:dark){:root{--ground:#0C110F;--surface:#141B19;--surface-2:#1B2422;--surface-3:#212C29;--ink:#E6ECEA;--ink-2:#C2CECB;--muted:#8FA09C;--faint:#6C7C78;--border:#232D2B;--accent:#6BB6DC;--accent-2:#8CCBEB;--accent-soft:#152A36;--ok:#4FB07A;--warn:#D9A03C;--crit:#E0736A;--ok-bg:#152420;--warn-bg:#282013;--crit-bg:#2B1917}}*{box-sizing:border-box}body,html{padding:0;margin:0}body{background:var(--ground);color:var(--ink);font-family:var(--sans);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}.app{max-width:1180px;margin:0 auto;padding:20px 20px 72px;flex-direction:column;gap:18px}.app,.hdr{display:flex}.hdr{flex-wrap:wrap;gap:14px;align-items:center;justify-content:space-between;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:16px 20px}.hdr .t{display:flex;flex-direction:column;gap:2px}.hdr h1{font-size:20px;font-weight:670;letter-spacing:-.015em;margin:0}.hdr .sub{font-size:12.5px;color:var(--muted);font-family:var(--mono)}.hdr .r{gap:14px}.acct,.hdr .r{display:flex;align-items:center}.acct{gap:9px}.acct .av{width:34px;height:34px;border-radius:50%;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:640;font-size:13px}.acct .nm{display:flex;flex-direction:column;line-height:1.25}.acct .nm b{font-size:13.5px;font-weight:620}.acct .nm span{font-size:11px;color:var(--muted)}.updated{font-size:11.5px;color:var(--muted);font-family:var(--mono)}.filters{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:14px 16px}.fgrid{display:grid;grid-gap:10px;gap:10px;grid-template-columns:repeat(auto-fit,minmax(158px,1fr))}.fld{flex-direction:column}.fld,.fld label{display:flex;gap:5px}.fld label{font-size:11px;font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);align-items:center}.fld select{-webkit-appearance:none;-moz-appearance:none;appearance:none;font-family:var(--sans);font-size:13.5px;color:var(--ink);background:var(--surface-2);border:1px solid var(--border);border-radius:7px;padding:9px 30px 9px 11px;cursor:pointer;width:100%}.fld select:focus{outline:2px solid var(--accent);outline-offset:1px;border-color:var(--accent)}.fld.lock select{opacity:.55;cursor:not-allowed}.lockpill{font-size:9px;font-family:var(--mono);letter-spacing:.05em;background:var(--surface-3);color:var(--faint);padding:1px 5px;border-radius:3px;text-transform:uppercase}.custom-range{display:flex;align-items:center;gap:6px;margin-top:6px;flex-wrap:wrap}.custom-range input[type=date]{font-family:var(--sans);font-size:12.5px;color:var(--ink);background:var(--surface-2);border:1px solid var(--border);border-radius:7px;padding:7px 9px}.custom-range input:focus{outline:2px solid var(--accent);outline-offset:1px;border-color:var(--accent)}.custom-range span{color:var(--muted);font-family:var(--mono);font-size:12px}.custom-range button{font-family:var(--sans);font-size:12.5px;font-weight:620;color:#fff;background:var(--accent);border:none;border-radius:7px;padding:7px 12px;cursor:pointer}.custom-range button:disabled{opacity:.5;cursor:not-allowed}.chart-empty{color:var(--muted);font-size:13px;padding:30px 10px;text-align:center}.stitle{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin:12px 2px 0}.stitle h2{font-size:16px;font-weight:660;letter-spacing:-.01em;margin:0}.stitle .hint{font-size:12.5px;color:var(--muted)}.srclabel{font-family:var(--mono);font-size:10px;letter-spacing:.05em;text-transform:uppercase;padding:2px 7px;border-radius:3px}.srclabel.live{background:var(--ok-bg);color:var(--ok)}.srclabel.live:before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--ok);margin-right:5px;vertical-align:1px}.srclabel.pend{background:var(--warn-bg);color:var(--warn)}.kgrid{display:grid;grid-gap:10px;gap:10px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.kpi{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:15px 16px;flex-direction:column;position:relative;min-height:96px}.kpi,.kpi .k{display:flex;gap:6px}.kpi .k{font-size:12px;color:var(--muted);align-items:center}.kpi .v{font-family:var(--mono);font-size:25px;font-weight:600;letter-spacing:-.02em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;line-height:1.1}.kpi .n{font-size:11.5px;color:var(--faint);font-family:var(--mono)}.kpi.pend{background:repeating-linear-gradient(135deg,var(--surface),var(--surface) 10px,var(--surface-2) 10px,var(--surface-2) 20px)}.kpi.pend .v{color:var(--faint);font-size:19px}.kpi .lk{position:absolute;top:13px;right:14px;font-size:11px}.info,.kpi .lk{color:var(--faint)}.info{width:14px;height:14px;border-radius:50%;border:1px solid var(--faint);font-size:9px;display:inline-flex;align-items:center;justify-content:center;font-family:var(--mono)}.chart{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:16px 18px;overflow-x:auto}.legend{display:flex;flex-wrap:wrap;gap:16px;margin-bottom:10px}.legend i{font-style:normal;font-family:var(--mono);font-size:11.5px;color:var(--muted);display:flex;align-items:center;gap:6px}.legend i:before{content:"";width:11px;height:3px;border-radius:2px;background:currentColor}.legend i.a{color:var(--accent)}.legend i.b{color:var(--warn)}.legend i.c{color:var(--ok)}.panel{background:var(--surface);border:1px solid var(--border);border-radius:10px;overflow:hidden}.tscroll{overflow-x:auto}table{border-collapse:collapse;width:100%;min-width:880px;font-size:13.5px}th{font-family:var(--mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);text-align:right;padding:12px 14px;font-weight:500;border-bottom:1px solid var(--border);white-space:nowrap;background:var(--surface-2)}th:first-child{text-align:left}td{padding:11px 14px;border-bottom:1px solid var(--border);text-align:right;font-family:var(--mono);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;white-space:nowrap}td:first-child{text-align:left;font-family:var(--sans)}tbody tr:last-child td{border-bottom:none}tbody tr.dim{opacity:.32}tbody tr:hover{background:var(--surface-2)}.adname{display:flex;flex-direction:column;gap:2px}.adname b{font-weight:620;font-size:14px}.adname i{font-style:normal;font-family:var(--mono);font-size:10.5px;color:var(--muted)}.dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:6px;vertical-align:1px}.dot.ok{background:var(--ok)}.dot.warn{background:var(--warn)}.dot.crit{background:var(--crit)}.fq{font-family:var(--mono)}.fq.hi{color:var(--crit);font-weight:640}.fq.mid{color:var(--warn)}.findings{gap:10px}.find,.findings{display:flex;flex-direction:column}.find{background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--muted);border-radius:10px;padding:14px 16px;gap:7px}.find.crit{border-left-color:var(--crit)}.find.warn{border-left-color:var(--warn)}.find.ok{border-left-color:var(--ok)}.find-top{display:flex;flex-wrap:wrap;gap:10px;align-items:baseline}.sev{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;padding:3px 7px;border-radius:3px;font-weight:600}.find.crit .sev{background:var(--crit-bg);color:var(--crit)}.find.warn .sev{background:var(--warn-bg);color:var(--warn)}.find.ok .sev{background:var(--ok-bg);color:var(--ok)}.find h3{font-size:14.5px;font-weight:640;margin:0}.find p{margin:0;font-size:13.5px;color:var(--ink-2);max-width:82ch}.find p b{color:var(--ink)}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}.login-card{width:100%;max-width:380px;background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:28px 26px;display:flex;flex-direction:column;gap:18px;box-shadow:0 12px 40px -18px rgba(0,0,0,.35)}.login-brand{gap:12px}.login-brand,.login-logo{display:flex;align-items:center}.login-logo{width:44px;height:44px;border-radius:11px;background:var(--accent);color:#fff;justify-content:center;font-weight:680;font-size:16px;flex-shrink:0}.login-brand h1{font-size:18px;font-weight:670;letter-spacing:-.015em;margin:0}.login-brand span{font-size:12.5px;color:var(--muted);font-family:var(--mono)}.login-field{display:flex;flex-direction:column;gap:7px}.login-field span{font-size:12px;font-family:var(--mono);letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}.login-field input{font-family:var(--sans);font-size:15px;color:var(--ink);background:var(--surface-2);border:1px solid var(--border);border-radius:9px;padding:12px 13px;width:100%}.login-field input:focus{outline:2px solid var(--accent);outline-offset:1px;border-color:var(--accent)}.login-error{font-size:13px;color:var(--crit);background:var(--crit-bg);border:1px solid var(--crit);border-radius:8px;padding:9px 12px}.login-btn{font-family:var(--sans);font-size:14.5px;font-weight:640;color:#fff;background:var(--accent);border:none;border-radius:9px;padding:12px;cursor:pointer;transition:opacity .15s}.login-btn:hover{opacity:.92}.login-btn:disabled{opacity:.5;cursor:not-allowed}.login-foot{text-align:center;color:var(--faint);margin:2px 0 0}.login-foot,.logout-btn{font-size:11.5px;font-family:var(--mono)}.logout-btn{color:var(--muted);background:var(--surface-2);border:1px solid var(--border);border-radius:7px;padding:6px 11px;cursor:pointer}.logout-btn:hover{color:var(--ink);border-color:var(--faint)}.proto{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;background:var(--accent-soft);border:1px solid var(--accent);border-radius:8px;padding:10px 14px;font-size:13px;color:var(--ink-2)}.proto b{color:var(--accent)}.foot{font-size:12.5px;color:var(--muted);text-align:center;padding-top:10px;border-top:1px solid var(--border)}.spark{display:block}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}