:root{--bg:#f6f7f9;--panel:#fff;--text:#16181d;--muted:#6b7280;--border:#e3e6ea;--accent:#2f6fed;--accent-soft:#e8efff;--ok:#15803d;--ok-soft:#e7f6ec;--warn:#b45309;--warn-soft:#fdf3e2;--bad:#c62828;--bad-soft:#fdecec;--radius:10px;color:var(--text);background:var(--bg);font-family:Inter,-apple-system,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;font-size:14px}@media (prefers-color-scheme:dark){:root{--bg:#0f1115;--panel:#171a21;--text:#e6e8ec;--muted:#9aa2ae;--border:#2a2f39;--accent:#6c9bff;--accent-soft:#1d2a45;--ok:#4ade80;--ok-soft:#12301f;--warn:#fbbf24;--warn-soft:#362a10;--bad:#f87171;--bad-soft:#3a1717}}*{box-sizing:border-box}body{background:var(--bg);margin:0}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.layout{min-height:100vh;display:flex}.side{border-right:1px solid var(--border);background:var(--panel);flex-shrink:0;width:200px;height:100vh;padding:16px 10px;position:sticky;top:0}.side h1{margin:4px 10px 18px;font-size:15px}.side a{color:var(--text);border-radius:8px;margin-bottom:2px;padding:8px 10px;display:block}.side a.active{background:var(--accent-soft);color:var(--accent);font-weight:600}.side a:hover{background:var(--accent-soft);text-decoration:none}.side .foot{position:absolute;bottom:14px;left:10px;right:10px}.main{flex:1;min-width:0;max-width:1400px;padding:24px 28px 60px}@media (width<=760px){.layout{flex-direction:column}.side{flex-wrap:wrap;gap:4px;width:100%;height:auto;padding:10px 16px;display:flex;position:static}.side h1{width:100%;margin:0 0 6px}.side .foot{position:static}.main{padding:16px}}h2{margin:0 0 16px;font-size:20px}h3{margin:0 0 12px;font-size:15px}.muted{color:var(--muted)}.small{font-size:12px}.row{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.spacer{flex:1}.grid{gap:14px;display:grid}.cards{grid-template-columns:repeat(auto-fill,minmax(170px,1fr))}.two{grid-template-columns:1fr 1fr}@media (width<=900px){.two{grid-template-columns:1fr}}.panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:16px;padding:16px}.stat .n{font-variant-numeric:tabular-nums;font-size:26px;font-weight:700}.stat .l{color:var(--muted);margin-top:2px;font-size:12px}input,select,textarea,button{font:inherit;color:inherit;background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:7px 10px}textarea{resize:vertical;width:100%}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent-soft);border-color:var(--accent)}button{cursor:pointer}button:hover{border-color:var(--accent)}button.primary{background:var(--accent);color:#fff;border-color:var(--accent)}button.primary:disabled{opacity:.6;cursor:wait}button.sm,select.sm{padding:3px 8px;font-size:12px}button.ok{color:var(--ok)}button.bad{color:var(--bad)}button.link{color:var(--accent);background:0 0;border:none;padding:0}table{border-collapse:collapse;width:100%}th,td{text-align:left;border-bottom:1px solid var(--border);vertical-align:top;padding:8px}th{color:var(--muted);white-space:nowrap;background:var(--panel);font-size:12px;font-weight:600;position:sticky;top:0}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}tr:hover td{background:color-mix(in srgb, var(--accent-soft) 40%, transparent)}.tablewrap{overflow-x:auto}.tag{background:var(--accent-soft);color:var(--accent);white-space:nowrap;border-radius:999px;padding:1px 7px;font-size:12px;display:inline-block}.tag.ok{background:var(--ok-soft);color:var(--ok)}.tag.warn{background:var(--warn-soft);color:var(--warn)}.tag.bad{background:var(--bad-soft);color:var(--bad)}.tag.gray{background:var(--bg);color:var(--muted)}.bar{background:var(--bg);border-radius:4px;height:8px;display:flex;overflow:hidden}.bar>span{height:100%;display:block}.field{margin-bottom:10px}.field label{color:var(--muted);margin-bottom:4px;font-size:12px;display:block}.field .row input{flex:1}.error{color:var(--bad)}.center{place-items:center;min-height:100vh;padding:16px;display:grid}.toast{background:var(--text);color:var(--bg);z-index:50;border-radius:8px;padding:10px 14px;position:fixed;bottom:20px;right:20px}.pager{align-items:center;gap:8px;margin-top:12px;display:flex}.ellipsis{text-overflow:ellipsis;white-space:nowrap;max-width:260px;overflow:hidden}.drawer{background:var(--panel);border-left:1px solid var(--border);z-index:40;width:min(520px,100vw);padding:20px;position:fixed;inset:0 0 0 auto;overflow-y:auto;box-shadow:-8px 0 30px #00000026}code,pre{font-family:ui-monospace,Consolas,monospace;font-size:12px}pre{background:var(--bg);border-radius:8px;padding:12px;overflow-x:auto}
