:root{--bg: #0a0a0a;--bg-elevated: #111111;--bg-hover: #171717;--bg-muted: #1a1a1a;--border: #262626;--border-strong: #333333;--text: #ededed;--text-secondary: #a1a1a1;--text-muted: #666666;--status-ok: #46a758;--status-warn: #f5a623;--status-err: #e5484d;--status-info: #3b82f6;--fg-invert: #0a0a0a;--radius: 6px;--radius-lg: 8px;--font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--font-mono: "JetBrains Mono", "SF Mono", ui-monospace, Menlo, monospace;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--space-7: 40px;--space-8: 48px;--nav-width: 220px;--header-h: 48px;--transition: .16s ease}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{min-height:100%}body{background:var(--bg);color:var(--text);font-family:var(--font);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button,input{font-family:inherit}.app-shell{display:flex;min-height:100vh}.sidebar{width:var(--nav-width);border-right:1px solid var(--border);background:var(--bg);display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;z-index:40}.sidebar-brand{height:var(--header-h);display:flex;align-items:center;gap:var(--space-2);padding:0 var(--space-4);border-bottom:1px solid var(--border);font-weight:600;letter-spacing:-.02em}.sidebar-brand .mark{width:22px;height:22px;border-radius:5px;background:var(--text);color:var(--fg-invert);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700}.sidebar-nav{padding:var(--space-3);display:flex;flex-direction:column;gap:2px;flex:1}.nav-link{display:flex;align-items:center;gap:var(--space-2);padding:8px 10px;border-radius:var(--radius);color:var(--text-secondary);font-size:13px;font-weight:500;transition:background var(--transition),color var(--transition)}.nav-link:hover{background:var(--bg-hover);color:var(--text)}.nav-link.active{background:var(--bg-muted);color:var(--text)}.sidebar-footer{padding:var(--space-3);border-top:1px solid var(--border);font-size:12px;color:var(--text-muted)}.main{margin-left:var(--nav-width);flex:1;min-width:0;display:flex;flex-direction:column}.topbar{height:var(--header-h);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 var(--space-5);position:sticky;top:0;background:#0a0a0ad9;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:30}.topbar-title{font-size:14px;font-weight:500;color:var(--text-secondary)}.page{padding:var(--space-5) var(--space-5) var(--space-8);max-width:1100px;width:100%}.page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-5)}.page-header h1{font-size:24px;font-weight:600;letter-spacing:-.03em;line-height:1.2}.page-header p{margin-top:var(--space-2);color:var(--text-secondary);font-size:14px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:32px;padding:0 12px;border-radius:var(--radius);border:1px solid var(--border);background:var(--bg-elevated);color:var(--text);font-size:13px;font-weight:500;cursor:pointer;transition:background var(--transition),border-color var(--transition);white-space:nowrap}.btn:hover:not(:disabled){background:var(--bg-hover);border-color:var(--border-strong)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--text);color:var(--fg-invert);border-color:var(--text)}.btn-primary:hover:not(:disabled){background:#fff;border-color:#fff}.btn-ghost{background:transparent;border-color:transparent;color:var(--text-secondary)}.btn-ghost:hover:not(:disabled){background:var(--bg-hover);color:var(--text)}.btn-danger{color:var(--status-err);border-color:var(--border)}.btn-sm{height:28px;padding:0 10px;font-size:12px}.input{height:36px;width:100%;padding:0 12px;border-radius:var(--radius);border:1px solid var(--border);background:var(--bg);color:var(--text);font-size:13px;outline:none;transition:border-color var(--transition)}.input:focus{border-color:var(--text-secondary)}.input-sm{height:32px;font-size:12px}.label{display:block;font-size:12px;font-weight:500;color:var(--text-secondary);margin-bottom:6px}.table-wrap{border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;background:var(--bg-elevated)}table.data{width:100%;border-collapse:collapse;font-size:13px}table.data th{text-align:left;font-weight:500;color:var(--text-muted);font-size:12px;padding:10px 14px;border-bottom:1px solid var(--border);background:var(--bg)}table.data td{padding:12px 14px;border-bottom:1px solid var(--border);vertical-align:middle}table.data tr:last-child td{border-bottom:none}table.data tbody tr{transition:background var(--transition)}table.data tbody tr:hover{background:var(--bg-hover)}.mono{font-family:var(--font-mono);font-size:12px}.muted{color:var(--text-secondary)}.badge{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:500;color:var(--text-secondary)}.badge .dot{width:7px;height:7px;border-radius:50%;background:var(--text-muted)}.badge.ok .dot{background:var(--status-ok)}.badge.warn .dot{background:var(--status-warn)}.badge.err .dot{background:var(--status-err)}.badge.info .dot{background:var(--status-info)}.badge.ok{color:var(--status-ok)}.badge.err{color:var(--status-err)}.panel{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-elevated);padding:var(--space-4)}.panel-title{font-size:13px;font-weight:500;margin-bottom:var(--space-3);color:var(--text-secondary)}.grid-2{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-4)}.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-3)}@media (max-width: 900px){.grid-4{grid-template-columns:repeat(2,1fr)}.grid-2{grid-template-columns:1fr}.sidebar{display:none}.main{margin-left:0}}.stat{border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-4);background:var(--bg-elevated)}.stat-label{font-size:12px;color:var(--text-muted);margin-bottom:4px}.stat-value{font-size:22px;font-weight:600;letter-spacing:-.02em}.tabs{display:flex;gap:var(--space-1);border-bottom:1px solid var(--border);margin-bottom:var(--space-5)}.tab{background:none;border:none;color:var(--text-secondary);padding:10px 12px;font-size:13px;font-weight:500;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;transition:color var(--transition)}.tab:hover{color:var(--text)}.tab.active{color:var(--text);border-bottom-color:var(--text)}.empty{border:1px dashed var(--border-strong);border-radius:var(--radius-lg);padding:var(--space-8) var(--space-5);text-align:center;color:var(--text-secondary)}.empty h3{color:var(--text);font-size:15px;font-weight:500;margin-bottom:6px}.empty p{font-size:13px;margin-bottom:var(--space-4)}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:var(--space-5)}.login-card{width:100%;max-width:360px;border:1px solid var(--border);border-radius:10px;background:var(--bg-elevated);padding:var(--space-6)}.login-card h1{font-size:18px;font-weight:600;letter-spacing:-.02em;margin-bottom:4px}.login-card .sub{color:var(--text-secondary);font-size:13px;margin-bottom:var(--space-5)}.form-stack{display:flex;flex-direction:column;gap:var(--space-4)}.error-banner{background:#e5484d1a;color:var(--status-err);border:1px solid rgba(229,72,77,.25);border-radius:var(--radius);padding:10px 12px;font-size:13px;margin-bottom:var(--space-4)}.success-banner{background:#46a7581a;color:var(--status-ok);border:1px solid rgba(70,167,88,.25);border-radius:var(--radius);padding:10px 12px;font-size:13px;margin-bottom:var(--space-4)}.row-actions{display:flex;gap:6px;align-items:center;justify-content:flex-end}.copy-btn{color:var(--text-muted);cursor:pointer;background:none;border:none;padding:2px;display:inline-flex}.copy-btn:hover{color:var(--text)}.skeleton{background:linear-gradient(90deg,var(--bg-muted) 25%,var(--bg-hover) 50%,var(--bg-muted) 75%);background-size:200% 100%;animation:shimmer 1.2s infinite;border-radius:4px;height:14px}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.dialog-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:100;padding:var(--space-4)}.dialog{width:100%;max-width:420px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:10px;padding:var(--space-5)}.dialog h2{font-size:16px;font-weight:600;margin-bottom:var(--space-2)}.dialog p{color:var(--text-secondary);font-size:13px;margin-bottom:var(--space-4)}.dialog-actions{display:flex;justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-4)}.crumb{font-size:13px;color:var(--text-muted);margin-bottom:var(--space-2)}.crumb a:hover{color:var(--text)}
