:root{--bg:#0a0e16;--bg-2:#0f1420;--panel:#141b2b;--panel-2:#1a2334;--panel-3:#202b40;--border:#26324a;--border-soft:#1e2839;--ink:#eaf0f9;--ink-2:#c3cddd;--sub:#7d8aa3;--faint:#55617a;--brand:#8b6fa0;--brand-2:#a98fb8;--brand-ink:#d8c7e4;--ok:#36d399;--ok-bg:#0f2e22;--warn:#f5b944;--warn-bg:#33280c;--bad:#fb6f6f;--bad-bg:#351a1d;--info:#58b6f0;--info-bg:#10283b;--mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;--sans:"Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--sidebar-w:236px;--shadow:0 6px 24px -8px #00000080}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;font-size:14px;line-height:1.45}::selection{background:var(--brand);color:#fff}a{color:var(--brand-2);text-decoration:none}code{font-family:var(--mono);background:var(--panel-2);color:var(--brand-ink);border-radius:5px;padding:1px 6px;font-size:.86em}h1,h2,h3{letter-spacing:-.01em;margin:0;font-weight:650}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{border:2px solid var(--bg);background:#2a3550;border-radius:6px}::-webkit-scrollbar-track{background:0 0}.auth{background:radial-gradient(1200px 600px at 50% -10%, #1a1330 0%, var(--bg) 55%);place-items:center;min-height:100%;padding:24px;display:grid}.auth-card{background:var(--panel);border:1px solid var(--border);width:100%;max-width:392px;box-shadow:var(--shadow);border-radius:18px;padding:34px}.auth-logo{align-items:center;gap:10px;margin-bottom:6px;display:flex}.auth-logo .mark{object-fit:cover;border-radius:9px;width:34px;height:34px;display:block}.auth-card h1{font-size:20px}.auth-card .tag{color:var(--sub);align-items:center;gap:6px;margin:4px 0 26px;font-size:12.5px;display:flex}.field{margin-bottom:15px;display:block}.field>span{color:var(--sub);letter-spacing:.02em;margin-bottom:7px;font-size:11.5px;font-weight:500;display:block}.field input,.input,.select{background:var(--bg-2);border:1px solid var(--border);width:100%;color:var(--ink);border-radius:10px;outline:none;padding:11px 13px;font-family:inherit;font-size:14px;transition:border-color .15s,box-shadow .15s}.field input:focus,.input:focus,.select:focus{border-color:var(--brand-2);box-shadow:0 0 0 3px #8b6fa033}.btn{cursor:pointer;background:var(--brand);color:#fff;border:0;border-radius:10px;justify-content:center;align-items:center;gap:7px;padding:10px 15px;font-family:inherit;font-size:13.5px;font-weight:600;transition:background .15s,opacity .15s;display:inline-flex}.btn:hover{background:#9a7cae}.btn:disabled{opacity:.5;cursor:default}.btn.wide{width:100%;padding:12px}.btn.ghost{border:1px solid var(--border);color:var(--ink-2);background:0 0;padding:8px 13px;font-weight:500}.btn.ghost:hover{background:var(--panel-2);color:var(--ink)}.btn.sm{padding:6px 11px;font-size:12.5px}.err-msg{color:var(--bad);margin:12px 0 0;font-size:13px}.shell{grid-template-columns:var(--sidebar-w) 1fr;min-height:100vh;display:grid}.sidebar{background:var(--bg-2);border-right:1px solid var(--border-soft);flex-direction:column;height:100vh;display:flex;position:sticky;top:0}.sidebar .brand{align-items:center;gap:10px;padding:18px 18px 14px;display:flex}.sidebar .brand .mark{object-fit:cover;border-radius:8px;width:30px;height:30px;display:block}.sidebar .brand b{letter-spacing:-.01em;font-size:15px}.sidebar .brand small{color:var(--brand-2);text-transform:uppercase;letter-spacing:.12em;border:1px solid #8b6fa055;border-radius:5px;margin-left:2px;padding:1px 5px;font-size:10px;font-weight:700}.nav{flex:1;padding:8px 10px;overflow-y:auto}.nav .grp{text-transform:uppercase;letter-spacing:.12em;color:var(--faint);padding:14px 10px 6px;font-size:10px;font-weight:700}.nav a,.nav button{text-align:left;width:100%;color:var(--ink-2);cursor:pointer;background:0 0;border:0;border-radius:9px;align-items:center;gap:11px;margin-bottom:2px;padding:9px 11px;font-family:inherit;font-size:13.5px;font-weight:500;display:flex;position:relative}.nav button:hover{background:var(--panel);color:var(--ink)}.nav button.active{background:var(--panel-2);color:#fff}.nav button.active:before{content:"";background:var(--brand-2);border-radius:3px;width:3px;position:absolute;top:8px;bottom:8px;left:-10px}.nav .count{background:var(--bad-bg);color:var(--bad);border-radius:999px;margin-left:auto;padding:1px 7px;font-size:11px;font-weight:700}.nav .count.mut{background:var(--panel-3);color:var(--sub)}.side-foot{border-top:1px solid var(--border-soft);padding:12px}.side-foot .who{align-items:center;gap:10px;padding:6px 4px 10px;display:flex}.avatar{background:var(--panel-3);width:30px;height:30px;color:var(--brand-ink);border-radius:50%;place-items:center;font-size:12px;font-weight:700;display:grid}.side-foot .who .meta{overflow:hidden}.side-foot .who .meta b{font-size:12.5px;display:block}.side-foot .who .meta span{color:var(--sub);white-space:nowrap;text-overflow:ellipsis;font-size:11px;display:block;overflow:hidden}.main{flex-direction:column;min-width:0;display:flex}.topbar{border-bottom:1px solid var(--border-soft);background:color-mix(in srgb, var(--bg) 82%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:20;align-items:center;gap:14px;padding:15px 26px;display:flex;position:sticky;top:0}.topbar h2{font-size:17px}.topbar .sub{color:var(--sub);font-size:12.5px}.topbar .spacer{flex:1}.status{color:var(--ink-2);background:var(--panel);border:1px solid var(--border);border-radius:999px;align-items:center;gap:7px;padding:6px 11px;font-size:12.5px;display:inline-flex}.dot{border-radius:50%;flex:none;width:8px;height:8px}.dot.ok{background:var(--ok);box-shadow:0 0 0 3px #36d39930}.dot.warn{background:var(--warn);box-shadow:0 0 0 3px #f5b94430}.dot.bad{background:var(--bad);box-shadow:0 0 0 3px #fb6f6f30}.dot.live{background:var(--ok);animation:1.6s ease-in-out infinite pulse}@keyframes pulse{0%,to{box-shadow:0 0 #36d39955}50%{box-shadow:0 0 0 5px #36d39900}}.content{width:100%;max-width:1360px;padding:24px 26px 60px}.grid{gap:14px;display:grid}.g-4{grid-template-columns:repeat(4,1fr)}.g-3{grid-template-columns:repeat(3,1fr)}.g-2{grid-template-columns:repeat(2,1fr)}@media (width<=1100px){.g-4,.g-3{grid-template-columns:repeat(2,1fr)}}@media (width<=720px){.shell{grid-template-columns:1fr}.sidebar{display:none}.g-4,.g-3,.g-2{grid-template-columns:1fr}}.card{background:var(--panel);border:1px solid var(--border-soft);border-radius:14px;padding:17px 18px}.card.pad0{padding:0;overflow:hidden}.card-h{border-bottom:1px solid var(--border-soft);align-items:center;gap:9px;padding:14px 18px;display:flex}.card-h h3{font-size:13.5px}.card-h .ico{color:var(--brand-2);place-items:center;display:grid}.card-h .spacer{flex:1}.stat .top{color:var(--sub);align-items:center;gap:8px;font-size:12px;font-weight:500;display:flex}.stat .top .ico{background:var(--panel-2);width:28px;height:28px;color:var(--brand-2);border-radius:8px;place-items:center;display:grid}.stat .val{letter-spacing:-.02em;font-variant-numeric:tabular-nums;margin-top:12px;font-size:27px;font-weight:700}.stat .foot{color:var(--sub);align-items:center;gap:7px;margin-top:6px;font-size:12px;display:flex}.stat .foot.col{display:block}.stat .foot.col .why{margin-top:4px;line-height:1.45}.delta{border-radius:999px;align-items:center;gap:3px;padding:1px 7px;font-size:11.5px;font-weight:700;display:inline-flex}.delta.up{color:var(--ok);background:var(--ok-bg)}.delta.down{color:var(--bad);background:var(--bad-bg)}.delta.flat{color:var(--sub);background:var(--panel-2)}.stat.attn .val{color:var(--warn)}.stat.bad .val{color:var(--bad)}.section-title{text-transform:uppercase;letter-spacing:.09em;color:var(--faint);margin:26px 2px 12px;font-size:12.5px;font-weight:700}.badge{font-size:11.5px;font-weight:650;font-family:var(--mono);border-radius:999px;align-items:center;gap:5px;padding:2px 9px;display:inline-flex}.badge.ok{background:var(--ok-bg);color:var(--ok)}.badge.warn{background:var(--warn-bg);color:var(--warn)}.badge.bad{background:var(--bad-bg);color:var(--bad)}.badge.info{background:var(--info-bg);color:var(--info)}.badge.mut{background:var(--panel-2);color:var(--sub)}.badge.brand{color:var(--brand-ink);background:#8b6fa022}.tag-role{text-transform:capitalize}.tbl-wrap{overflow-x:auto}table.tbl{border-collapse:collapse;width:100%;font-size:13px}table.tbl th{text-align:left;text-transform:uppercase;letter-spacing:.07em;color:var(--faint);background:var(--bg-2);border-bottom:1px solid var(--border-soft);padding:10px 16px;font-size:10.5px;font-weight:700;position:sticky;top:0}table.tbl td{border-bottom:1px solid var(--border-soft);color:var(--ink-2);vertical-align:middle;padding:11px 16px}table.tbl tbody,table.tbl tr:last-child td{border-bottom:0}table.tbl tr.clk{cursor:pointer}table.tbl tr.clk:hover td{background:var(--panel-2)}.mono{font-family:var(--mono);font-size:12px}.route{font-family:var(--mono);color:var(--brand-2);font-size:12px}.muted{color:var(--sub)}.faint{color:var(--faint)}.nowrap{white-space:nowrap}.tnum{font-variant-numeric:tabular-nums}.ellip{text-overflow:ellipsis;white-space:nowrap;max-width:460px;overflow:hidden}.bar{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:14px;display:flex}.bar .input,.bar .select{width:auto;padding:8px 11px}.bar .grow{flex:1;min-width:180px}.pager{border-top:1px solid var(--border-soft);color:var(--sub);align-items:center;gap:12px;padding:12px 16px;font-size:12.5px;display:flex}.scrim{z-index:40;background:#0007;animation:.15s fade;position:fixed;inset:0}@keyframes fade{0%{opacity:0}}.drawer{background:var(--panel);border-left:1px solid var(--border);z-index:41;flex-direction:column;width:min(680px,94vw);animation:.2s slide;display:flex;position:fixed;top:0;bottom:0;right:0;box-shadow:-20px 0 50px -20px #000}@keyframes slide{0%{opacity:.6;transform:translate(30px)}}.drawer .dh{border-bottom:1px solid var(--border-soft);align-items:center;gap:10px;padding:16px 20px;display:flex}.modal{z-index:41;background:var(--panel);border:1px solid var(--border);width:min(440px,94vw);box-shadow:var(--shadow);border-radius:16px;position:fixed;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.modal-h{border-bottom:1px solid var(--border-soft);align-items:center;gap:11px;padding:18px 20px;display:flex}.modal-h .ico{color:var(--brand-2);flex:none;place-items:center;display:grid}.modal-h b{letter-spacing:-.01em;flex:1;font-size:15px}.icon-btn{border:1px solid var(--border);width:30px;height:30px;color:var(--sub);cursor:pointer;background:0 0;border-radius:9px;flex:none;place-items:center;padding:0;transition:background .15s,color .15s;display:grid}.icon-btn:hover{background:var(--panel-2);color:var(--ink)}.modal-b{padding:20px}.drawer .db{padding:20px;overflow-y:auto}.stack{font-family:var(--mono);white-space:pre-wrap;word-break:break-word;background:var(--bg-2);border:1px solid var(--border-soft);color:var(--ink-2);border-radius:10px;max-height:320px;padding:14px;font-size:12px;line-height:1.6;overflow:auto}.kv{grid-template-columns:130px 1fr;gap:6px 14px;font-size:13px;display:grid}.kv dt{color:var(--sub)}.kv dd{color:var(--ink);word-break:break-word;margin:0}.center{min-height:60vh;color:var(--sub);place-items:center;display:grid}.empty{text-align:center;color:var(--sub);padding:44px 20px}.empty .big{margin-bottom:10px;font-size:30px}.skel{background:linear-gradient(90deg, var(--panel-2) 25%, var(--panel-3) 50%, var(--panel-2) 75%);background-size:200% 100%;border-radius:8px;animation:1.2s infinite sh}@keyframes sh{to{background-position:-200% 0}}.spin-ico{animation:.8s linear infinite rot}@keyframes rot{to{transform:rotate(360deg)}}.chart-h{height:240px;margin-top:6px}.chart-sm{height:60px}.legend{color:var(--sub);flex-wrap:wrap;gap:16px;margin-top:8px;font-size:12px;display:flex}.legend i{vertical-align:0;border-radius:3px;width:9px;height:9px;margin-right:6px;display:inline-block}.bar-track{background:var(--panel-2);border-radius:999px;height:7px;overflow:hidden}.bar-fill{background:linear-gradient(90deg, var(--brand), var(--brand-2));border-radius:999px;height:100%}.vstack{flex-direction:column;gap:14px;display:flex}.tabs{flex-wrap:wrap;gap:6px;display:flex}.tabs button{background:var(--panel);border:1px solid var(--border-soft);color:var(--ink-2);cursor:pointer;border-radius:99px;padding:7px 14px;font-size:13px}.tabs button.active{background:var(--brand);border-color:var(--brand);color:#fff}.proposal-list{flex-direction:column;gap:10px;display:flex}.proposal{border:1px solid var(--border-soft);background:var(--panel-2);cursor:pointer;border-radius:12px;align-items:flex-start;gap:12px;padding:13px 14px;display:flex}.proposal.picked{border-color:var(--brand);background:var(--panel-3)}.proposal input[type=checkbox]{width:20px;height:20px;accent-color:var(--brand);flex:none;margin-top:2px}.proposal-main{flex-direction:column;gap:6px;min-width:0;display:flex}.proposal-top{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.proposal-top .rank{font-family:var(--mono);color:var(--brand-ink);font-size:12px}.proposal-body{color:var(--ink-2);white-space:pre-wrap;font-size:13px}.proposal-effect{flex-wrap:wrap;align-items:center;gap:6px;min-width:0;display:flex}.effect-label{letter-spacing:.04em;text-transform:uppercase;color:var(--mut,#8b96ab);font-size:10.5px}.effect-chip{overflow-wrap:anywhere;background:var(--panel-3);border:1px solid var(--border);min-width:0;max-width:100%;color:var(--ink-2);border-radius:999px;align-items:baseline;gap:5px;padding:2px 8px;font-size:11.5px;display:inline-flex}.effect-chip b{overflow-wrap:anywhere;min-width:0;font-family:var(--mono);color:var(--ink);font-size:11.5px}.proposal-basis{color:var(--mut,#8b96ab);font-size:11.5px;font-style:italic}.pr-link{display:inline-flex}.approve-bar{background:var(--panel-3);border:1px solid var(--border);z-index:5;border-radius:12px;align-items:center;gap:10px;padding:10px 14px;display:flex;position:sticky;bottom:12px;box-shadow:0 8px 30px #00000073}.approve-bar .btn.primary{background:var(--ok);border-color:var(--ok);color:#04150d}.action-error{color:var(--bad);font-size:13px}.snapshot-age{color:var(--ink-2);background:var(--panel-2);border:1px solid var(--border-soft);border-left:3px solid var(--warn);border-radius:10px;padding:10px 13px;font-size:13px}.phase0{flex-direction:column;gap:7px;margin:0;padding:0;font-size:13px;list-style:none;display:flex}.phase0 li{color:var(--ink-2);align-items:baseline;gap:8px;display:flex}.phase0 li.done{color:var(--mut,#8b96ab);text-decoration:line-through}.tabbar{display:none}@media (width<=720px){.tabbar{z-index:20;background:color-mix(in srgb, var(--bg-2) 92%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--border-soft);padding:6px 4px calc(6px + env(safe-area-inset-bottom));justify-content:space-around;display:flex;position:fixed;bottom:0;left:0;right:0}.tabbar button{color:var(--ink-2);cursor:pointer;background:0 0;border:0;border-radius:10px;flex-direction:column;align-items:center;gap:3px;min-width:56px;min-height:44px;padding:4px 6px;font-size:10.5px;display:flex}.tabbar button.active{color:var(--brand-2)}.tab-ico{display:inline-flex;position:relative}.tab-count{background:var(--bad);color:#fff;border-radius:8px;padding:2px 4px;font-size:9px;font-weight:700;line-height:1;position:absolute;top:-5px;right:-9px}.content{padding-bottom:84px}.approve-bar{bottom:calc(64px + env(safe-area-inset-bottom))}.topbar h2{font-size:17px}.topbar .status{display:none}.card{padding:13px}}
