:root{--bg-primary:#0B0812;--bg-secondary:#110E1A;--bg-card:#18142280;--bg-card-hover:#1E192E;--bg-elevated:#231D34;--bg-input:#140F1F;--glass-bg:rgba(24,20,34,0.75);--glass-border:rgba(139,92,246,0.18);--glass-shadow:0 8px 40px rgba(0,0,0,0.55);--text-primary:#F0EBF8;--text-secondary:#A594C0;--text-muted:#6B5A8A;--text-inverted:#0B0812;--accent-primary:#7C3AED;--accent-primary-hover:#9F67FF;--accent-primary-glow:rgba(124,58,237,0.45);--accent-secondary:#22D3EE;--accent-pink:#EC4899;--accent-gradient:linear-gradient(135deg,#7C3AED,#A855F7 50%,#EC4899);--accent-gradient-subtle:linear-gradient(135deg,rgba(124,58,237,0.15),rgba(236,72,153,0.08));--accent-glow-gradient:linear-gradient(327.21deg,rgba(33,0,75,0.28),rgba(60,0,136,0) 40%),linear-gradient(245.93deg,rgba(209,21,111,0.18),rgba(209,25,80,0) 50%);--color-success:#10B981;--color-success-bg:rgba(16,185,129,0.12);--color-warning:#F59E0B;--color-warning-bg:rgba(245,158,11,0.12);--color-error:#EF4444;--color-error-bg:rgba(239,68,68,0.12);--color-info:#22D3EE;--color-info-bg:rgba(34,211,238,0.12);--border-color:rgba(139,92,246,0.13);--border-active:rgba(124,58,237,0.55);--space-xs:4px;--space-sm:8px;--space-md:16px;--space-lg:24px;--space-xl:32px;--space-2xl:48px;--space-3xl:64px;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--radius-xl:24px;--radius-full:9999px;--font-family:"Inter",-apple-system,BlinkMacSystemFont,system-ui,sans-serif;--font-tight:"Inter Tight","Inter",sans-serif;--font-mono:"JetBrains Mono","Fira Code",monospace;--transition-fast:150ms cubic-bezier(0.4,0,0.2,1);--transition-normal:250ms cubic-bezier(0.4,0,0.2,1);--transition-slow:400ms cubic-bezier(0.4,0,0.2,1)}*,:after,:before{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;scroll-behavior:smooth;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-family);background:var(--bg-primary);color:var(--text-primary);line-height:1.6;min-height:100vh;overflow-x:hidden}body:before{content:"";position:fixed;inset:0;background:radial-gradient(ellipse 80% 60% at 50% -10%,rgba(124,58,237,.14),transparent),radial-gradient(ellipse 50% 40% at 90% 90%,rgba(236,72,153,.08),transparent),radial-gradient(ellipse 60% 50% at 10% 60%,rgba(34,211,238,.05),transparent);pointer-events:none;z-index:0}#root{position:relative;z-index:1;min-height:100vh}a{color:var(--accent-primary);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--accent-primary-hover)}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--bg-secondary)}::-webkit-scrollbar-thumb{background:var(--bg-elevated);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--accent-primary)}.container{max-width:1280px;margin:0 auto;padding:0 var(--space-lg)}.glass-card{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-lg);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);box-shadow:var(--glass-shadow)}.gradient-text{background:var(--accent-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.status-badge{display:inline-block;padding:2px 8px;border-radius:var(--radius-full);font-size:.72rem;font-weight:700;letter-spacing:.03em}.status-2xx{background:var(--color-success-bg);color:var(--color-success)}.status-3xx{background:rgba(167,139,250,.15);color:#a78bfa}.status-4xx{background:var(--color-error-bg);color:var(--color-error)}.status-5xx{background:var(--color-warning-bg);color:var(--color-warning)}.status-0xx{background:rgba(148,163,184,.1);color:var(--text-muted)}.status-ok{background:var(--color-success-bg);color:var(--color-success)}.status-error{background:var(--color-error-bg);color:var(--color-error)}.btn-primary{display:inline-flex;align-items:center;gap:8px;padding:10px 20px;border-radius:var(--radius-md);background:var(--accent-gradient);color:white;font-weight:600;font-size:.9rem;border:none;cursor:pointer;transition:all var(--transition-fast);text-decoration:none;box-shadow:0 4px 15px rgba(124,58,237,.35)}.btn-primary:hover{opacity:.92;transform:translateY(-1px);box-shadow:0 6px 20px rgba(124,58,237,.45);color:white}.btn-secondary{display:inline-flex;align-items:center;gap:8px;padding:9px 18px;border-radius:var(--radius-md);background:transparent;color:var(--text-primary);font-weight:500;font-size:.875rem;border:1px solid var(--border-color);cursor:pointer;transition:all var(--transition-fast);text-decoration:none}.btn-secondary:hover{background:var(--bg-card-hover);border-color:var(--border-active);color:var(--text-primary)}.data-table{width:100%;border-collapse:collapse;font-size:.85rem}.data-table th{padding:12px 16px;text-align:left;font-weight:600;font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);border-bottom:1px solid var(--border-color);background:rgba(255,255,255,.02)}.data-table td{padding:11px 16px;border-bottom:1px solid rgba(139,92,246,.06);color:var(--text-secondary);vertical-align:middle}.data-table tbody tr:hover{background:rgba(124,58,237,.04)}.data-table tbody tr:last-child td{border-bottom:none}.spinner{animation:spin 1s linear infinite}.missing{color:var(--color-error);font-style:italic;font-size:.8em}@keyframes fadeIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes slideIn{0%{opacity:0;transform:translateX(-20px)}to{opacity:1;transform:none}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes glow{0%,to{box-shadow:0 0 8px var(--accent-primary-glow)}50%{box-shadow:0 0 24px var(--accent-primary-glow)}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes shimmer{0%{background-position:-200%}to{background-position:200%}}.fade-in{animation:fadeIn .5s ease-out}.slide-in{animation:slideIn .5s ease-out}.app-layout{min-height:100vh;display:flex;flex-direction:column}.app-header{position:fixed;top:0;left:0;right:0;z-index:200;padding:0 32px;height:60px;display:flex;align-items:center;transition:all .25s ease;border-bottom:1px solid transparent}.app-header.scrolled{background:rgba(11,8,18,.88);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-bottom-color:rgba(139,92,246,.12)}.header-inner{width:100%;max-width:1280px;margin:0 auto;gap:40px}.header-brand,.header-inner{display:flex;align-items:center}.header-brand{gap:10px;text-decoration:none;flex-shrink:0}.brand-icon{width:34px;height:34px;border-radius:9px;background:linear-gradient(135deg,#7C3AED,#A855F7,#EC4899);display:flex;align-items:center;justify-content:center;box-shadow:0 4px 14px rgba(124,58,237,.4)}.brand-name{font-family:var(--font-tight);font-size:1.1rem;font-weight:700;color:var(--text-primary);letter-spacing:-.02em}.header-nav{display:flex;align-items:center;gap:4px;flex:1 1}.header-nav a{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:var(--radius-md);font-size:.85rem;font-weight:500;color:var(--text-secondary);transition:all var(--transition-fast)}.header-nav a.active,.header-nav a:hover{color:var(--text-primary);background:rgba(139,92,246,.1)}.header-right{display:flex;align-items:center;gap:12px;flex-shrink:0}.app-main{flex:1 1;padding-top:60px}.btn-login{display:inline-flex;align-items:center;gap:7px;padding:7px 14px;border-radius:var(--radius-md);background:rgba(139,92,246,.1);border:1px solid rgba(139,92,246,.25);color:var(--text-primary);font-size:.82rem;font-weight:500;cursor:pointer;transition:all var(--transition-fast);white-space:nowrap}.btn-login:hover{background:rgba(139,92,246,.18);border-color:rgba(139,92,246,.5)}.google-icon{flex-shrink:0}.user-menu{position:relative}.user-menu-trigger{display:flex;align-items:center;gap:8px;padding:4px 10px 4px 4px;border-radius:var(--radius-full);background:rgba(139,92,246,.08);border:1px solid rgba(139,92,246,.18);cursor:pointer;transition:all var(--transition-fast)}.user-menu-trigger:hover{background:rgba(139,92,246,.15);border-color:rgba(139,92,246,.4)}.user-avatar{object-fit:cover}.user-avatar,.user-avatar-fallback{width:26px;height:26px;border-radius:50%}.user-avatar-fallback{background:var(--accent-gradient);display:flex;align-items:center;justify-content:center;color:white}.user-name{font-size:.82rem;font-weight:500;color:var(--text-primary);max-width:90px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-chevron{color:var(--text-muted);transition:transform var(--transition-fast)}.user-chevron.open{transform:rotate(180deg)}.user-menu-skeleton{width:80px;height:34px;border-radius:var(--radius-full);background:rgba(139,92,246,.08);border:1px solid rgba(139,92,246,.1);opacity:.6}.user-dropdown{position:absolute;top:calc(100% + 10px);right:0;min-width:260px;background:#18142299;border:1px solid rgba(139,92,246,.2);border-radius:var(--radius-lg);backdrop-filter:blur(32px);-webkit-backdrop-filter:blur(32px);box-shadow:0 20px 50px rgba(0,0,0,.6),0 0 0 1px rgba(139,92,246,.05);overflow:hidden;z-index:300;animation:fadeIn .12s ease}.user-dropdown-header{display:flex;align-items:center;gap:12px;padding:16px}.user-avatar-lg{object-fit:cover}.user-avatar-fallback-lg,.user-avatar-lg{width:42px;height:42px;border-radius:50%;flex-shrink:0}.user-avatar-fallback-lg{background:var(--accent-gradient);display:flex;align-items:center;justify-content:center;color:white}.user-dropdown-name{font-weight:600;font-size:.88rem;color:var(--text-primary)}.user-dropdown-email{font-size:.75rem;color:var(--text-muted);margin-top:2px}.user-dropdown-plan{font-size:.68rem;font-weight:700;color:#22D3EE;background:rgba(34,211,238,.1);padding:2px 8px;border-radius:var(--radius-full);display:inline-block;margin-top:4px;text-transform:uppercase;letter-spacing:.05em}.user-dropdown-divider{height:1px;background:rgba(139,92,246,.1)}.user-dropdown-item{display:flex;align-items:center;gap:10px;width:100%;padding:11px 16px;font-size:.85rem;color:var(--text-secondary);background:transparent;border:none;cursor:pointer;transition:all var(--transition-fast);text-align:left}.user-dropdown-item:hover{background:rgba(139,92,246,.08);color:var(--text-primary)}.user-dropdown-logout{color:var(--color-error)}.user-dropdown-logout:hover{background:var(--color-error-bg);color:var(--color-error)}