@import "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap";:root{--bg-base:#0a0e1a;--bg-surface:#111827;--bg-card:#1a2035;--bg-elevated:#1f2a44;--bg-hover:#252f4a;--border:#ffffff0f;--border-active:#06b6d44d;--text-primary:#e2e8f0;--text-secondary:#94a3b8;--text-muted:#64748b;--accent:#06b6d4;--accent-glow:#06b6d426;--accent-green:#22c55e;--accent-red:#ef4444;--accent-yellow:#eab308;--accent-purple:#8b5cf6;--accent-orange:#f97316;--radius:10px;--font:"Inter", -apple-system, system-ui, sans-serif;--mono:"JetBrains Mono", "SF Mono", monospace}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font);background:var(--bg-base);color:var(--text-primary);-webkit-font-smoothing:antialiased;min-height:100vh}.ops-layout{min-height:100vh}.ops-sidebar{background:var(--bg-surface);border-right:1px solid var(--border);z-index:100;flex-direction:column;width:240px;height:100vh;padding:24px 0;display:flex;position:fixed;overflow-y:auto}.ops-sidebar .logo{border-bottom:1px solid var(--border);margin-bottom:16px;padding:0 24px 24px}.ops-sidebar .logo h1{color:var(--accent);letter-spacing:-.5px;font-size:18px;font-weight:700}.ops-sidebar .logo span{color:var(--text-muted);text-transform:uppercase;letter-spacing:1px;font-size:11px}.ops-sidebar nav{flex:1;padding:0 12px}.nav-item{color:var(--text-secondary);cursor:pointer;border-radius:8px;align-items:center;gap:10px;margin-bottom:2px;padding:10px 14px;font-size:13.5px;font-weight:500;text-decoration:none;transition:all .15s;display:flex}.nav-item:hover{background:var(--bg-hover);color:var(--text-primary)}.nav-item.active{background:var(--accent-glow);color:var(--accent);border:1px solid var(--border-active)}.nav-item .icon{text-align:center;width:22px;font-size:16px}.sidebar-footer{border-top:1px solid var(--border);padding:16px 24px}.sidebar-footer .user-email{color:var(--text-muted);text-overflow:ellipsis;margin-bottom:8px;font-size:12px;overflow:hidden}.ops-main{min-height:100vh;margin-left:240px;padding:32px}.kpi-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px;margin-bottom:32px;display:grid}.kpi-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:20px;transition:border-color .2s}.kpi-card:hover{border-color:var(--border-active)}.kpi-card .kpi-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:8px;font-size:12px}.kpi-card .kpi-value{font-size:28px;font-weight:700;font-family:var(--mono);color:var(--text-primary)}.kpi-card .kpi-sub{color:var(--text-muted);margin-top:4px;font-size:11px}.kpi-card.danger .kpi-value{color:var(--accent-red)}.kpi-card.success .kpi-value{color:var(--accent-green)}.kpi-card.warning .kpi-value{color:var(--accent-yellow)}.kpi-card.accent .kpi-value{color:var(--accent)}.panel{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:24px;overflow:hidden}.panel-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.panel-header h3{color:var(--text-primary);font-size:14px;font-weight:600}.panel-body{padding:20px}.panel-body.flush{padding:0}.ops-table{border-collapse:collapse;width:100%;font-size:13px}.ops-table th{text-align:left;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;background:var(--bg-surface);border-bottom:1px solid var(--border);padding:10px 16px;font-size:11px;font-weight:600;position:sticky;top:0}.ops-table td{border-bottom:1px solid var(--border);color:var(--text-secondary);vertical-align:middle;padding:10px 16px}.ops-table tr:hover td{background:var(--bg-elevated)}.ops-table tr:last-child td{border-bottom:none}.badge{letter-spacing:.3px;border-radius:4px;align-items:center;gap:4px;padding:3px 8px;font-size:11px;font-weight:600;display:inline-flex}.badge.green{color:var(--accent-green);background:#22c55e1f}.badge.red{color:var(--accent-red);background:#ef44441f}.badge.yellow{color:var(--accent-yellow);background:#eab3081f}.badge.cyan{color:var(--accent);background:#06b6d41f}.badge.purple{color:var(--accent-purple);background:#8b5cf61f}.badge.gray{color:var(--text-muted);background:#64748b1f}.btn{font-size:13px;font-weight:500;font-family:var(--font);cursor:pointer;border:none;border-radius:6px;align-items:center;gap:6px;padding:8px 16px;transition:all .15s;display:inline-flex}.btn-primary{background:var(--accent);color:#000}.btn-primary:hover{background:#08c8e0}.btn-secondary{background:var(--bg-elevated);color:var(--text-primary);border:1px solid var(--border)}.btn-secondary:hover{background:var(--bg-hover);border-color:var(--border-active)}.btn-danger{color:var(--accent-red);background:#ef444426}.btn-danger:hover{background:#ef444440}.btn-sm{padding:5px 10px;font-size:12px}.btn-xs{padding:3px 8px;font-size:11px}input,select,textarea{background:var(--bg-surface);border:1px solid var(--border);color:var(--text-primary);font-family:var(--font);border-radius:6px;outline:none;padding:8px 12px;font-size:13px;transition:border-color .15s}input:focus,select:focus{border-color:var(--accent)}.toggle{cursor:pointer;width:44px;height:24px;position:relative}.toggle input{display:none}.toggle .slider{background:var(--bg-elevated);border:1px solid var(--border);border-radius:24px;transition:all .2s;position:absolute;inset:0}.toggle .slider:before{content:"";background:var(--text-muted);border-radius:50%;width:18px;height:18px;transition:all .2s;position:absolute;bottom:2px;left:2px}.toggle input:checked+.slider{background:var(--accent-glow);border-color:var(--accent)}.toggle input:checked+.slider:before{background:var(--accent);transform:translate(20px)}.pagination{border-top:1px solid var(--border);color:var(--text-muted);justify-content:space-between;align-items:center;padding:12px 20px;font-size:12px;display:flex}.progress-bar{background:var(--bg-surface);border-radius:4px;height:6px;overflow:hidden}.progress-bar .fill{border-radius:4px;height:100%;transition:width .4s}.bar-chart{align-items:flex-end;gap:3px;height:80px;padding:0 4px;display:flex}.bar-chart .bar{background:var(--accent);opacity:.7;border-radius:2px 2px 0 0;flex:1;min-width:4px;transition:opacity .15s,height .3s}.bar-chart .bar:hover{opacity:1}.bar-chart .bar.failed{background:var(--accent-red)}.login-screen{background:var(--bg-base);justify-content:center;align-items:center;min-height:100vh;display:flex}.login-card{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;width:100%;max-width:380px;padding:40px}.login-card h1{color:var(--accent);margin-bottom:4px;font-size:20px;font-weight:700}.login-card .subtitle{color:var(--text-muted);text-transform:uppercase;letter-spacing:1px;margin-bottom:28px;font-size:12px}.login-card .form-group{margin-bottom:16px}.login-card label{color:var(--text-muted);margin-bottom:6px;font-size:12px;font-weight:500;display:block}.login-card input{width:100%;padding:10px 14px}.login-card .btn{justify-content:center;width:100%;margin-top:8px;padding:12px}.login-error{color:var(--accent-red);text-align:center;margin-top:12px;font-size:12px;display:none}.mono{font-family:var(--mono);font-size:12px}.text-muted{color:var(--text-muted)}.text-sm{font-size:12px}.text-xs{font-size:11px}.mt-4{margin-top:16px}.mb-4{margin-bottom:16px}.flex{display:flex}.gap-2{gap:8px}.gap-3{gap:12px}.items-center{align-items:center}.justify-between{justify-content:space-between}.flex-wrap{flex-wrap:wrap}.page-header{justify-content:space-between;align-items:center;margin-bottom:24px;display:flex}.page-header h2{letter-spacing:-.3px;font-size:20px;font-weight:700}.pipeline-steps{align-items:center;gap:4px;display:flex}.pipeline-step{border-radius:50%;justify-content:center;align-items:center;width:14px;height:14px;font-size:8px;font-weight:700;display:flex}.pipeline-step.done{background:var(--accent-green);color:#000}.pipeline-step.pending{background:var(--bg-elevated);color:var(--text-muted);border:1px solid var(--border)}.pipeline-connector{background:var(--border);width:12px;height:1px}@media (width<=768px){.ops-sidebar{display:none}.ops-main{margin-left:0;padding:16px}.kpi-grid{grid-template-columns:repeat(2,1fr)}}
