:root{--bg: #f5f6f8;--panel: #ffffff;--panel-2: #fafbfc;--fg: #1a1d21;--muted: #6b7280;--line: #e2e5ea;--line-strong: #cbd1d9;--accent: #2563eb;--accent-fg: #ffffff;--ok: #16a34a;--warn: #d97706;--bad: #dc2626;--shadow: 0 1px 2px rgba(16, 24, 40, .06), 0 1px 3px rgba(16, 24, 40, .1)}@media(prefers-color-scheme:dark){:root{--bg: #15171c;--panel: #1d2026;--panel-2: #23262d;--fg: #e7e9ec;--muted: #9aa3af;--line: #2b2f37;--line-strong: #3a3f49;--accent: #60a5fa;--accent-fg: #0b1220;--ok: #4ade80;--warn: #fbbf24;--bad: #f87171;--shadow: none}}*{box-sizing:border-box}html,body,#app{height:100%}body{margin:0;background:var(--bg);color:var(--fg);font:14px/1.6 -apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans CJK SC,PingFang SC,Microsoft YaHei,sans-serif;-webkit-font-smoothing:antialiased}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.shell{display:flex;min-height:100%}.sidebar{width:216px;flex:0 0 216px;background:var(--panel);border-right:1px solid var(--line);display:flex;flex-direction:column;padding:18px 12px;gap:4px}.brand{display:flex;align-items:baseline;gap:8px;padding:0 10px 16px}.brand b{font-size:17px;letter-spacing:.3px}.brand small{color:var(--muted);font-size:11.5px}.nav{display:flex;flex-direction:column;gap:2px}.nav a{display:flex;align-items:center;justify-content:space-between;padding:8px 10px;border-radius:7px;color:var(--fg);font-size:13.5px}.nav a:hover{background:var(--panel-2);text-decoration:none}.nav a.on{background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent);font-weight:600}.nav .count{background:var(--warn);color:#fff;font-size:11px;font-weight:700;border-radius:999px;padding:1px 7px;min-width:20px;text-align:center}.sidebar-foot{margin-top:auto;padding:12px 10px 0;border-top:1px solid var(--line)}.sidebar-foot .who{font-size:12.5px;color:var(--muted);margin-bottom:8px;word-break:break-all}.main{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 24px;border-bottom:1px solid var(--line);background:var(--panel)}.topbar h1{font-size:17px;margin:0;font-weight:600}.topbar .right{display:flex;align-items:center;gap:10px}.content{padding:24px;max-width:1180px;width:100%}@media(max-width:760px){.shell{flex-direction:column}.sidebar{width:auto;flex:none;border-right:0;border-bottom:1px solid var(--line)}.nav{flex-direction:row;flex-wrap:wrap}.sidebar-foot{margin-top:12px}.content{padding:16px}}.card{background:var(--panel);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);margin-bottom:18px}.card>header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 18px;border-bottom:1px solid var(--line)}.card>header h2{font-size:14.5px;margin:0;font-weight:600}.card>header .hint{color:var(--muted);font-size:12.5px;font-weight:400}.card .body{padding:18px}.card .body.tight{padding:0}.grid{display:grid;gap:14px}.grid.k3{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}.grid.k2{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.tile{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:16px 18px;box-shadow:var(--shadow)}.tile .label{color:var(--muted);font-size:12.5px;margin-bottom:6px}.tile .value{font-size:26px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.1}.tile .sub{color:var(--muted);font-size:12px;margin-top:5px}table{width:100%;border-collapse:collapse;font-size:13.5px}thead th{text-align:left;font-weight:600;color:var(--muted);font-size:12.5px;padding:10px 14px;border-bottom:1px solid var(--line);white-space:nowrap}tbody td{padding:11px 14px;border-bottom:1px solid var(--line);vertical-align:middle}tbody tr:last-child td{border-bottom:0}tbody tr:hover{background:var(--panel-2)}.num{font-variant-numeric:tabular-nums}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12.5px}.nowrap{white-space:nowrap}.table-wrap{overflow-x:auto}button,.btn{font:inherit;cursor:pointer;border-radius:7px;padding:8px 14px;border:1px solid transparent;background:var(--accent);color:var(--accent-fg);font-weight:600;font-size:13.5px;white-space:nowrap}button.ghost{background:transparent;border-color:var(--line-strong);color:var(--fg);font-weight:500}button.ghost:hover{background:var(--panel-2)}button.danger{background:transparent;border-color:var(--bad);color:var(--bad);font-weight:500}button.danger:hover{background:color-mix(in srgb,var(--bad) 10%,transparent)}button.sm{padding:5px 10px;font-size:12.5px}button:disabled{opacity:.5;cursor:default}.actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}input,select,textarea{font:inherit;width:100%;padding:8px 11px;border-radius:7px;border:1px solid var(--line-strong);background:var(--panel-2);color:var(--fg)}input:focus,select:focus,textarea:focus{outline:2px solid color-mix(in srgb,var(--accent) 40%,transparent);outline-offset:-1px}textarea{min-height:76px;resize:vertical}.field{margin-bottom:14px}.field>label{display:block;font-size:13px;margin-bottom:5px;font-weight:500}.field .help{color:var(--muted);font-size:12px;margin-top:5px}.check{display:flex;gap:9px;align-items:flex-start;margin-bottom:12px}.check input{width:auto;margin:3px 0 0;flex:0 0 auto}.check .txt b{display:block;font-weight:600;font-size:13.5px}.check .txt span{color:var(--muted);font-size:12.5px}.pill{display:inline-block;padding:2px 9px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap}.pill.ok{background:color-mix(in srgb,var(--ok) 16%,transparent);color:var(--ok)}.pill.warn{background:color-mix(in srgb,var(--warn) 18%,transparent);color:var(--warn)}.pill.bad{background:color-mix(in srgb,var(--bad) 16%,transparent);color:var(--bad)}.pill.muted{background:color-mix(in srgb,var(--muted) 16%,transparent);color:var(--muted)}.pill.info{background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--accent)}.dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:6px}.dot.on{background:var(--ok)}.dot.off{background:var(--muted)}.note{padding:11px 14px;border-radius:8px;font-size:13px;border:1px solid var(--line);background:var(--panel-2);margin-bottom:14px}.note.err{border-color:color-mix(in srgb,var(--bad) 40%,var(--line));background:color-mix(in srgb,var(--bad) 8%,transparent);color:var(--bad)}.note.ok{border-color:color-mix(in srgb,var(--ok) 40%,var(--line));background:color-mix(in srgb,var(--ok) 8%,transparent);color:var(--ok)}.note.warn{border-color:color-mix(in srgb,var(--warn) 40%,var(--line));background:color-mix(in srgb,var(--warn) 8%,transparent);color:var(--warn)}.empty{padding:36px 18px;text-align:center;color:var(--muted);font-size:13.5px}.bar{height:6px;border-radius:999px;background:var(--line);overflow:hidden;margin-top:7px}.bar>i{display:block;height:100%;background:var(--accent);border-radius:999px}.bar>i.warn{background:var(--warn)}.bar>i.bad{background:var(--bad)}.code{background:var(--panel-2);border:1px solid var(--line);border-radius:7px;padding:11px 13px;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12.5px;white-space:pre-wrap;word-break:break-all}dl.kv{margin:0}dl.kv>div{display:flex;justify-content:space-between;gap:16px;padding:7px 0;border-bottom:1px solid var(--line)}dl.kv>div:last-child{border-bottom:0}dl.kv dt{color:var(--muted);flex:0 0 auto}dl.kv dd{margin:0;text-align:right;word-break:break-all}.modal-bg{position:fixed;top:0;right:0;bottom:0;left:0;background:#090c128c;display:flex;align-items:flex-start;justify-content:center;padding:40px 16px;overflow-y:auto;z-index:50}.modal{background:var(--panel);border-radius:11px;border:1px solid var(--line);width:100%;max-width:560px;box-shadow:0 12px 40px #090c124d}.modal>header{padding:16px 20px;border-bottom:1px solid var(--line)}.modal>header h2{margin:0;font-size:15.5px}.modal>.body{padding:20px}.modal>footer{padding:14px 20px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:8px}.auth{min-height:100%;display:flex;align-items:center;justify-content:center;padding:24px}.auth .box{width:100%;max-width:380px}.auth .box h1{font-size:20px;margin:0 0 4px}.auth .box p.sub{color:var(--muted);margin:0 0 22px;font-size:13px}.auth .card{margin:0}.spin{color:var(--muted);font-size:13px;padding:24px;text-align:center}.join-grid{display:flex;gap:18px;align-items:flex-start;margin-top:10px;flex-wrap:wrap}.join-text{flex:1 1 320px;min-width:0}.qr{margin:0;flex:0 0 auto;text-align:center}.qr-img{background:#fff;padding:8px;border-radius:8px;border:1px solid var(--line);line-height:0}.qr-img :deep(svg),.qr-img svg{display:block;width:168px;height:168px}.qr figcaption{color:var(--muted);font-size:12px;margin-top:7px}
