.login-root{--bg:#0a0a0b;--bg-1:#111113;--bg-2:#161618;--bg-hover:#1c1c1f;--line:#1f1f23;--line-soft:#19191c;--line-strong:#2a2a30;--fg:#ededee;--fg-2:#b9b9bf;--fg-3:#8a8a92;--fg-faint:#5a5a62;--accent:#b9f99a;--accent-glow:rgba(185,249,154,.18);--pos:#4ade80;--neg:#f87171;--radius:10px;--radius-lg:14px;--mono:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace;min-height:100vh;width:100%;background:var(--bg);color:var(--fg);font-family:-apple-system,BlinkMacSystemFont,Inter,system-ui,sans-serif;display:flex;align-items:center;justify-content:center;padding:24px;position:relative;overflow:hidden}.login-root:before{content:"";position:absolute;inset:-25% -10% auto -10%;height:60%;background:radial-gradient(ellipse 40% 50% at 50% 0,var(--accent-glow),transparent 70%);pointer-events:none}.login-shell{position:relative;width:100%;max-width:440px;display:flex;flex-direction:column;gap:24px}.login-brand{display:inline-flex;align-items:center;gap:10px;text-decoration:none;color:var(--fg);font-weight:700;font-size:18px;font-family:var(--mono);letter-spacing:-.01em;margin:0 auto}.login-cursor{width:8px;height:14px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);border-radius:1px;animation:login-blink 1.4s step-end infinite}@keyframes login-blink{0%,49%{opacity:1}50%,to{opacity:.15}}.login-card{background:linear-gradient(180deg,var(--bg-2),var(--bg-1));border:1px solid var(--line);border-radius:var(--radius-lg);padding:36px 32px 28px;box-shadow:0 0 0 1px rgba(0,0,0,.4),0 30px 80px -20px rgba(0,0,0,.6),inset 0 1px 0 hsla(0,0%,100%,.04)}.login-title{margin:0 0 6px;font-size:24px;font-weight:600;letter-spacing:-.02em}.login-sub{margin:0 0 24px;color:var(--fg-3);font-size:14px;line-height:1.5}.login-oauth{display:flex;flex-direction:column;gap:10px}.login-oauth-btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;width:100%;padding:11px 16px;background:var(--bg-1);border:1px solid var(--line-strong);border-radius:var(--radius);color:var(--fg);font-size:14px;font-weight:500;cursor:pointer;transition:background .14s,border-color .14s,transform .14s;font-family:inherit;position:relative}.login-oauth-btn:hover:not(:disabled){background:var(--bg-hover);border-color:var(--fg-faint)}.login-oauth-btn:disabled{opacity:.55;cursor:not-allowed}.login-divider{display:flex;align-items:center;gap:12px;margin:20px 0;color:var(--fg-faint);font-size:12px;font-family:var(--mono);text-transform:uppercase;letter-spacing:.08em}.login-divider:after,.login-divider:before{content:"";flex:1;height:1px;background:var(--line)}.login-form{gap:14px}.login-form,.login-label{display:flex;flex-direction:column}.login-label{gap:6px;font-size:13px;font-weight:500;color:var(--fg-2)}.login-input{padding:11px 14px;background:var(--bg);border:1px solid var(--line-strong);border-radius:var(--radius);color:var(--fg);font-size:14px;font-family:inherit;transition:border-color .14s,box-shadow .14s;outline:none}.login-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(185,249,154,.16)}.login-input:disabled{opacity:.55;cursor:not-allowed}.login-submit{margin-top:6px;padding:11px 16px;background:var(--accent);color:#0c1408;border:none;border-radius:var(--radius);font-size:14px;font-weight:600;cursor:pointer;font-family:inherit;transition:transform .14s,box-shadow .14s}.login-submit:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 12px 30px -10px var(--accent-glow),inset 0 1px 0 hsla(0,0%,100%,.3)}.login-submit:disabled{opacity:.55;cursor:not-allowed}.login-message{margin-top:16px;padding:10px 14px;border-radius:var(--radius);font-size:13px;line-height:1.5}.login-error{background:hsla(0,91%,71%,.08);border:1px solid hsla(0,91%,71%,.32);color:#fca5a5}.login-info{background:rgba(74,222,128,.08);border:1px solid rgba(74,222,128,.32);color:#86efac}.login-switch{margin-top:20px;text-align:center;font-size:13px;color:var(--fg-3)}.login-switch button{background:none;border:none;color:var(--accent);cursor:pointer;font-size:inherit;font-family:inherit;padding:0;text-decoration:underline;text-underline-offset:3px}.login-switch button:hover{color:var(--fg)}.login-foot{margin:0 auto;font-size:12px;color:var(--fg-faint);text-align:center}.login-spinner svg{animation:login-spin .9s linear infinite;margin-left:4px}@keyframes login-spin{to{transform:rotate(1turn)}}