:root{--bg: #0f1419;--panel: #1a2029;--panel-2: #222a35;--border: #2e3947;--text: #e6e9ee;--muted: #93a1b3;--primary: #3b82f6;--primary-d: #2563eb;--danger: #ef4444;--ok: #22c55e;--warn: #f59e0b;--radius: 8px}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font:14px/1.5 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--text)}a{color:var(--primary);text-decoration:none}.muted{color:var(--muted)}.center{min-height:100%;display:flex;align-items:center;justify-content:center;padding:24px}.app{min-height:100%;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;gap:20px;padding:0 20px;height:56px;background:var(--panel);border-bottom:1px solid var(--border)}.brand{font-weight:700}.nav{display:flex;gap:4px}.nav a{color:var(--muted);padding:6px 12px;border-radius:var(--radius)}.nav a.active{color:var(--text);background:var(--panel-2)}.spacer{flex:1}.userbox{display:flex;align-items:center;gap:12px}.content{padding:24px;max-width:1100px;width:100%;margin:0 auto}.card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:20px}.login{width:340px;display:flex;flex-direction:column;gap:14px}.login h1{margin:0;font-size:20px}.page-head{display:flex;align-items:center;gap:16px;margin-bottom:20px}.page-head h1{margin:0;font-size:20px}.page-head .spacer{flex:1}label{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--muted)}input,select,textarea{background:var(--panel-2);border:1px solid var(--border);color:var(--text);border-radius:6px;padding:9px 10px;font:inherit;width:100%}input:focus,select:focus,textarea:focus{outline:2px solid var(--primary);border-color:transparent}textarea{resize:vertical;min-height:64px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.btn{border:1px solid var(--border);background:var(--panel-2);color:var(--text);padding:8px 14px;border-radius:6px;cursor:pointer;font:inherit}.btn:hover{border-color:var(--muted)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:var(--primary);border-color:var(--primary-d);color:#fff}.btn.primary:hover{background:var(--primary-d)}.btn.ghost{background:transparent}.btn.danger{color:var(--danger);border-color:#5b2b2b}.btn.sm{padding:5px 9px;font-size:13px}.row-actions{display:flex;gap:6px}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--border)}th{color:var(--muted);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em}tr:hover td{background:#ffffff05}code,.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px}.badge.ok{background:#22c55e26;color:var(--ok)}.badge.off{background:#94a3b326;color:var(--muted)}.badge.all{background:#3b82f626;color:var(--primary)}.chips{display:flex;flex-wrap:wrap;gap:4px}.chip{background:var(--panel-2);border:1px solid var(--border);border-radius:999px;padding:2px 8px;font-size:12px}.alert{padding:10px 12px;border-radius:6px;font-size:13px}.alert.error{background:#ef44441f;color:#fca5a5;border:1px solid #5b2b2b}.alert.warn{background:#f59e0b1f;color:#fcd34d;border:1px solid #5b4420}.alert.ok{background:#22c55e1f;color:#86efac;border:1px solid #2b5b3b}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;padding:24px;z-index:50}.modal{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);width:520px;max-width:100%;max-height:90vh;overflow:auto}.modal header{padding:16px 20px;border-bottom:1px solid var(--border);font-weight:700}.modal .body{padding:20px;display:flex;flex-direction:column;gap:14px}.modal footer{padding:14px 20px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:8px}.keybox{display:flex;gap:8px;align-items:center}.keybox code{flex:1;padding:10px;background:#0b0e12;border:1px solid var(--border);border-radius:6px;word-break:break-all}.checkline{flex-direction:row;align-items:center;gap:8px;color:var(--text)}.checkline input{width:auto}.help{font-size:12px;color:var(--muted)}.empty{text-align:center;color:var(--muted);padding:40px}
