:root{--bg:#f4f5f7;--surface:#fff;--border:#dde1e6;--text:#1b1f24;--muted:#6b7380;--accent:#3d5afe;--accent-soft:#e8ecff;--ok:#1e9e5a;--warn:#d98a00;--danger:#d93636;--sidebar:#1f2430;--sidebar-text:#c9ced8;--radius:8px;color:var(--text);background:var(--bg);font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif;font-size:14px}*{box-sizing:border-box}body{background:var(--bg);margin:0}a{color:var(--accent);text-decoration:none}button{font:inherit;cursor:pointer}.shell{min-height:100vh;display:flex}.sidebar{background:var(--sidebar);width:232px;color:var(--sidebar-text);flex-direction:column;flex-shrink:0;gap:4px;height:100vh;padding:20px 16px;display:flex;position:sticky;top:0}.sidebar .brand{color:#fff;font-size:16px;font-weight:700}.sidebar .tagline{margin-bottom:8px;font-size:11px}.sidebar .group{letter-spacing:.08em;text-transform:uppercase;opacity:.6;margin:18px 0 4px;font-size:10px;font-weight:600}.sidebar a{color:var(--sidebar-text);border-radius:6px;align-items:center;gap:10px;padding:8px 12px;font-size:13px;font-weight:500;display:flex}.sidebar a:before{content:"";background:currentColor;border-radius:50%;width:8px;height:8px}.sidebar a:hover{background:#c9ced824}.sidebar a.active{background:var(--accent);color:#fff;font-weight:600}.sidebar .grow{flex:1}.sidebar .user{align-items:center;gap:6px;margin-top:8px;font-size:11px;display:flex}.sidebar .user button{color:var(--sidebar-text);background:0 0;border:none;padding:0;font-size:11px;text-decoration:underline}.main{flex-direction:column;flex:1;min-width:0;display:flex}.topbar{background:var(--surface);border-bottom:1px solid var(--border);z-index:1;flex-wrap:wrap;align-items:center;gap:8px;min-height:64px;padding:10px 32px;display:flex;position:sticky;top:0}.topbar h1{flex:1;margin:0;font-size:20px;font-weight:600}.filter{border:1px solid var(--border);background:var(--surface);color:var(--muted);border-radius:6px;align-items:center;gap:6px;padding:0 4px 0 10px;font-size:12px;font-weight:500;display:inline-flex}.filter select{font:inherit;color:var(--text);background:0 0;border:none;padding:6px 2px;font-weight:600}.freshness{color:var(--ok);white-space:nowrap;margin-left:8px;font-size:11px;font-weight:500}.freshness.stale{color:var(--warn)}.content{flex-direction:column;gap:16px;padding:24px 32px;display:flex}.row{align-items:stretch;gap:16px;display:flex}.row>*{flex:1;min-width:0}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:12px;padding:16px;display:flex}.card-head{align-items:center;gap:8px;display:flex}.card-head h2{margin:0;font-size:14px;font-weight:600}.card-head .hint{color:var(--muted);margin-left:auto;font-size:11px}.kpi{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px}.kpi .label{color:var(--muted);font-size:12px;font-weight:500}.kpi .value{margin:4px 0;font-size:28px;font-weight:700}.kpi .detail{color:var(--muted);font-size:11px}table{border-collapse:collapse;width:100%}th{text-align:left;color:var(--muted);border-bottom:1px solid var(--border);padding:6px 8px;font-size:11px;font-weight:600}td{border-bottom:1px solid var(--border);white-space:nowrap;padding:9px 8px;font-size:12px}tr.clickable{cursor:pointer}tr.clickable:hover td{background:var(--accent-soft)}.mono{font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-size:11px}.muted{color:var(--muted)}.note{color:var(--muted);font-size:11px}.empty{text-align:center;color:var(--muted);padding:24px;font-size:13px}.badge{background:var(--bg);border-radius:10px;align-items:center;gap:6px;padding:3px 8px;font-size:11px;font-weight:600;display:inline-flex}.badge:before{content:"";background:var(--muted);border-radius:50%;width:7px;height:7px}.badge.active:before{background:var(--ok)}.badge.silent:before{background:var(--warn)}.badge.crash:before{background:var(--danger)}.badge.ended{color:var(--muted)}.feed{flex-direction:column;gap:10px;max-height:640px;display:flex;overflow:auto}.live-dot{color:var(--muted);align-items:center;gap:6px;margin-left:auto;font-size:11px;display:inline-flex}.live-dot:before{content:"";background:var(--warn);border-radius:50%;width:8px;height:8px}.live-dot.on:before{background:var(--ok);animation:2s infinite pulse}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}.feed .item{border-left:3px solid #0000;padding-left:6px}.feed .item.fresh{border-left-color:var(--accent);animation:1.6s ease-out arrive}@keyframes arrive{0%{background:var(--accent-soft)}to{background:0 0}}@media (prefers-reduced-motion:reduce){.live-dot.on:before,.feed .item.fresh{animation:none}}.feed .item .what{font-size:12px;font-weight:500}.feed .item .when{color:var(--muted);font-size:10px}.login{background:var(--sidebar);place-items:center;min-height:100vh;display:grid}.login form{background:var(--surface);border-radius:12px;flex-direction:column;gap:14px;width:380px;padding:32px;display:flex}.login h1{margin:0;font-size:22px}.login label{color:var(--muted);flex-direction:column;gap:6px;font-size:12px;font-weight:500;display:flex}.login input{font:inherit;border:1px solid var(--border);background:var(--bg);color:var(--text);border-radius:6px;padding:10px 12px}.btn{background:var(--accent);color:#fff;border:none;border-radius:6px;padding:9px 16px;font-weight:600}.btn:disabled{opacity:.6}.error{color:var(--danger);font-size:12px}.chart{position:relative}.bars{justify-content:center;align-items:flex-end;gap:6px;height:100%;padding-bottom:18px;display:flex;position:relative;overflow:hidden}.bar-col{flex-direction:column;flex:1 1 0;justify-content:flex-end;align-items:stretch;min-width:0;max-width:56px;height:100%;display:flex;position:relative}.bar{border-radius:4px 4px 0 0;min-height:2px}.bar-label{text-align:center;color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:10px;position:absolute;bottom:-18px;left:0;right:0;overflow:hidden}.hbars{flex-direction:column;gap:8px;display:flex}.hbar-row{align-items:center;gap:10px;font-size:12px;display:flex}.hbar-label{text-overflow:ellipsis;white-space:nowrap;flex-shrink:0;overflow:hidden}.hbar-track{flex:1;min-width:40px}.hbar{border-radius:0 4px 4px 0;min-width:2px;height:14px;display:block}.hbar-value{color:var(--muted);white-space:nowrap;min-width:60px;font-weight:500}.stacked{gap:2px;height:22px;display:flex}.stacked span:first-child{border-radius:4px 0 0 4px}.stacked span:last-child{border-radius:0 4px 4px 0}.legend{color:var(--muted);flex-wrap:wrap;gap:6px 16px;margin-top:8px;font-size:11px;display:flex}.legend span,.legend button{align-items:center;gap:6px;display:inline-flex}.legend button{font-size:inherit;color:inherit;background:0 0;border:none;padding:0}.legend button:hover{color:var(--text)}.legend button.off{opacity:.4;text-decoration:line-through}.legend i,.dot{border-radius:2px;width:10px;height:10px;display:inline-block}svg .grid{stroke:#e6e9ed;stroke-width:1px;vector-effect:non-scaling-stroke}svg .crosshair{stroke:var(--muted);stroke-width:1px;stroke-dasharray:3 3;vector-effect:non-scaling-stroke}.axis-label{color:var(--muted);pointer-events:none;font-size:10px;position:absolute}.tooltip{pointer-events:none;background:var(--sidebar);color:#fff;white-space:nowrap;z-index:2;border-radius:6px;padding:6px 8px;font-size:11px;position:absolute;transform:translate(-50%)}.tooltip b{margin-bottom:2px;display:block}.tabs{gap:4px;display:flex}.tabs button{color:var(--muted);background:0 0;border:none;border-radius:6px;padding:6px 12px;font-size:12px;font-weight:500}.tabs button.on{background:var(--surface);color:var(--text);font-weight:600}.meta{flex-wrap:wrap;gap:12px 28px;display:flex}.meta div{flex-direction:column;gap:2px;display:flex}.meta .k{color:var(--muted);font-size:11px;font-weight:500}.meta .v{font-size:13px;font-weight:600}.controls{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.controls select,.controls input{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:6px;padding:6px 8px;font-size:12px}.field{color:var(--muted);flex-direction:column;gap:4px;font-size:11px;font-weight:500;display:flex}.field select,.field input{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:6px;padding:7px 8px;font-size:12px}.warn{color:var(--danger);font-weight:600}.btn-danger{border:1px solid var(--danger);background:var(--surface);color:var(--danger);border-radius:6px;padding:5px 10px;font-size:12px;font-weight:500}.btn-danger:hover{background:var(--danger);color:#fff}.btn-danger:disabled{opacity:.5;cursor:default}pre.code{background:var(--bg);white-space:pre-wrap;border-radius:6px;margin:0;padding:10px;font-size:11px}.scroll{overflow:auto}@media (width<=900px){.sidebar{display:none}.row{flex-direction:column}.content,.topbar{padding-left:16px;padding-right:16px}}
