:root{--bg: #0b0f16;--bg-elev: #121824;--bg-elev-2: #18202f;--border: #232d40;--text: #e8edf6;--text-dim: #8b98ad;--accent: #3b82f6;--accent-soft: rgba(59, 130, 246, .14);--ok: #22c55e;--warn: #f59e0b;--danger: #ef4444;--radius: 10px;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font:14px/1.5 Inter,Segoe UI,system-ui,-apple-system,sans-serif;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}.layout{display:grid;grid-template-columns:232px 1fr;min-height:100%}.sidebar{background:var(--bg-elev);border-right:1px solid var(--border);padding:20px 14px;display:flex;flex-direction:column;gap:4px}.brand{font-weight:700;font-size:17px;letter-spacing:.4px;padding:4px 10px 20px}.brand span{color:var(--accent)}.nav-item{padding:9px 12px;border-radius:var(--radius);color:var(--text-dim);font-weight:500;display:flex;align-items:center;gap:10px;transition:background .12s,color .12s}.nav-item:hover{background:var(--bg-elev-2);color:var(--text)}.nav-item.active{background:var(--accent-soft);color:var(--accent)}.sidebar-footer{margin-top:auto;border-top:1px solid var(--border);padding-top:14px}.content{padding:26px 30px 60px;overflow-x:auto}.page-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:22px;flex-wrap:wrap}.page-head h1{margin:0;font-size:22px;font-weight:650}.page-head p{margin:4px 0 0;color:var(--text-dim)}.grid{display:grid;gap:14px}.grid.cols-4{grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}.grid.cols-2{grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}.card{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px}.card h3{margin:0 0 12px;font-size:13px;text-transform:uppercase;letter-spacing:.6px;color:var(--text-dim);font-weight:600}.stat-value{font-size:28px;font-weight:700;line-height:1.1}.stat-label{color:var(--text-dim);font-size:12px;margin-top:6px}.meter{height:6px;border-radius:3px;background:var(--bg-elev-2);margin-top:10px;overflow:hidden}.meter>div{height:100%;background:var(--accent);border-radius:3px}.meter.full>div{background:var(--danger)}.meter.high>div{background:var(--warn)}.table-wrap{border:1px solid var(--border);border-radius:var(--radius);overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:13.5px;min-width:720px}thead th{text-align:left;padding:11px 14px;background:var(--bg-elev-2);color:var(--text-dim);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.5px;white-space:nowrap}tbody td{padding:11px 14px;border-top:1px solid var(--border);vertical-align:middle}tbody tr:hover{background:#ffffff05}.mono{font-family:JetBrains Mono,Consolas,monospace;letter-spacing:1px}.code-cell{font-size:15px;font-weight:600}.badge{display:inline-block;padding:3px 9px;border-radius:999px;font-size:11.5px;font-weight:600;letter-spacing:.3px;border:1px solid transparent}.badge.ok{background:#22c55e24;color:var(--ok)}.badge.warn{background:#f59e0b24;color:var(--warn)}.badge.danger{background:#ef444424;color:var(--danger)}.badge.dim{background:var(--bg-elev-2);color:var(--text-dim)}.dot{width:8px;height:8px;border-radius:50%;display:inline-block;margin-right:7px}.dot.on{background:var(--ok);box-shadow:0 0 0 3px #22c55e29}.dot.off{background:#4b5563}button,.btn{font:inherit;font-weight:550;border:1px solid var(--border);background:var(--bg-elev-2);color:var(--text);padding:8px 14px;border-radius:8px;cursor:pointer;transition:filter .12s,border-color .12s}button:hover:not(:disabled),.btn:hover{filter:brightness(1.18)}button:disabled{opacity:.5;cursor:not-allowed}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.danger{background:transparent;border-color:#ef444480;color:var(--danger)}button.ghost{background:transparent}button.sm{padding:5px 10px;font-size:12.5px}input,select,textarea{font:inherit;background:var(--bg);border:1px solid var(--border);color:var(--text);padding:9px 11px;border-radius:8px;width:100%}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.field label{font-size:12.5px;color:var(--text-dim);font-weight:600}.toolbar{display:flex;gap:10px;margin-bottom:16px;flex-wrap:wrap;align-items:center}.toolbar input,.toolbar select{width:auto;min-width:170px}.row-actions{display:flex;gap:6px;flex-wrap:wrap}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#04070cb8;display:flex;align-items:center;justify-content:center;padding:20px;z-index:50}.modal{background:var(--bg-elev);border:1px solid var(--border);border-radius:14px;width:100%;max-width:460px;max-height:90vh;overflow-y:auto;padding:22px 24px}.modal h2{margin:0 0 4px;font-size:18px}.modal .sub{color:var(--text-dim);margin:0 0 18px;font-size:13px}.modal-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:18px}.login-wrap{display:grid;place-items:center;min-height:100vh;padding:20px}.login-card{width:100%;max-width:380px}.login-card .brand{text-align:center;font-size:22px;padding-bottom:6px}.login-card .sub{text-align:center;color:var(--text-dim);margin:0 0 22px}.alert{padding:11px 14px;border-radius:8px;margin-bottom:14px;font-size:13.5px}.alert.error{background:#ef44441f;color:#fca5a5;border:1px solid rgba(239,68,68,.3)}.alert.ok{background:#22c55e1f;color:#86efac;border:1px solid rgba(34,197,94,.3)}.empty{padding:40px;text-align:center;color:var(--text-dim)}.muted{color:var(--text-dim)}.right{text-align:right}.nowrap{white-space:nowrap}.pagination{display:flex;gap:10px;align-items:center;justify-content:flex-end;margin-top:14px}.code-result{background:var(--bg);border:1px dashed var(--accent);border-radius:10px;padding:18px;text-align:center;margin:8px 0 4px}.code-result .value{font-size:30px;font-weight:700;letter-spacing:5px}@media(max-width:860px){.layout{grid-template-columns:1fr}.sidebar{flex-direction:row;overflow-x:auto;align-items:center;padding:10px}.brand{padding:0 12px 0 6px}.sidebar-footer{margin-top:0;border:none;padding:0 0 0 10px}.content{padding:18px 14px 50px}}
