:root{--bg:#0a0d13;--surface:#10141c;--surface-2:#161c27;--border:#1f2734;--border-strong:#2c3648;--text:#e7ecf3;--muted:#96a2b4;--faint:#647082;--accent:#5aa2ff;--accent-hover:#7ab5ff;--accent-ink:#071022;--accent-soft:#5aa2ff1f;--ok:#3ecf8e;--ok-soft:#3ecf8e1f;--warn:#e8b44b;--warn-soft:#e8b44b21;--danger:#ff6f6b;--danger-soft:#ff6f6b1f;--radius:12px;--radius-s:8px;--shadow:0 1px 2px #00000059, 0 12px 32px -16px #00000080;--dur:.16s;--ease:cubic-bezier(.4, 0, .2, 1);--font-sans:ui-sans-serif, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono:ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, monospace;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@media (prefers-color-scheme:light){:root{--bg:#f5f6f8;--surface:#fff;--surface-2:#eef1f5;--border:#e2e6ec;--border-strong:#c9d1dc;--text:#171c24;--muted:#5b6675;--faint:#8d97a6;--accent:#1266d3;--accent-hover:#0f57b4;--accent-ink:#fff;--accent-soft:#1266d317;--ok:#147d52;--ok-soft:#147d521a;--warn:#92660c;--warn-soft:#92660c1f;--danger:#c22d26;--danger-soft:#c22d2617;--shadow:0 1px 2px #1018280f, 0 12px 32px -18px #1018282e;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}}*,:before,:after{box-sizing:border-box}html,body,#root{min-height:100%;margin:0;padding:0}body{background:var(--bg);color:var(--text);font:400 15.5px/1.6 var(--font-sans);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility}::selection{background:var(--accent-soft)}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}code{font:500 .84em/1.5 var(--font-mono);background:var(--surface-2);border:1px solid var(--border);border-radius:6px;padding:.1em .4em}h1{letter-spacing:-.022em;margin:0 0 6px;font-size:clamp(1.45rem,2.6vw,1.75rem);font-weight:650;line-height:1.2}.subtitle{color:var(--muted);max-width:70ch;margin:0 0 26px;font-size:.97rem;line-height:1.55}.subtitle .chip{vertical-align:1px}.kicker{letter-spacing:.09em;text-transform:uppercase;color:var(--faint);margin:0;font-size:.72rem;font-weight:650}.note{color:var(--muted);margin:6px 0 0;font-size:.87rem}.faint{color:var(--faint)}.appbar{z-index:20;background:color-mix(in srgb, var(--bg) 78%, transparent);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--border);position:sticky;top:0}.appbar-inner{align-items:center;gap:20px;max-width:860px;height:58px;margin:0 auto;padding:0 20px;display:flex}.appbar-inner>.spacer{flex:1}.appnav{align-items:center;gap:4px;display:flex}.navlink{color:var(--muted);border-radius:var(--radius-s);transition:color var(--dur) var(--ease), background var(--dur) var(--ease);padding:7px 12px;font-size:.9rem;font-weight:500}.navlink:hover{color:var(--text);text-decoration:none}.navlink.active{color:var(--text);background:var(--surface-2)}.container{max-width:860px;margin:0 auto;padding:34px 20px 72px}.appfooter{max-width:860px;color:var(--faint);margin:0 auto;padding:0 20px 44px;font-size:.78rem}.center{justify-content:center;align-items:center;min-height:100dvh;padding:32px 20px;display:flex}.mark{letter-spacing:-.01em;color:var(--text);align-items:center;gap:10px;font-size:1rem;font-weight:650;display:inline-flex}.mark:hover{text-decoration:none}.mark svg{width:24px;height:24px;color:var(--accent);flex:none}.mark.lg{font-size:1.15rem}.mark.lg svg{width:30px;height:30px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px 22px}.card+.card,.stack>*+*{margin-top:14px}.card-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;display:flex}.btn{height:38px;font:600 .9rem/1 var(--font-sans);cursor:pointer;white-space:nowrap;transition:background var(--dur) var(--ease), border-color var(--dur) var(--ease), color var(--dur) var(--ease), transform var(--dur) var(--ease);border:1px solid #0000;border-radius:9px;justify-content:center;align-items:center;gap:8px;padding:0 16px;text-decoration:none;display:inline-flex}.btn:hover{text-decoration:none}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-primary{background:var(--accent);color:var(--accent-ink)}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-subtle{background:var(--surface-2);border-color:var(--border);color:var(--text)}.btn-subtle:hover:not(:disabled){border-color:var(--border-strong)}.btn-ghost{color:var(--accent);background:0 0}.btn-ghost:hover:not(:disabled){background:var(--accent-soft)}.btn-danger-ghost{color:var(--danger);background:0 0}.btn-danger-ghost:hover:not(:disabled){background:var(--danger-soft)}.btn-sm{height:32px;padding:0 12px;font-size:.84rem}.field{margin-bottom:16px}.label{color:var(--muted);margin-bottom:6px;font-size:.82rem;font-weight:550;display:block}.input{border:1px solid var(--border);background:var(--bg);width:100%;height:40px;color:var(--text);font:400 .95rem/1 var(--font-sans);transition:border-color var(--dur) var(--ease);border-radius:9px;padding:0 13px}.input::placeholder{color:var(--faint)}.input:hover{border-color:var(--border-strong)}.input:focus{outline:2px solid var(--accent);outline-offset:0;border-color:#0000}.pill{border:1px solid var(--border);background:var(--surface-2);height:26px;color:var(--muted);border-radius:999px;align-items:center;gap:7px;padding:0 11px;font-size:.8rem;font-weight:600;display:inline-flex}.pill .dot{background:currentColor;border-radius:50%;flex:none;width:7px;height:7px}.pill-ok{color:var(--ok);background:var(--ok-soft);border-color:#0000}.pill-warn{color:var(--warn);background:var(--warn-soft);border-color:#0000}.pill-danger{color:var(--danger);background:var(--danger-soft);border-color:#0000}.chips{flex-wrap:wrap;gap:6px;display:flex}.chip{font:500 .78rem/1 var(--font-mono);background:var(--surface-2);border:1px solid var(--border);color:var(--muted);border-radius:6px;padding:5px 9px}.chip-accent{color:var(--accent);background:var(--accent-soft);border-color:#0000}.tag{font:650 .66rem/1 var(--font-sans);letter-spacing:.06em;text-transform:uppercase;background:var(--surface-2);border:1px solid var(--border);color:var(--faint);border-radius:5px;padding:3px 7px}.tag-accent{color:var(--accent);background:var(--accent-soft);border-color:#0000}.kv{grid-template-columns:max-content 1fr;gap:9px 22px;margin:0;font-size:.9rem;display:grid}.kv dt{color:var(--muted)}.kv dd{font:500 .86rem/1.5 var(--font-mono);overflow-wrap:anywhere;margin:0}.alert{border:1px solid var(--border);background:var(--surface);border-radius:10px;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;padding:12px 14px;font-size:.9rem;display:flex}.alert-ok{background:var(--ok-soft);color:var(--ok);border-color:#0000}.alert-danger{background:var(--danger-soft);color:var(--danger);border-color:#0000}.table-scroll{border:1px solid var(--border);border-radius:10px;max-height:320px;margin-top:12px;overflow:auto}table{border-collapse:collapse;width:100%;font-size:.86rem}thead th{background:var(--surface-2);text-align:left;font:650 .68rem/1 var(--font-sans);letter-spacing:.07em;text-transform:uppercase;color:var(--faint);border-bottom:1px solid var(--border);padding:9px 14px;position:sticky;top:0}tbody td{border-bottom:1px solid var(--border);vertical-align:middle;padding:8px 14px}tbody tr:last-child td{border-bottom:0}tbody tr:hover td{background:color-mix(in srgb, var(--surface-2) 55%, transparent)}td.mono{font:500 .82rem/1.5 var(--font-mono)}td.num{text-align:right;font:500 .82rem/1.5 var(--font-mono);color:var(--muted)}.list{margin:0;padding:0;list-style:none}.list li{color:var(--muted);margin:7px 0;padding-left:20px;font-size:.9rem;position:relative}.list li:before{content:"";background:var(--accent);border-radius:50%;width:6px;height:6px;position:absolute;top:.58em;left:2px}.skel{background:linear-gradient(90deg, var(--surface-2) 25%, var(--border) 50%, var(--surface-2) 75%);background-size:200% 100%;border-radius:6px;height:12px;margin:10px 0;animation:1.3s infinite shimmer}@keyframes shimmer{to{background-position:-200% 0}}.empty{text-align:center;color:var(--muted);padding:26px 16px;font-size:.9rem}.row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.between{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.grid3{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;display:grid}.hero{padding:26px 0 10px}.hero h1{margin-bottom:10px;font-size:clamp(1.7rem,3.4vw,2.15rem)}.hero .lede{color:var(--muted);max-width:58ch;margin:0 0 18px;font-size:1.02rem}.clamp2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.tag-ok{color:var(--ok);background:var(--ok-soft);border-color:#0000}.tag-warn{color:var(--warn);background:var(--warn-soft);border-color:#0000}.obj-comment{color:var(--muted);font-size:.84rem}.obj-detail>td{background:color-mix(in srgb, var(--surface-2) 40%, transparent);padding:12px 16px 16px}:root{--viz-bar:#3987e5;--viz-f1:#184f95;--viz-f2:#256abf;--viz-f3:#3987e5;--viz-f4:#6da7ec;--viz-f5:#9ec5f4}@media (prefers-color-scheme:light){:root{--viz-bar:#2a78d6;--viz-f1:#86b6ef;--viz-f2:#5598e7;--viz-f3:#2a78d6;--viz-f4:#1c5cab;--viz-f5:#104281}}.kpis{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;display:grid}.tile{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px 16px}.tile-value{letter-spacing:-.02em;font-size:1.5rem;font-weight:650;line-height:1.15}.tile-sub{color:var(--faint);margin-top:2px;font-size:.78rem}.meter{background:var(--surface-2);border-radius:999px;height:6px;margin-top:10px;overflow:hidden}.meter>span{background:var(--viz-bar);border-radius:999px;height:100%;display:block}.viz-block{margin-top:16px}.viz-title{color:var(--muted);margin:0 0 10px;font-size:.82rem;font-weight:600}.fresh-bar{gap:2px;height:18px;display:flex}.fresh-bar>button{cursor:default;min-width:4px;transition:filter var(--dur) var(--ease);border:0;padding:0}.fresh-bar>button:hover,.fresh-bar>button:focus-visible{filter:brightness(1.18)}.fresh-bar>button:first-child{border-radius:4px 0 0 4px}.fresh-bar>button:last-child{border-radius:0 4px 4px 0}.viz-legend{flex-wrap:wrap;gap:6px 16px;margin-top:10px;display:flex}.viz-legend .key{color:var(--muted);align-items:center;gap:7px;font-size:.78rem;display:inline-flex}.viz-legend .sw{border-radius:3px;flex:none;width:10px;height:10px}.hbar-row{grid-template-columns:minmax(120px,220px) 1fr max-content;align-items:center;gap:10px;margin:7px 0;display:grid}.hbar-name{font:500 .8rem/1.3 var(--font-mono);color:var(--muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.hbar-track{height:14px}.hbar-track>span{background:var(--viz-bar);min-width:2px;height:100%;transition:filter var(--dur) var(--ease);border-radius:0 4px 4px 0;display:block}.hbar-row:hover .hbar-track>span{filter:brightness(1.18)}.hbar-val{font:500 .78rem/1 var(--font-mono);color:var(--muted)}.viz-tip{pointer-events:none;z-index:5;background:var(--surface-2);border:1px solid var(--border-strong);box-shadow:var(--shadow);white-space:nowrap;border-radius:8px;padding:6px 10px;font-size:.8rem;position:absolute;transform:translate(-50%,calc(-100% - 8px))}.viz-tip strong{font-size:.88rem}:root{--viz-c1:#3987e5;--viz-c2:#d95926;--viz-c3:#199e70;--viz-c4:#c98500}@media (prefers-color-scheme:light){:root{--viz-c1:#2a78d6;--viz-c2:#eb6834;--viz-c3:#1baf7a;--viz-c4:#eda100}}.tabbar{flex-wrap:wrap;gap:6px;margin:4px 0 18px;display:flex}.tabbtn{border:1px solid var(--border);background:var(--surface);color:var(--muted);height:32px;font:550 .84rem/1 var(--font-sans);cursor:pointer;transition:all var(--dur) var(--ease);border-radius:999px;padding:0 14px}.tabbtn:hover{border-color:var(--border-strong);color:var(--text)}.tabbtn.on{background:var(--accent-soft);color:var(--accent);border-color:#0000}.stackcols{align-items:flex-end;gap:3px;height:150px;display:flex}.stackcols .col{flex-direction:column-reverse;flex:1;gap:2px;min-width:3px;height:100%;display:flex}.stackcols .seg{width:100%;transition:filter var(--dur) var(--ease);cursor:default;border:0;padding:0}.stackcols .seg:hover,.stackcols .seg:focus-visible{filter:brightness(1.2)}.stackcols .col .seg:last-child{border-radius:3px 3px 0 0}.wide .appbar-inner,.wide .container,.wide .appfooter{max-width:1280px}.grid2{grid-template-columns:3fr 2fr;align-items:start;gap:14px;display:grid}.grid2e{grid-template-columns:1fr 1fr;align-items:start;gap:14px;display:grid}.grid3e{grid-template-columns:1fr 1fr 1fr;align-items:start;gap:14px;display:grid}@media (width<=900px){.grid2,.grid2e,.grid3e{grid-template-columns:1fr}}.grid2>.card,.grid2e>.card,.grid3e>.card{margin-top:0}.filterbar{flex-wrap:wrap;align-items:end;gap:10px;margin-bottom:12px;display:flex}.filterbar .f{flex-direction:column;gap:5px;display:flex}.select{border:1px solid var(--border);background:var(--bg);height:36px;color:var(--text);font:400 .87rem/1 var(--font-sans);appearance:none;cursor:pointer;background-image:linear-gradient(45deg, transparent 50%, var(--faint) 50%), linear-gradient(135deg, var(--faint) 50%, transparent 50%);background-position:calc(100% - 16px) 55%,calc(100% - 11px) 55%;background-repeat:no-repeat;background-size:5px 5px;border-radius:9px;padding:0 30px 0 11px}.toggle{cursor:pointer;color:var(--muted);-webkit-user-select:none;user-select:none;align-items:center;gap:8px;font-size:.84rem;display:inline-flex}.toggle input{accent-color:var(--accent);width:15px;height:15px}.kpi-help{cursor:help;border-bottom:1px dotted var(--faint)}.banner-warn{background:var(--warn-soft);color:var(--warn);border:1px solid #0000;border-radius:10px;margin:0 0 14px;padding:11px 14px;font-size:.87rem}.codeblock{background:var(--bg);border:1px solid var(--border);font:400 .8rem/1.55 var(--font-mono);white-space:pre-wrap;word-break:break-word;border-radius:10px;max-height:340px;margin:0;padding:12px 14px;overflow:auto}details.xp{border:1px solid var(--border);background:var(--surface);border-radius:10px}details.xp+details.xp{margin-top:8px}details.xp>summary{cursor:pointer;font:550 .86rem/1.4 var(--font-sans);color:var(--text);align-items:center;gap:8px;padding:10px 14px;list-style:none;display:flex}details.xp>summary:before{content:"▸";color:var(--faint);transition:transform var(--dur) var(--ease);font-size:.7rem}details.xp[open]>summary:before{transform:rotate(90deg)}details.xp>.xp-body{padding:4px 14px 14px}.hstack{gap:2px;height:14px;display:flex}.hstack>span{min-width:3px;height:100%;display:block}.hstack>span:first-child{border-radius:4px 0 0 4px}.hstack>span:last-child{border-radius:0 4px 4px 0}.hstack>span:only-child{border-radius:4px}.row-click{cursor:pointer}.row-click.sel td{background:var(--accent-soft)!important}.catgrid{grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:12px;display:grid}a.catcard{border:1px solid var(--border);background:var(--surface);color:inherit;border-radius:12px;flex-direction:column;gap:8px;padding:14px 16px;text-decoration:none;transition:border-color .15s,transform .15s,box-shadow .15s;display:flex}a.catcard:hover{border-color:var(--accent);text-decoration:none;transform:translateY(-2px);box-shadow:0 8px 24px #0000002e}.catcard .name{letter-spacing:.01em;font-size:.95rem;font-weight:600}.catcard .desc{color:var(--muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;min-height:2.4em;font-size:.84rem;line-height:1.45;display:-webkit-box;overflow:hidden}.catcard .meta{color:var(--faint);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-top:auto;font-size:.78rem;display:flex}.catcard .titlerow{align-items:center;gap:10px;min-width:0;display:flex}.catcard .titlerow .name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.icontile{background:var(--accent-soft);border:1px solid var(--border);border-radius:11px;flex:none;place-items:center;width:40px;height:40px;font-size:21px;line-height:1;display:grid}.icontile.ok{background:var(--ok-soft)}.icontile.lg{border-radius:14px;width:52px;height:52px;font-size:28px}th.th-sort{cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}th.th-sort:hover{color:var(--text)}th.th-sort .sort-arrow{opacity:0;margin-left:5px;font-size:.58rem;transition:opacity .12s;display:inline-block}th.th-sort:hover .sort-arrow{opacity:.55}th.th-sort.on{color:var(--accent)}th.th-sort.on .sort-arrow{opacity:1}.tablecard{padding:0;overflow:hidden}.tablecard .tablecard-head{padding:16px 18px 12px}.tablecard .table-scroll{border:0;border-top:1px solid var(--border);border-radius:0;max-height:440px;margin:0}.roomy table{font-size:.9rem}.roomy tbody td{padding:11px 14px}
