:root{--bg:#fafafa;--surface:#fff;--subtle:#f4f4f5;--border:#e4e4e7;--border-strong:#d4d4d8;--text:#18181b;--text-2:#52525b;--text-3:#71717a;--accent:#0e7490;--accent-hover:#155e75;--accent-soft:#ecfeff;--on-accent:#fff;--ok:#15803d;--ok-soft:#f0fdf4;--warn:#b45309;--warn-soft:#fffbeb;--err:#b91c1c;--err-soft:#fef2f2;--muted-soft:#f4f4f5;--c1:#0e7490;--c2:#7c3aed;--c3:#c2410c;--c4:#15803d;--c5:#be185d;--c6:#71717a;--radius:6px;--radius-lg:8px;--font:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei","Noto Sans CJK SC",sans-serif;--mono:ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace;--buncss-light:initial;--buncss-dark: ;color-scheme:light}:root[data-theme=dark]{--bg:#0f0f11;--surface:#17171a;--subtle:#1f1f23;--border:#2a2a2f;--border-strong:#3a3a40;--text:#f4f4f5;--text-2:#a1a1aa;--text-3:#8b8b94;--accent:#22d3ee;--accent-hover:#67e8f9;--accent-soft:#0c2a30;--on-accent:#082f35;--ok:#4ade80;--ok-soft:#0f2a18;--warn:#fbbf24;--warn-soft:#2d2208;--err:#f87171;--err-soft:#2f1111;--muted-soft:#1f1f23;--c1:#22d3ee;--c2:#a78bfa;--c3:#fb923c;--c4:#4ade80;--c5:#f472b6;--c6:#a1a1aa;--buncss-light: ;--buncss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{height:100%;margin:0}body{font:14px/1.5 var(--font);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button,input,select,textarea{font:inherit;color:inherit}.num{font-variant-numeric:tabular-nums}.mono{font-family:var(--mono);font-size:13px}.muted{color:var(--text-3)}.small{font-size:12px}.neg{color:var(--err)}:focus-visible{outline:2px solid var(--accent);outline-offset:1px}@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}.shell{display:grid;grid-template-columns:240px 1fr;min-height:100vh}.shell.collapsed{grid-template-columns:56px 1fr}.side{border-right:1px solid var(--border);background:var(--surface);display:flex;position:sticky;flex-direction:column;height:100vh;top:0}.brand{display:flex;letter-spacing:.02em;border-bottom:1px solid var(--border);align-items: center;height:56px;padding:0 20px;font-size:15px;font-weight:600}.brand .tag{color:var(--text-3);margin-left:8px;font-size:12px;font-weight:400}.nav{display:flex;overflow-y:auto;flex-direction:column;flex:1;gap:2px;padding:12px 8px}.nav a,.nav-foot a{display:block;border-radius:var(--radius);color:var(--text-2);padding:7px 12px}.nav a:hover,.nav-foot a:hover{background:var(--subtle);text-decoration:none;color:var(--text)}.nav a.on,.nav-foot a.on{background:var(--subtle);color:var(--text);font-weight:600}.nav-foot a{font-size:13px}.nav-foot{border-top:1px solid var(--border);display:flex;flex-direction:column;gap:2px;padding:12px 8px}.collapsed .nav a,.collapsed .nav-foot a,.collapsed .brand .tag{font-size:0}.collapsed .nav a:first-letter{font-size:14px}.main{display:flex;flex-direction:column;min-width:0}.top{display:flex;border-bottom:1px solid var(--border);background:var(--surface);position:sticky;z-index:5;align-items: center;gap:12px;height:56px;padding:0 24px;top:0}.top h1{flex:1;margin:0;font-size:20px;font-weight:600}.content{width:100%;max-width:1440px;padding:24px}.content.wide{max-width:none}.progress{position:fixed;background:var(--accent);transform-origin:left;animation:1.2s ease-in-out infinite prog;z-index:50;height:2px;top:0;left:0;right:0}@keyframes prog{0%{transform:scaleX(0)}60%{transform:scaleX(.8)}to{transform:scaleX(1);opacity:0}}@media (max-width:1023px){.shell{grid-template-columns:56px 1fr}.nav a,.nav-foot a,.brand .tag{font-size:0}.nav a:first-letter,.nav-foot a:first-letter{font-size:14px}}@media (max-width:767px){.shell{grid-template-columns:1fr}.side{position:static;border-right:0;border-bottom:1px solid var(--border);flex-flow:wrap;height:auto}.brand{border:0}.nav{flex-flow:wrap;padding:4px 8px}.nav a,.nav-foot a{padding:4px 8px;font-size:13px!important}.nav-foot{border:0;flex-direction:row}.content{padding:16px}.top{position:static;padding:0 16px}}.section{margin-bottom:32px}.section>h2,.h2{display:flex;align-items: center;gap:12px;margin:0 0 12px;font-size:15px;font-weight:600}.section>h2 .spacer,.row .spacer{flex:1}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.panel.pad{padding:16px}.grid{display:grid;gap:16px}.g4{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.g2{grid-template-columns:repeat(auto-fit,minmax(380px,1fr))}.g3{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.g6{grid-template-columns:repeat(auto-fit,minmax(130px,1fr))}.row{display:flex;flex-wrap:wrap;align-items: center;gap:8px}.stack{display:flex;flex-direction:column;gap:12px}dl.kv{display:grid;grid-template-columns:140px 1fr;gap:8px 16px;margin:0}dl.kv dt{color:var(--text-3)}dl.kv dd{overflow-wrap:anywhere;min-width:0;margin:0}.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);display:block;color:inherit;padding:16px}a.stat:hover{border-color:var(--border-strong);text-decoration:none}.stat .label{color:var(--text-3);font-size:12px}.stat .value{font-variant-numeric:tabular-nums;margin-top:4px;font-size:28px;font-weight:600;line-height:1.2}.stat .sub{color:var(--text-3);margin-top:6px;font-size:12px}.up{color:var(--ok)}.down{color:var(--err)}.btn{display:inline-flex;border-radius:var(--radius);border:1px solid var(--border-strong);background:var(--surface);cursor:pointer;white-space:nowrap;align-items: center;gap:6px;height:32px;padding:0 12px}.btn:hover{background:var(--subtle)}.btn:active{transform:translateY(1px)}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.btn.primary:hover{background:var(--accent-hover)}.btn.danger{color:var(--err)}.btn.ghost{background:0 0;border-color:#0000}.btn.sm{height:26px;padding:0 8px;font-size:12px}.btn[disabled]{opacity:.5;cursor:not-allowed}input.in,select.in,textarea.in{border-radius:var(--radius);border:1px solid var(--border-strong);background:var(--surface);min-width:0;height:32px;padding:0 10px}textarea.in{height:auto;padding:8px 10px}input.in:focus,select.in:focus,textarea.in:focus{outline:none;border-color:var(--accent)}label.field{display:flex;color:var(--text-2);flex-direction:column;gap:4px;font-size:13px}label.field .hint{color:var(--text-3);font-size:12px}label.check{display:inline-flex;align-items: center;gap:6px}.form{display:flex;flex-direction:column;gap:14px}.err-text{color:var(--err);font-size:13px}.badge{display:inline-block;background:var(--muted-soft);color:var(--text-2);white-space:nowrap;border-radius:4px;padding:1px 8px;font-size:12px;line-height:20px}.badge.ok{background:var(--ok-soft);color:var(--ok)}.badge.warn{background:var(--warn-soft);color:var(--warn)}.badge.err{background:var(--err-soft);color:var(--err)}.badge.accent{background:var(--accent-soft);color:var(--accent)}.tbl-wrap{overflow-x:auto}table.tbl{border-collapse:collapse;width:100%}.tbl th,.tbl td{text-align:left;border-bottom:1px solid var(--border);white-space:nowrap;height:40px;padding:0 12px}.tbl th{color:var(--text-3);position:sticky;background:var(--surface);z-index:1;user-select:none;font-size:12px;font-weight:500;top:0}.tbl th.sortable{cursor:pointer}.tbl th.sortable:hover{color:var(--text)}.tbl td.r,.tbl th.r{text-align:right;font-variant-numeric:tabular-nums}.tbl tbody tr:last-child td{border-bottom:0}.tbl tbody tr.click{cursor:pointer}.tbl tbody tr.click:hover,.tbl tbody tr.sel{background:var(--subtle)}.tbl tbody tr.bad td:first-child{box-shadow:inset 2px 0 var(--err)}.tbl td:first-child,.tbl th:first-child{position:sticky;background:inherit;left:0}.tbl tbody tr td:first-child{background:var(--surface)}.tbl tbody tr.click:hover td:first-child,.tbl tbody tr.sel td:first-child{background:var(--subtle)}.tbl-foot{display:flex;border-top:1px solid var(--border);color:var(--text-3);flex-wrap:wrap;align-items: center;gap:8px;padding:8px 12px;font-size:12px}.tbl-foot .spacer{flex:1}.empty{text-align:center;color:var(--text-3);padding:32px 16px}.empty .btn{margin-top:12px}.skel{background:var(--subtle);border-radius:4px;height:14px}.cols-menu{position:absolute;z-index:20;display:flex;flex-direction:column;gap:4px;min-width:160px;padding:8px 12px;top:36px;right:0}.overlay{position:fixed;z-index:30;background:#00000052;inset:0}.drawer{position:fixed;background:var(--surface);border-left:1px solid var(--border);z-index:31;display:flex;animation:.15s ease-out slide;flex-direction:column;width:min(560px,100vw);top:0;bottom:0;right:0}@keyframes slide{0%{transform:translate(24px);opacity:.6}to{transform:none;opacity:1}}.drawer-head{display:flex;border-bottom:1px solid var(--border);align-items: center;gap:8px;height:56px;padding:0 16px}.drawer-head h3{flex:1;margin:0;font-size:15px}.drawer-body{overflow-y:auto;flex:1;padding:16px}.modal{position:fixed;overflow-y:auto;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);z-index:31;width:min(480px,100vw - 32px);max-height:76vh;top:12vh;left:50%;transform:translate(-50%)}.modal.lg{width:min(720px,100vw - 32px)}.modal-head{padding:16px 20px 0;font-size:15px;font-weight:600}.modal-body{padding:16px 20px}.modal-foot{display:flex;justify-content:flex-end;gap:8px;padding:0 20px 16px}.toasts{position:fixed;display:flex;z-index:60;flex-direction:column;gap:8px;bottom:16px;right:16px}.toast{background:var(--text);color:var(--bg);border-radius:var(--radius);max-width:360px;padding:8px 14px;font-size:13px}.toast.err{background:var(--err);color:#fff}.callout{border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:var(--radius);background:var(--surface);padding:12px 16px}.callout.warn{border-left-color:var(--warn)}.callout.err{border-left-color:var(--err)}pre.code{background:var(--subtle);border:1px solid var(--border);border-radius:var(--radius);overflow-x:auto;font:13px/1.6 var(--mono);white-space:pre;margin:0;padding:12px 14px}.code-wrap{position:relative}.code-wrap .btn{position:absolute;top:8px;right:8px}.secret{font-family:var(--mono);background:var(--subtle);border:1px solid var(--border);border-radius:var(--radius);overflow-wrap:anywhere;padding:10px 12px;font-size:13px}.tabs{display:flex;border-bottom:1px solid var(--border);flex-wrap:wrap;gap:4px;margin-bottom:16px}.tabs button{cursor:pointer;color:var(--text-2);background:0 0;border:0;border-bottom:2px solid #0000;margin-bottom:-1px;padding:8px 12px}.tabs button.on{color:var(--text);border-bottom-color:var(--accent);font-weight:600}.seg{display:inline-flex;border:1px solid var(--border-strong);border-radius:var(--radius);overflow:hidden}.seg button{background:var(--surface);cursor:pointer;color:var(--text-2);border:0;border-right:1px solid var(--border);height:30px;padding:0 10px;font-size:13px;font-weight:400}.seg button:last-child{border-right:0}.seg button.on{background:var(--subtle);color:var(--text);font-weight:600}.login{display:flex;justify-content:center;align-items: center;min-height:100vh;padding:16px}.login-box{width:360px;max-width:100%}.login-box .brand{border:0;height:auto;margin-bottom:24px;padding:0;font-size:20px}.login-foot{color:var(--text-3);text-align:center;margin-top:16px;font-size:12px}.chart{position:relative;min-height:220px}.chart .u-legend{color:var(--text-2);font-size:12px}.chart .u-legend .u-marker{border-radius:2px}.chart .u-legend th{font-weight:400}.chart-empty{display:flex;color:var(--text-3);justify-content:center;align-items: center;height:220px}.bar-cell{display:inline-block;background:var(--accent);vertical-align:middle;opacity:.7;border-radius:3px;height:6px;margin-right:8px}.diff{font:12px/1.5 var(--mono);white-space:pre-wrap;margin:0}.meter{display:inline-block;background:var(--subtle);overflow:hidden;border-radius:3px;flex:none;width:90px;height:6px}.meter>span{display:block;background:var(--accent);height:100%}.meter.warn>span{background:var(--warn)}.meter.err>span{background:var(--err)}.meter.ok>span{background:var(--ok)}.meter.wide{display:block;width:100%;margin:8px 0 6px}.value.warn{color:var(--warn)}.value .of{color:var(--text-3);font-size:14px;font-weight:400}.win-card .row{flex-wrap:nowrap}.uplot,.uplot *,.uplot *:before,.uplot *:after{box-sizing:border-box}.uplot{width:min-content;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}.u-title{text-align:center;font-size:18px;font-weight:700}.u-wrap{position:relative;user-select:none}.u-over,.u-under{position:absolute}.u-under{overflow:hidden}.uplot canvas{display:block;position:relative;width:100%;height:100%}.u-axis{position:absolute}.u-legend{text-align:center;margin:auto;font-size:14px}.u-inline{display:block}.u-inline *{display:inline-block}.u-inline tr{margin-right:16px}.u-legend th{font-weight:600}.u-legend th>*{vertical-align:middle;display:inline-block}.u-legend .u-marker{width:1em;height:1em;margin-right:4px;background-clip:padding-box!important}.u-inline.u-live th:after{content:":";vertical-align:middle}.u-inline:not(.u-live) .u-value{display:none}.u-series>*{padding:4px}.u-series th{cursor:pointer}.u-legend .u-off>*{opacity:.3}.u-select{position:absolute;pointer-events:none;background:#00000012}.u-cursor-x,.u-cursor-y{position:absolute;pointer-events:none;will-change:transform;top:0;left:0}.u-hz .u-cursor-x,.u-vt .u-cursor-y{border-right:1px dashed #607d8b;height:100%}.u-hz .u-cursor-y,.u-vt .u-cursor-x{border-bottom:1px dashed #607d8b;width:100%}.u-cursor-pt{position:absolute;pointer-events:none;will-change:transform;border:0 solid;border-radius:50%;top:0;left:0;background-clip:padding-box!important}.u-axis.u-off,.u-select.u-off,.u-cursor-x.u-off,.u-cursor-y.u-off,.u-cursor-pt.u-off{display:none}
