:root{--bg: #0c0e14;--surface: #141824;--surface2: #1a1f2e;--border: #2a3144;--text: #e8eaef;--muted: #8b93a7;--accent: #5b8cff;--accent-dim: #3d5a9e;--danger: #f07178;--ok: #7fd962;--radius: 12px;--font: "DM Sans", system-ui, sans-serif;--mono: "JetBrains Mono", ui-monospace, monospace}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg);color:var(--text);font-family:var(--font);font-size:15px;line-height:1.5}body{background-image:radial-gradient(ellipse 120% 80% at 50% -20%,#1a2540 0%,transparent 55%),radial-gradient(ellipse 60% 40% at 100% 100%,#152238 0%,transparent 50%);background-attachment:fixed}#root{min-height:100vh}.muted{color:var(--muted)}.error{color:var(--danger)}.card{background:linear-gradient(145deg,var(--surface) 0%,var(--surface2) 100%);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 12px 40px #00000059}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}.login-card{width:100%;max-width:400px;padding:32px}.login-card h1{margin:0 0 8px;font-size:1.5rem;font-weight:700;letter-spacing:-.02em}.login-card form{display:flex;flex-direction:column;gap:16px;margin-top:24px}.login-card label{display:flex;flex-direction:column;gap:6px;font-size:.85rem;color:var(--muted)}.login-card input{padding:10px 12px;border-radius:8px;border:1px solid var(--border);background:#00000040;color:var(--text);font-family:inherit}.btn{border:none;border-radius:8px;padding:10px 16px;font-family:inherit;font-weight:600;cursor:pointer;transition:background .15s,transform .1s}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:linear-gradient(180deg,var(--accent) 0%,var(--accent-dim) 100%);color:#fff}.btn.primary:hover:not(:disabled){filter:brightness(1.08)}.btn.ghost{background:transparent;color:var(--muted);border:1px solid var(--border)}.btn.ghost:hover{color:var(--text);border-color:var(--muted)}.btn.tiny{padding:6px 10px;font-size:.8rem;background:var(--surface2);color:var(--text);border:1px solid var(--border)}.btn.tiny:hover{border-color:var(--accent);color:var(--accent)}.btn.tiny.danger{border-color:#f0717873;color:var(--danger)}.btn.tiny.danger:hover{background:#f071781f}.shell{max-width:1280px;margin:0 auto;padding:0 24px 48px}.topbar{display:flex;align-items:center;justify-content:space-between;padding:20px 0;border-bottom:1px solid var(--border);margin-bottom:28px}.brand{display:flex;align-items:center;gap:12px;font-weight:700;font-size:1.1rem}.logo{width:10px;height:28px;border-radius:3px;background:linear-gradient(180deg,var(--accent),#7c5cff);box-shadow:0 0 20px #5b8cff73}.main h2{margin:0;font-size:1.25rem}.toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;flex-wrap:wrap;gap:16px}.toolbar-actions{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap}.inline-label{display:flex;flex-direction:column;gap:6px;font-size:.85rem}.inline-label input{min-width:220px;padding:8px 12px;border-radius:8px;border:1px solid var(--border);background:#00000040;color:var(--text);font-family:inherit}.banner.error{padding:12px 16px;margin-bottom:16px;border-radius:8px;background:#f071781f;border:1px solid rgba(240,113,120,.35)}.table-wrap{overflow:auto;padding:0}.data-table{width:100%;border-collapse:collapse;font-size:.9rem}.data-table th,.data-table td{padding:14px 16px;text-align:left;border-bottom:1px solid var(--border)}.data-table th{color:var(--muted);font-weight:600;font-size:.75rem;text-transform:uppercase;letter-spacing:.06em}.data-table tbody tr:hover{background:#5b8cff0a}.mono{font-family:var(--mono);font-size:.85rem}.mono.small{font-size:.78rem;max-width:220px;overflow:hidden;text-overflow:ellipsis}.pill{display:inline-block;padding:2px 10px;border-radius:999px;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em}.status-provisioning{background:#5b8cff33;color:var(--accent)}.status-active{background:#7fd96226;color:var(--ok)}.status-failed{background:#f0717826;color:var(--danger)}.err-hint{margin-left:6px;cursor:help}.actions{display:flex;flex-wrap:wrap;gap:8px}
