:root{--bg:#0b0f14;--bg2:#11161d;--bg3:#1a222d;--border:#26303d;--fg:#dbe4ee;--fg-dim:#8b98a8;--accent:#4da3ff;--accent-dim:#2a5b8f;--ok:#3ecf8e;--warn:#f5b83d;--bad:#ef5f6b;--mono:ui-monospace, "Cascadia Code", "SF Mono", Consolas, monospace}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--fg);margin:0;padding:0;font:14px/1.5 -apple-system,Segoe UI,Roboto,sans-serif}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.shell{min-height:100vh;display:flex}.sidebar{background:var(--bg2);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;gap:4px;width:210px;padding:18px 12px;display:flex}.sidebar .brand{color:var(--fg);letter-spacing:.3px;padding:6px 10px 16px;font-size:15px;font-weight:700}.sidebar .brand span{color:var(--accent)}.sidebar a{color:var(--fg-dim);border-radius:6px;padding:8px 10px;display:block}.sidebar a:hover,.sidebar a.active{background:var(--bg3);color:var(--fg);text-decoration:none}.sidebar .spacer{flex:1}.sidebar .user{color:var(--fg-dim);border-top:1px solid var(--border);padding:8px 10px;font-size:12px}.main{flex:1;max-width:1100px;padding:24px 28px}h1{margin:0 0 18px;font-size:20px;font-weight:600}h2{color:var(--fg-dim);text-transform:uppercase;letter-spacing:.6px;margin:24px 0 10px;font-size:15px;font-weight:600}.card{background:var(--bg2);border:1px solid var(--border);border-radius:10px;margin-bottom:14px;padding:16px 18px}.grid{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px;display:grid}.stat .num{font-size:26px;font-weight:700;font-family:var(--mono)}.stat .lbl{color:var(--fg-dim);text-transform:uppercase;letter-spacing:.6px;font-size:12px}table{border-collapse:collapse;width:100%}th{text-align:left;text-transform:uppercase;letter-spacing:.6px;color:var(--fg-dim);border-bottom:1px solid var(--border);padding:6px 10px;font-size:11px}td{border-bottom:1px solid var(--border);vertical-align:middle;padding:9px 10px}tr:last-child td{border-bottom:none}.mono{font-family:var(--mono);font-size:12.5px}.dim{color:var(--fg-dim)}.badge{border-radius:20px;padding:2px 8px;font-size:11px;font-weight:600;display:inline-block}.badge.ok{color:var(--ok);background:#3ecf8e26}.badge.warn{color:var(--warn);background:#f5b83d26}.badge.bad{color:var(--bad);background:#ef5f6b26}.badge.dim{background:var(--bg3);color:var(--fg-dim)}.badge.acc{color:var(--accent);background:#4da3ff26}button{background:var(--bg3);color:var(--fg);border:1px solid var(--border);font:inherit;cursor:pointer;border-radius:6px;padding:7px 14px;font-size:13px}button:hover{border-color:var(--accent-dim)}button.primary{background:var(--accent);border-color:var(--accent);color:#04121f;font-weight:600}button.primary:hover{filter:brightness(1.1)}button.danger{color:var(--bad)}button.small{padding:3px 9px;font-size:12px}button:disabled{opacity:.5;cursor:default}input,select,textarea{background:var(--bg);border:1px solid var(--border);color:var(--fg);font:inherit;border-radius:6px;width:100%;padding:8px 10px;font-size:13px}input:focus,select:focus{border-color:var(--accent);outline:none}label{color:var(--fg-dim);margin:10px 0 4px;font-size:12px;display:block}label.chk{align-items:center;gap:8px;margin-top:12px;display:flex}label.chk input{width:auto}.row{gap:10px;display:flex}.row>*{flex:1}.err{color:var(--bad);background:#ef5f6b1f;border:1px solid #ef5f6b66;border-radius:6px;margin:10px 0;padding:9px 12px;font-size:13px}.notice{border:1px solid var(--accent-dim);color:var(--fg);background:#4da3ff1a;border-radius:6px;margin:10px 0;padding:9px 12px;font-size:13px}pre.cfg{background:var(--bg);border:1px solid var(--border);font-family:var(--mono);white-space:pre;border-radius:8px;margin:10px 0;padding:12px 14px;font-size:12px;overflow-x:auto}.modal-bg{z-index:10;background:#0009;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--bg2);border:1px solid var(--border);border-radius:12px;width:520px;max-width:92vw;max-height:86vh;padding:22px;overflow-y:auto}.modal h3{margin:0 0 14px;font-size:16px}.login-wrap{justify-content:center;align-items:center;min-height:100vh;display:flex}.login-box{width:340px}.login-box h1{text-align:center}.login-box .brand{text-align:center;margin-bottom:4px;font-size:22px;font-weight:700}.login-box .brand span{color:var(--accent)}
