:root{color-scheme:light;--bg:#f3f4f6;--surface:#fcfcfb;--surface-2:#f6f6f4;--text:#0b0b0b;--text-2:#52514e;--text-3:#85847f;--line:#e6e6e2;--line-strong:#d4d4cf;--accent:#2a78d6;--accent-ink:#1d5fb0;--accent-soft:#e8f1fc;--good:#0e7a4f;--good-soft:#e3f4ec;--bad:#b42318;--bad-soft:#fdebe9;--shadow:0 1px 2px rgba(16,24,40,.05),0 1px 3px rgba(16,24,40,.06);--shadow-lg:0 20px 50px rgba(16,24,40,.22);--radius:14px}@media (prefers-color-scheme:dark){:root{color-scheme:dark;--bg:#111110;--surface:#1a1a19;--surface-2:#222220;--text:#fff;--text-2:#c3c2b7;--text-3:#8f8e86;--line:#2b2b29;--line-strong:#3a3a37;--accent:#3987e5;--accent-ink:#7db3f2;--accent-soft:#172a44;--good:#4cc790;--good-soft:#12291f;--bad:#ff8a80;--bad-soft:#3a1a17;--shadow:0 1px 2px rgba(0,0,0,.4);--shadow-lg:0 20px 50px rgba(0,0,0,.6)}}*{box-sizing:border-box}body,html{margin:0}body{background:var(--bg);color:var(--text);font:14px/1.5 Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;-webkit-font-smoothing:antialiased}button,input,select{font:inherit;color:inherit}button{cursor:pointer}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12.5px}.num{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}svg.i{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:none}.btn{display:inline-flex;align-items:center;gap:7px;height:36px;padding:0 13px;border-radius:10px;border:1px solid var(--line-strong);background:var(--surface);font-weight:500;transition:border-color .15s,background .15s}.btn:hover:not(:disabled){border-color:var(--accent);background:var(--surface-2)}.btn:disabled{opacity:.5;cursor:default}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover:not(:disabled){background:var(--accent-ink);border-color:var(--accent-ink)}.btn.ghost{border-color:transparent;background:transparent}.btn.ghost:hover:not(:disabled){background:var(--surface-2);border-color:transparent}.btn.icon{width:36px;padding:0;justify-content:center}.spin{animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.input,.select{height:38px;width:100%;border-radius:10px;border:1px solid var(--line-strong);background:var(--surface);padding:0 12px;transition:border-color .15s,box-shadow .15s}.input:focus,.select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.select{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-right:32px;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2385847f' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 11px center}.search{position:relative}.search svg{position:absolute;left:11px;top:11px;color:var(--text-3);pointer-events:none}.search .input{padding-left:34px}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:16px;background:radial-gradient(900px 400px at 50% -10%,var(--accent-soft),transparent 70%),var(--bg)}.login-card{width:100%;max-width:380px;background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:32px;box-shadow:var(--shadow-lg)}.logo{display:inline-flex;align-items:center;border-radius:10px;background:#fff;border:1px solid var(--line);padding:6px 10px;margin-bottom:18px;line-height:0}.logo img{display:block;height:26px;width:auto}.logo.logo-lg{padding:10px 16px}.logo.logo-lg img{height:34px}.login-card h1{font-size:21px;margin:0 0 4px;letter-spacing:-.01em}.login-card p{margin:0 0 22px;color:var(--text-2)}.field{display:block;margin-bottom:14px}.field>span{display:block;font-size:12px;font-weight:500;color:var(--text-2);margin-bottom:5px}.login-card .btn.primary{width:100%;justify-content:center;height:40px;margin-top:6px}.err{background:var(--bad-soft);color:var(--bad);padding:9px 12px;border-radius:10px;margin-bottom:14px;font-size:13px}.shell{max-width:1440px;margin:0 auto;padding:20px 20px 40px}.topbar{flex-wrap:wrap;margin-bottom:20px}.brand,.topbar{display:flex;align-items:center;gap:12px}.brand{margin-right:auto}.brand .logo{margin:0;padding:5px 9px}.brand .logo img{height:22px}.brand h1{font-size:17px;margin:0;letter-spacing:-.01em}.brand small{display:block;color:var(--text-3);font-size:12px;margin-top:-2px}.live{display:inline-flex;align-items:center;gap:8px;height:32px;padding:0 12px;border-radius:999px;background:var(--good-soft);color:var(--good);font-size:12.5px;font-weight:500}.live.err-state{background:var(--bad-soft);color:var(--bad)}.live.paused{background:var(--surface-2);color:var(--text-2)}.pulse{width:8px;height:8px;border-radius:50%;background:currentColor;position:relative}.live:not(.paused):not(.err-state) .pulse:after{content:"";position:absolute;inset:-4px;border-radius:50%;background:currentColor;opacity:.25;animation:pulse 2s ease-out infinite}@keyframes pulse{0%{transform:scale(.5);opacity:.4}to{transform:scale(1.4);opacity:0}}.switch{display:inline-flex;align-items:center;gap:8px;font-size:12.5px;color:var(--text-2);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.switch input{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:32px;height:18px;border-radius:999px;background:var(--line-strong);position:relative;transition:background .15s;margin:0;cursor:pointer}.switch input:after{content:"";position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:#fff;transition:transform .15s;box-shadow:0 1px 2px rgba(0,0,0,.3)}.switch input:checked{background:var(--accent)}.switch input:checked:after{transform:translateX(14px)}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.tabs{gap:4px;padding:4px;background:var(--surface-2);border:1px solid var(--line);border-radius:12px;margin-bottom:16px;max-width:100%;overflow-x:auto}.tab,.tabs{display:inline-flex}.tab{align-items:center;gap:8px;border:0;background:transparent;height:34px;padding:0 14px;border-radius:9px;color:var(--text-2);font-weight:500;white-space:nowrap}.tab.active,.tab:hover{color:var(--text)}.tab.active{background:var(--surface);box-shadow:var(--shadow)}.tab .count{font-size:11.5px;padding:1px 7px;border-radius:999px;background:var(--line);color:var(--text-2)}.tab.active .count{background:var(--accent-soft);color:var(--accent-ink)}.overview{display:grid;grid-template-columns:1fr;grid-gap:14px;gap:14px;margin-bottom:14px}@media (min-width:1000px){.overview{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr)}}.kpis{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:14px;gap:14px}.kpi{padding:16px 18px}.kpi .label{color:var(--text-2);font-size:12.5px;display:flex;align-items:center;gap:6px}.kpi .value{font-size:30px;font-weight:650;letter-spacing:-.02em;margin-top:6px;line-height:1.1}.kpi .sub{color:var(--text-3);font-size:12px;margin-top:6px}.meter{height:6px;background:var(--line);margin-top:10px;overflow:hidden}.meter,.meter>i{border-radius:999px}.meter>i{display:block;height:100%;background:var(--accent);transition:width .4s}.chart{padding:16px 18px 12px}.chart-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.chart-head h2{margin:0;font-size:13.5px;font-weight:600}.seg{display:inline-flex;padding:2px;background:var(--surface-2);border:1px solid var(--line);border-radius:9px}.seg button{border:0;background:transparent;height:26px;padding:0 10px;border-radius:7px;font-size:12px;color:var(--text-2);font-weight:500}.seg button.on{background:var(--surface);color:var(--text);box-shadow:var(--shadow)}.bars{grid-gap:4px;gap:4px}.bar,.bars{display:grid}.bar{position:relative;grid-template-columns:92px 1fr 40px;align-items:center;grid-gap:10px;gap:10px;height:28px;padding:0 6px;margin:0 -6px;border:0;background:transparent;border-radius:8px;text-align:left}.bar:hover{background:var(--surface-2)}.bar .name{font-size:12.5px;color:var(--text-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bar .track{height:10px}.bar .fill{height:100%;background:var(--accent);border-radius:0 4px 4px 0;min-width:2px;transition:width .35s,opacity .2s}.bar .n{font-size:12.5px;color:var(--text);text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.bars.has-sel .bar:not(.sel) .fill{opacity:.3}.bar .tip{position:absolute;left:100px;bottom:100%;transform:translateY(2px);background:var(--text);color:var(--bg);font-size:12px;padding:4px 8px;border-radius:7px;white-space:nowrap;pointer-events:none;opacity:0;transition:opacity .1s;z-index:5}.bar:hover .tip{opacity:1}.chart-foot{color:var(--text-3);font-size:12px;margin-top:8px}.viz-empty{color:var(--text-3);padding:24px 0;text-align:center}.filters{padding:14px;margin-bottom:14px}.filter-grid{display:grid;grid-gap:10px;gap:10px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.filter-grid .wide{grid-column:span 2}@media (max-width:640px){.filter-grid .wide{grid-column:span 1}}.filters label>span{display:block;font-size:11.5px;font-weight:500;color:var(--text-3);margin-bottom:4px}.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.chip,.chips{align-items:center}.chip{display:inline-flex;gap:6px;height:26px;padding:0 6px 0 10px;border-radius:999px;background:var(--accent-soft);color:var(--accent-ink);font-size:12.5px;font-weight:500;border:0}.chip svg{width:14px;height:14px}.chip:hover{filter:brightness(.96)}.linkbtn{border:0;background:none;color:var(--text-2);font-size:12.5px;text-decoration:underline;padding:0 4px}.tablecard{overflow:hidden}.tablewrap{overflow:auto;max-height:calc(100vh - 220px);min-height:220px}table{border-collapse:separate;border-spacing:0;width:100%;min-width:980px}th{position:-webkit-sticky;position:sticky;top:0;z-index:2;background:var(--surface-2);text-align:left;font-size:11.5px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-3);padding:0;border-bottom:1px solid var(--line);white-space:nowrap}th button{all:unset;box-sizing:border-box;cursor:pointer;display:flex;align-items:center;gap:5px;width:100%;padding:11px 14px}th button:focus-visible,th button:hover{color:var(--text)}th .arrow{opacity:0;font-size:10px}th[aria-sort] .arrow{opacity:1;color:var(--accent)}td{padding:11px 14px;border-bottom:1px solid var(--line);white-space:nowrap}tbody tr{cursor:pointer;transition:background .1s}tbody tr:hover{background:var(--surface-2)}tbody tr:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}tbody tr:last-child td{border-bottom:0}td.clip{max-width:190px;overflow:hidden;text-overflow:ellipsis}.dash{color:var(--text-3)}.pill{display:inline-block;padding:1px 8px;border-radius:6px;background:var(--surface-2);border:1px solid var(--line);font-size:12px;font-weight:600;letter-spacing:.02em}.tag{display:inline-flex;align-items:center;gap:6px;font-size:12.5px}.dot{width:7px;height:7px;border-radius:50%;background:var(--accent)}.tag.f .dot{background:#e87ba4}.tag.m .dot{background:var(--accent)}.ok{display:inline-flex;align-items:center;gap:5px;color:var(--good)}.skel{height:12px;border-radius:6px;background:linear-gradient(90deg,var(--line),var(--surface-2),var(--line));background-size:200% 100%;animation:sh 1.3s infinite}@keyframes sh{to{background-position:-200% 0}}.empty{padding:56px 20px;text-align:center;color:var(--text-2)}.empty strong{display:block;color:var(--text);font-size:15px;margin-bottom:4px}.tablefoot{justify-content:space-between;gap:10px;flex-wrap:wrap;padding:10px 14px;border-top:1px solid var(--line);color:var(--text-3);font-size:12.5px}.pager,.tablefoot{display:flex;align-items:center}.pager{gap:8px;color:var(--text-2)}.pager .btn{height:30px;padding:0 10px}.overlay{position:fixed;inset:0;background:rgba(10,12,16,.45);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:20;animation:fade .18s}.drawer{position:fixed;top:0;right:0;bottom:0;width:min(500px,100%);background:var(--surface);border-left:1px solid var(--line);z-index:21;display:flex;flex-direction:column;box-shadow:var(--shadow-lg);animation:slide .22s cubic-bezier(.2,.8,.2,1)}@keyframes fade{0%{opacity:0}}@keyframes slide{0%{transform:translateX(40px);opacity:0}}.drawer-head{padding:18px 20px 14px;border-bottom:1px solid var(--line)}.drawer-top{justify-content:space-between;gap:8px;margin-bottom:10px}.drawer-top,.drawer-top .nav{display:flex;align-items:center}.drawer-top .nav{gap:4px;color:var(--text-3);font-size:12px}.drawer-head h2{margin:0;font-size:20px;letter-spacing:-.01em}.drawer-head .sub{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:8px;color:var(--text-2);font-size:12.5px}.badge{display:inline-flex;align-items:center;gap:5px;padding:2px 9px;border-radius:999px;font-size:12px;font-weight:500;background:var(--accent-soft);color:var(--accent-ink)}.badge.good{background:var(--good-soft);color:var(--good)}.badge.bad{background:var(--bad-soft);color:var(--bad)}.drawer-body{overflow-y:auto;padding:6px 20px 28px}.section{font-size:11.5px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-3);margin:22px 0 6px}.kv{display:grid;grid-template-columns:130px 1fr auto;grid-gap:12px;gap:12px;align-items:start;padding:10px 0;border-bottom:1px solid var(--line)}.kv:last-child{border-bottom:0}.kv .k{color:var(--text-3);font-size:12.5px;padding-top:1px}.kv .v{word-break:break-all;min-width:0}.kv .v.blank{color:var(--text-3)}.kv a{color:var(--accent-ink);text-decoration:none}.kv a:hover{text-decoration:underline}.copy{display:inline-flex;align-items:center;gap:4px;border:0;background:transparent;color:var(--text-3);height:24px;padding:0 6px;border-radius:6px;font-size:12px}.copy:hover{background:var(--surface-2);color:var(--text)}.copy.done{color:var(--good)}.copy svg{width:14px;height:14px}.kbd{font:11px ui-monospace,monospace;padding:1px 5px;border:solid var(--line-strong);border-width:1px 1px 2px;border-radius:5px;color:var(--text-2)}@media (max-width:640px){.shell{padding:14px 12px 32px}.kv{grid-template-columns:1fr auto}.kv .k{grid-column:1/-1;padding-bottom:0}}