*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#0b0b10;--surface:#16161e;--surface-2:#1e1e28;--border:#ffffff17;--border-2:#ffffff29;--text:#e7e7ee;--text-muted:#9a9aa6;--accent:#7c5cff;--accent-hover:#6b49f5;--accent-active:#5b3ce0;--accent-dim:#7c5cff24;--accent-grad:linear-gradient(135deg, #7c5cff 0%, #4d8dff 100%);--success:#34c759;--warning:#f5a623;--danger:#ff5c5c;--danger-hover:#e04848;--radius:8px;--radius-lg:12px;--shadow:0 4px 24px #0006;--font-display:"Space Grotesk", sans-serif;--font-body:"Inter", system-ui, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, Menlo, monospace;font-size:15px}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);font-family:var(--font-body);-webkit-font-smoothing:antialiased;line-height:1.5}h1,h2,h3,h4,h5,h6{font-family:var(--font-display)}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.app-shell{height:100%;display:flex}.sidebar{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;width:220px;padding:0 0 16px;display:flex}.sidebar-logo{border-bottom:1px solid var(--border);margin-bottom:8px;padding:18px 20px 16px;line-height:0}.sidebar-nav{flex:1;padding:4px 8px;list-style:none}.sidebar-nav li a{border-radius:var(--radius);color:var(--text-muted);align-items:center;gap:10px;padding:9px 12px;font-size:.9rem;font-weight:500;transition:background .15s,color .15s;display:flex}.sidebar-nav li a:hover{background:var(--surface-2);color:var(--text);text-decoration:none}.sidebar-nav li a.active{background:var(--accent-dim);color:var(--accent)}.sidebar-nav li a .nav-icon{text-align:center;width:18px;font-size:1rem}.sidebar-footer{border-top:1px solid var(--border);padding:8px 16px 0}.sidebar-user{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;padding:10px 4px 6px;font-size:.8rem;overflow:hidden}.sidebar-links{gap:16px;padding:8px 4px 4px;display:flex}.sidebar-links a{color:var(--text-muted);font-size:.8rem;transition:color .15s}.sidebar-links a:hover{color:var(--accent)}.main-content{flex:1;min-width:0;padding:32px 36px;overflow-y:auto}.page-title,.modal-title,.login-logo,.stat-value,.section-title{font-family:var(--font-display)}.page-title{letter-spacing:-.3px;margin-bottom:4px;font-size:1.4rem;font-weight:700}.page-subtitle{color:var(--text-muted);margin-bottom:28px;font-size:.9rem}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:20px 24px}.card-title{text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:12px;font-size:.85rem;font-weight:600}.card-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px;margin-bottom:24px;display:grid}.stat-value{letter-spacing:-.5px;font-size:2rem;font-weight:700;line-height:1.1}.stat-label{color:var(--text-muted);margin-top:4px;font-size:.8rem}.btn{border-radius:var(--radius);cursor:pointer;border:none;align-items:center;gap:8px;padding:8px 16px;font-size:.875rem;font-weight:500;transition:background .15s,opacity .15s;display:inline-flex}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-ghost{color:var(--text-muted);border:1px solid var(--border);background:0 0}.btn-ghost:hover:not(:disabled){background:var(--surface-2);color:var(--text)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover:not(:disabled){background:var(--danger-hover)}.btn-sm{padding:5px 12px;font-size:.8rem}.table-wrap{border-radius:var(--radius-lg);border:1px solid var(--border);overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:.875rem}thead th{background:var(--surface-2);color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;text-align:left;border-bottom:1px solid var(--border);padding:10px 16px;font-size:.75rem;font-weight:600}tbody tr{border-bottom:1px solid var(--border)}tbody tr:last-child{border-bottom:none}tbody tr:hover{background:var(--surface-2)}tbody td{color:var(--text);padding:12px 16px}.badge{border-radius:99px;padding:2px 8px;font-size:.75rem;font-weight:600;display:inline-block}.badge-success{color:var(--success);background:#34c75926}.badge-warning{color:var(--warning);background:#f5a62326}.badge-muted{color:var(--text-muted);background:#9a9aa626}.badge-info{background:var(--accent-dim);color:var(--accent)}.progress-wrap{background:var(--surface-2);border-radius:99px;height:8px;margin:10px 0 6px;overflow:hidden}.progress-bar{background:var(--accent);border-radius:99px;height:100%;transition:width .4s}.progress-bar.warning{background:var(--warning)}.progress-bar.danger{background:var(--danger)}.modal-backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:100;background:#0009;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow);width:100%;max-width:480px;padding:28px}.modal-title{margin-bottom:8px;font-size:1.1rem;font-weight:700}.modal-body{color:var(--text-muted);margin-bottom:20px;font-size:.9rem}.modal-actions{justify-content:flex-end;gap:10px;display:flex}.key-box{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);font-family:var(--font-mono);word-break:break-all;color:var(--text);margin:12px 0;padding:12px 14px;font-size:.82rem}.key-warning{border-radius:var(--radius);color:var(--warning);background:#f5a6231a;border:1px solid #f5a62340;margin-bottom:16px;padding:10px 14px;font-size:.83rem}.form-group{margin-bottom:16px}.form-label{color:var(--text-muted);margin-bottom:6px;font-size:.85rem;font-weight:500;display:block}.form-input{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);width:100%;color:var(--text);outline:none;padding:9px 13px;font-size:.9rem;transition:border-color .15s}.form-input:focus{border-color:var(--accent)}.login-page{background:var(--bg);justify-content:center;align-items:center;height:100%;display:flex}.login-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow);text-align:center;width:100%;max-width:380px;padding:40px 40px 36px}.login-logo{margin-bottom:16px;line-height:0}.login-tagline{color:var(--text-muted);margin-bottom:32px;font-size:.88rem}.login-divider{text-align:center;color:var(--text-muted);margin:20px 0;font-size:.78rem;position:relative}.login-divider:before,.login-divider:after{content:"";background:var(--border);width:calc(50% - 20px);height:1px;position:absolute;top:50%}.login-divider:before{left:0}.login-divider:after{right:0}.btn-oauth{border-radius:var(--radius);cursor:pointer;border:1px solid var(--border);background:var(--surface-2);width:100%;color:var(--text);justify-content:center;align-items:center;gap:10px;margin-bottom:10px;padding:11px 16px;font-size:.9rem;font-weight:500;text-decoration:none;transition:background .15s,border-color .15s;display:flex}.btn-oauth:hover{background:var(--border);text-decoration:none}.btn-oauth svg{flex-shrink:0}.banner{border-radius:var(--radius);align-items:center;gap:10px;margin-bottom:24px;padding:12px 16px;font-size:.88rem;display:flex}.banner-success{color:var(--success);background:#34c7591a;border:1px solid #34c75940}.banner-warning{color:var(--warning);background:#f5a6231a;border:1px solid #f5a62340}.banner-info{background:var(--accent-dim);color:var(--accent);border:1px solid #7c5cff40}.empty-state{text-align:center;color:var(--text-muted);padding:40px 20px;font-size:.9rem}.section-header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.section-title{font-size:1rem;font-weight:600}.mono{font-family:var(--font-mono);font-size:.82em}.text-muted{color:var(--text-muted)}.text-success{color:var(--success)}.text-danger{color:var(--danger)}.text-warning{color:var(--warning)}.mt-24{margin-top:24px}.spinner{height:200px;color:var(--text-muted);justify-content:center;align-items:center;font-size:.9rem;display:flex}.service-switcher{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);gap:2px;margin-bottom:20px;padding:3px;display:inline-flex}.service-tab{font-family:var(--font-body);color:var(--text-muted);border-radius:calc(var(--radius-lg) - 4px);cursor:pointer;background:0 0;border:none;padding:7px 18px;font-size:.9rem;font-weight:500;transition:background .15s,color .15s}.service-tab:hover:not(.active){color:var(--text)}.service-tab.active{background:var(--accent-dim);color:var(--accent)}
