:root{--bg:#0a0e12;--bg-elevated:#10161c;--bg-panel:#141b22;--bg-hover:#1a232c;--border:#24303a;--border-strong:#314150;--text:#e8eef3;--text-secondary:#a8b4c0;--muted:#6d7c8a;--accent:#2fb389;--accent-soft:rgba(47,179,137,.14);--accent-ink:#06251b;--warn:#e3a23a;--warn-soft:rgba(227,162,58,.14);--danger:#e25b5b;--danger-soft:rgba(226,91,91,.14);--info:#4d9fd6;--info-soft:rgba(77,159,214,.14);--sidebar-w:260px;--radius:12px;--radius-sm:8px;--shadow:0 18px 50px rgba(0,0,0,.35);--font-sans:"IBM Plex Sans","Segoe UI",sans-serif;--font-display:"Sora","IBM Plex Sans",sans-serif;--font-mono:"IBM Plex Mono",ui-monospace,monospace}*{box-sizing:border-box}body,html{margin:0;min-height:100vh;background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:14px;line-height:1.45;-webkit-font-smoothing:antialiased}body{background:radial-gradient(1200px 600px at 10% -10%,rgba(47,179,137,.08),transparent 55%),radial-gradient(900px 500px at 100% 0,rgba(77,159,214,.06),transparent 50%),var(--bg)}a{color:inherit;text-decoration:none}button,input,select{font:inherit}.mono,code{font-family:var(--font-mono);font-size:12px}.shell,.sidebar{min-height:100vh}.sidebar{width:var(--sidebar-w);background:linear-gradient(180deg,#0d1318,#0a1015);border-right:1px solid var(--border);padding:0 0 120px;position:fixed;top:0;left:0;overflow-y:auto;z-index:40}.sidebar-brand{padding:22px 22px 18px;border-bottom:1px solid var(--border);margin-bottom:8px}.sidebar-brand-mark{font-family:var(--font-display);font-size:17px;font-weight:650;letter-spacing:-.03em;color:var(--text)}.sidebar-brand-mark span{color:var(--accent)}.sidebar-brand-sub{margin-top:4px;font-size:11px;letter-spacing:.04em}.sidebar .section-title,.sidebar-brand-sub{color:var(--muted);text-transform:uppercase}.sidebar .section-title{padding:16px 22px 6px;font-size:10px;letter-spacing:.12em;font-weight:600}.sidebar a{display:flex;align-items:center;gap:10px;margin:2px 10px;padding:9px 12px;border-radius:var(--radius-sm);font-size:13px;color:var(--text-secondary);transition:background .15s,color .15s}.sidebar a:hover{color:var(--text);background:var(--bg-hover)}.sidebar a.active{color:var(--text);background:var(--accent-soft);box-shadow:inset 0 0 0 1px rgba(47,179,137,.25)}.sidebar-foot{position:absolute;bottom:0;left:0;right:0;padding:14px 16px;border-top:1px solid var(--border);background:#0b1116;font-size:12px;color:var(--muted)}.main{margin-left:var(--sidebar-w);padding:28px 32px 48px;min-height:100vh}.topbar{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:24px;flex-wrap:wrap}.page-title{margin:0;font-family:var(--font-display);font-size:26px;font-weight:650;letter-spacing:-.03em}.page-sub{margin:6px 0 0;color:var(--muted);font-size:13px}.card{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);padding:1.15rem 1.25rem;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.02)}.card-link:hover{border-color:var(--border-strong);background:var(--bg-hover)}.stat-label{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;font-weight:600}.stat-value{font-family:var(--font-display);font-size:26px;font-weight:650;letter-spacing:-.03em;margin-top:6px}.stat-sub{font-size:12px;color:var(--muted);margin-top:4px}.grid-4{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));grid-gap:14px;gap:14px}.section-label{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.1em;font-weight:600;margin:22px 0 12px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 14px;border-radius:var(--radius-sm);border:1px solid transparent;cursor:pointer;font-size:13px;font-weight:550;transition:background .15s,border-color .15s,opacity .15s,transform .1s;white-space:nowrap}.btn:disabled{opacity:.45;cursor:not-allowed}.btn:not(:disabled):active{transform:translateY(1px)}.btn-primary{background:var(--accent);color:var(--accent-ink)}.btn-primary:hover:not(:disabled){filter:brightness(1.06)}.btn-outline{background:transparent;border-color:var(--border-strong);color:var(--text)}.btn-outline:hover:not(:disabled){background:var(--bg-hover)}.btn-danger{background:var(--danger);color:#fff}.btn-ghost{background:transparent;color:var(--text-secondary);border-color:transparent}.btn-ghost:hover:not(:disabled){background:var(--bg-hover);color:var(--text)}.btn-sm{padding:5px 10px;font-size:12px}.chip-row{display:flex;gap:6px;flex-wrap:wrap}.chip{border:1px solid var(--border);background:transparent;color:var(--text-secondary);border-radius:999px;padding:5px 12px;font-size:12px;cursor:pointer;transition:.15s}.chip:hover{color:var(--text);border-color:var(--border-strong)}.chip.active{background:var(--accent-soft);border-color:rgba(47,179,137,.4);color:var(--text)}.badge{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;border-radius:999px;font-size:11px;font-weight:650;letter-spacing:.02em}.badge-ok{background:var(--accent-soft);color:#5fd4ab}.badge-warn{background:var(--warn-soft);color:#f0c06a}.badge-critical{background:var(--danger-soft);color:#f0a0a0}.badge-info{background:var(--info-soft);color:#8ec4ea}input,select,textarea{background:var(--bg-elevated);border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:9px 12px;color:var(--text);outline:none;width:100%}input:focus,select:focus,textarea:focus{border-color:rgba(47,179,137,.55);box-shadow:0 0 0 3px var(--accent-soft)}label.field-label{font-size:12px;color:var(--muted);display:block;margin-bottom:6px;font-weight:550}.table-wrap{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}table{width:100%;border-collapse:collapse;font-size:13px}th{text-align:left;padding:11px 14px;color:var(--muted);border-bottom:1px solid var(--border);font-weight:600;text-transform:uppercase;letter-spacing:.06em;font-size:10px;background:rgba(0,0,0,.18)}td{padding:12px 14px;border-bottom:1px solid rgba(36,48,58,.7);vertical-align:middle}tr:last-child td{border-bottom:none}tr.clickable{cursor:pointer}tr.clickable:hover td{background:var(--bg-hover)}.drawer-backdrop{position:fixed;inset:0;background:rgba(4,8,12,.55);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:80}.drawer{position:fixed;top:0;right:0;width:min(440px,100vw);height:100vh;background:var(--bg-elevated);border-left:1px solid var(--border);padding:22px;overflow-y:auto;z-index:90;box-shadow:var(--shadow);animation:slideIn .18s ease-out}@keyframes slideIn{0%{transform:translateX(16px);opacity:.6}to{transform:translateX(0);opacity:1}}.kv{display:flex;flex-direction:column;gap:10px;font-size:13px}.kv-row{display:grid;grid-template-columns:110px 1fr;grid-gap:8px;gap:8px;align-items:start}.kv-row span:first-child{color:var(--muted)}.notice{border-radius:var(--radius-sm);padding:10px 12px;font-size:12px;line-height:1.4;margin-top:12px}.notice-warn{background:var(--warn-soft);border:1px solid rgba(227,162,58,.35);color:#f0c06a}.notice-ok{background:var(--accent-soft);border:1px solid rgba(47,179,137,.35);color:#5fd4ab}.empty,.loading{color:var(--muted);text-align:center;padding:3rem 1rem}.error{color:#f0a0a0;background:var(--danger-soft);border:1px solid rgba(226,91,91,.3);padding:12px 14px;border-radius:var(--radius-sm);margin:8px 0;font-size:13px}.login-shell{min-height:100vh;display:grid;place-items:center;padding:24px;position:relative;overflow:hidden}.login-shell:before{content:"";position:absolute;inset:-20%;background:radial-gradient(circle at 30% 20%,rgba(47,179,137,.16),transparent 35%),radial-gradient(circle at 70% 70%,rgba(77,159,214,.12),transparent 40%);pointer-events:none}.login-card{width:min(400px,100%);position:relative;z-index:1}.login-brand{text-align:center;margin-bottom:28px}.login-brand h1{margin:0;font-family:var(--font-display);font-size:28px;font-weight:700;letter-spacing:-.04em}.login-brand h1 span{color:var(--accent)}.login-brand p{margin:8px 0 0;color:var(--muted);font-size:13px}.quick-actions{display:flex;gap:8px;margin-bottom:20px;flex-wrap:wrap}@media (max-width:900px){.sidebar{width:100%;min-height:auto;border-right:none;border-bottom:1px solid var(--border);padding-bottom:12px}.sidebar,.sidebar-foot{position:relative}.main{margin-left:0;padding:20px 16px 40px}}