:root{--c-brand: #2457E6;--c-brand-hover: #1E4BC8;--c-brand-active: #193FA8;--c-brand-soft: #EAF0FD;--c-success: #16A34A;--c-warning: #D97706;--c-danger: #DC2626;--c-info: #0891B2;--c-bg: #F5F6FA;--c-surface: #FFFFFF;--c-surface-2: #F9FAFC;--c-border: #E6E8EE;--c-border-strong: #D3D7E0;--c-text: #111827;--c-text-2: #4B5563;--c-text-3: #9CA3AF;--c-sidebar: #0F172A;--c-sidebar-2: #15213A;--c-sidebar-text: rgba(255,255,255,.72);--c-sidebar-active: #FFFFFF;--c-sidebar-line: rgba(255,255,255,.08);--fs-xs: 12px;--lh-xs: 16px;--fs-sm: 13px;--lh-sm: 18px;--fs-md: 14px;--lh-md: 20px;--fs-lg: 16px;--lh-lg: 24px;--fs-xl: 20px;--lh-xl: 28px;--fs-2xl: 28px;--lh-2xl: 36px;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-8: 32px;--sp-10: 40px;--r-sm: 6px;--r-md: 10px;--r-lg: 14px;--r-full: 999px;--sh-1: 0 1px 2px rgba(16,24,40,.06);--sh-2: 0 4px 12px rgba(16,24,40,.08);--sh-3: 0 12px 32px rgba(16,24,40,.14);--dur-fast: .12s;--dur: .2s;--dur-slow: .32s;--ease: cubic-bezier(.2,.8,.2,1);--font-sans: "Inter var", -apple-system, BlinkMacSystemFont, "PingFang HK", "PingFang TC", "Microsoft JhengHei", "Noto Sans CJK TC", "Helvetica Neue", sans-serif;--font-mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;--sidebar-w: 232px;--sidebar-w-collapsed: 64px;--header-h: 56px;--content-max: 1440px;color-scheme:light}:root[data-theme=dark]{--c-brand: #5B8DF6;--c-brand-hover: #7AA2F8;--c-brand-active: #4A7BE0;--c-brand-soft: rgba(91,141,246,.16);--c-success: #34D399;--c-warning: #FBBF24;--c-danger: #F87171;--c-info: #22D3EE;--c-bg: #0E1117;--c-surface: #161B24;--c-surface-2: #1C2230;--c-border: #262D3A;--c-border-strong: #333C4D;--c-text: #E6E8EE;--c-text-2: #A7AEBB;--c-text-3: #6B7280;--c-sidebar: #0B0F17;--c-sidebar-2: #121826;--sh-1: 0 0 0 1px rgba(255,255,255,.04);--sh-2: 0 4px 16px rgba(0,0,0,.4);--sh-3: 0 16px 40px rgba(0,0,0,.55);color-scheme:dark}@media (prefers-reduced-motion: reduce){:root{--dur-fast: 0ms;--dur: 0ms;--dur-slow: 0ms}}@font-face{font-family:Inter var;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-latin-wght-Dx4kXJAl.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--c-bg);color:var(--c-text)}body{font:var(--fs-md)/var(--lh-md) var(--font-sans);-webkit-font-smoothing:antialiased;font-feature-settings:"tnum","cv11"}a{color:var(--c-brand);text-decoration:none}a:hover{color:var(--c-brand-hover)}:focus-visible{outline:2px solid var(--c-brand);outline-offset:2px;border-radius:var(--r-sm)}code,.mono{font-family:var(--font-mono);font-size:var(--fs-xs)}.muted{color:var(--c-text-3)}.text-2{color:var(--c-text-2)}.page{max-width:var(--content-max);margin:0 auto}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--sp-4);margin-bottom:var(--sp-5);flex-wrap:wrap}.page-head h1{font-size:var(--fs-xl);line-height:var(--lh-xl);font-weight:600;margin:0;letter-spacing:-.01em}.page-head .desc{color:var(--c-text-2);font-size:var(--fs-sm);margin:var(--sp-1) 0 0}.toolbar{display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:center;margin-bottom:var(--sp-3)}.toolbar .grow{flex:1}.card{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--r-md);box-shadow:var(--sh-1);padding:var(--sp-5);margin-bottom:var(--sp-4)}.card>h3{font-size:var(--fs-lg);line-height:var(--lh-lg);font-weight:600;margin:0 0 var(--sp-3)}.grid{display:grid;gap:var(--sp-4)}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}@media (max-width: 1100px){.grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 720px){.grid-4,.grid-2{grid-template-columns:1fr}}.stat{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--r-lg);box-shadow:var(--sh-1);padding:var(--sp-5);position:relative;overflow:hidden;transition:box-shadow var(--dur) var(--ease),transform var(--dur) var(--ease)}.stat:hover{box-shadow:var(--sh-2);transform:translateY(-1px)}.stat .label{color:var(--c-text-2);font-size:var(--fs-sm);font-weight:500;display:flex;justify-content:space-between;align-items:center}.stat .value{font-size:32px;line-height:40px;font-weight:600;letter-spacing:-.02em;margin-top:var(--sp-2);font-feature-settings:"tnum"}.stat:before{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:linear-gradient(90deg,var(--c-brand),#7C3AED);opacity:0;transition:opacity var(--dur) var(--ease)}.stat:hover:before{opacity:1}.stat .delta{font-size:var(--fs-xs);border-radius:var(--r-full);padding:1px 8px;font-weight:500}.stat .delta.up{background:var(--c-surface-2);background:color-mix(in srgb,var(--c-success) 12%,transparent);color:var(--c-success)}.stat .delta.down{background:var(--c-surface-2);background:color-mix(in srgb,var(--c-danger) 12%,transparent);color:var(--c-danger)}.stat .delta.flat{background:var(--c-surface-2);color:var(--c-text-3)}.stat .spark{position:absolute;right:var(--sp-4);bottom:var(--sp-3);width:96px;height:32px;opacity:.9}.pill{display:inline-flex;align-items:center;gap:4px;border-radius:var(--r-full);padding:1px 8px;font-size:var(--fs-xs);font-weight:500;background:var(--c-surface-2);color:var(--c-text-2)}.pill.ok{background:var(--c-surface-2);background:color-mix(in srgb,var(--c-success) 12%,transparent);color:var(--c-success)}.pill.warn{background:var(--c-surface-2);background:color-mix(in srgb,var(--c-warning) 14%,transparent);color:var(--c-warning)}.pill.bad{background:var(--c-surface-2);background:color-mix(in srgb,var(--c-danger) 12%,transparent);color:var(--c-danger)}.pill.info{background:var(--c-brand-soft);color:var(--c-brand)}.state{text-align:center;padding:var(--sp-8) var(--sp-4);color:var(--c-text-2)}.state .glyph{width:48px;height:48px;margin:0 auto var(--sp-3);color:var(--c-text-3)}.state h2,.state h4{font-size:var(--fs-lg);font-weight:600;margin:0 0 var(--sp-1);color:var(--c-text)}.state p{margin:0;font-size:var(--fs-sm)}.table-wrap{overflow-x:auto}table.tbl{width:100%;border-collapse:separate;border-spacing:0;font-size:var(--fs-sm)}table.tbl th{text-align:left;color:var(--c-text-2);font-weight:500;background:var(--c-surface-2);padding:10px var(--sp-3);border-bottom:1px solid var(--c-border);white-space:nowrap;position:sticky;top:0}table.tbl td{padding:10px var(--sp-3);border-bottom:1px solid var(--c-border);vertical-align:middle}table.tbl tbody tr:nth-child(2n) td{background:var(--c-surface-2);background:color-mix(in srgb,var(--c-surface-2) 50%,transparent)}table.tbl tbody tr:hover td{background:var(--c-brand-soft);background:color-mix(in srgb,var(--c-brand-soft) 60%,transparent)}table.tbl td.num,table.tbl th.num{text-align:right}.btn,button.btn{display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 14px;border-radius:var(--r-sm);border:1px solid transparent;font:500 var(--fs-md)/1 var(--font-sans);cursor:pointer;transition:background var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease);background:var(--c-brand);color:#fff}.btn:hover{background:var(--c-brand-hover)}.btn:active{background:var(--c-brand-active)}.btn:disabled{opacity:.5;cursor:default}.btn.ghost{background:var(--c-surface);color:var(--c-text);border-color:var(--c-border-strong)}.btn.ghost:hover{background:var(--c-surface-2);border-color:var(--c-brand);color:var(--c-brand)}.btn.sm{height:28px;padding:0 10px;font-size:var(--fs-sm)}.btn.danger{background:var(--c-danger)}.btn.text{background:transparent;color:var(--c-brand);border:0;padding:0 6px;height:auto}.input,input.input,select.input,textarea.input{height:34px;padding:0 var(--sp-3);border:1px solid var(--c-border-strong);border-radius:var(--r-sm);background:var(--c-surface);color:var(--c-text);font:var(--fs-md)/1 var(--font-sans);transition:border-color var(--dur-fast),box-shadow var(--dur-fast)}.input:focus{border-color:var(--c-brand);box-shadow:0 0 0 3px var(--c-brand-soft);outline:none}.input::placeholder{color:var(--c-text-3)}.row{display:flex;gap:var(--sp-2);align-items:center;flex-wrap:wrap;margin-bottom:var(--sp-2)}.err{color:var(--c-danger);font-size:var(--fs-sm)}.skeleton{background:linear-gradient(90deg,var(--c-surface-2) 25%,var(--c-border) 37%,var(--c-surface-2) 63%);background-size:400% 100%;animation:sk 1.4s ease infinite;border-radius:var(--r-sm)}@keyframes sk{0%{background-position:100% 50%}to{background-position:0 50%}}
