.login{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:80vh;gap:var(--spacing-4xl);padding:var(--spacing-2xl)}.loginCard{width:100%;max-width:380px;padding:var(--spacing-2xl);background:var(--color-surface);border:1px solid var(--border-color);border-radius:var(--radius-md);corner-shape:squircle}.loginTitle{margin:0 0 var(--spacing-xs);font-size:1.5rem;font-weight:600;color:var(--color-text-primary);text-align:center}.loginSubtitle{margin:0 0 var(--spacing-2xl);font-size:.9375rem;color:var(--color-text-secondary);text-align:center}.authForm{display:flex;flex-direction:column;gap:var(--spacing-lg)}.formGroup{display:flex;flex-direction:column;gap:var(--spacing-xs)}.formGroup label{display:flex;justify-content:space-between;align-items:center;font-size:.875rem;font-weight:500;color:var(--color-text-primary)}.formGroup input{padding:var(--spacing-md) var(--spacing-lg);font-size:.9375rem;border:1px solid var(--border-color);border-radius:var(--radius-sm);background:var(--color-background);color:var(--color-text-primary);transition:border-color var(--transition-base),box-shadow var(--transition-base)}:is(.formGroup input)::-moz-placeholder{color:var(--color-text-tertiary)}:is(.formGroup input)::placeholder{color:var(--color-text-tertiary)}:is(.formGroup input):focus{outline:none;border-color:var(--color-primary-base);box-shadow:0 0 0 3px var(--color-primary-light-3)}.formError{padding:var(--spacing-md);font-size:.875rem;color:var(--color-error);background:color-mix(in srgb,var(--color-error) 10%,transparent);border-radius:var(--radius-sm);text-align:center}.authSubmit{width:100%;max-width:20rem;margin:var(--spacing-sm) auto;padding:var(--spacing-md) var(--spacing-lg);font-size:1rem}.authSubmit:disabled{opacity:.7;cursor:not-allowed}.authDivider{display:flex;align-items:center;gap:var(--spacing-lg);margin:var(--spacing-xl) 0}.authDivider:before,.authDivider:after{content:"";flex:1;height:1px;background:linear-gradient(to var(--divider-dir, right),transparent,var(--border-color) 20%,var(--border-color))}.authDivider:before{--divider-dir: right}.authDivider:after{--divider-dir: left}.authDivider span{font-size:.75rem;color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:.08em;font-weight:500}.oauthProviders{min-height:3rem;display:flex;justify-content:center;align-items:center;position:relative}.oauthProviders:not(.ready):before{content:"";position:absolute;width:20px;height:20px;border:2px solid var(--color-primary-light-3);border-top-color:var(--color-primary-base);border-radius:50%;animation:spin 1s linear infinite}.oauthProviders.ready{opacity:1}@keyframes spin{to{transform:rotate(360deg)}}.authSwitch{margin:var(--spacing-xl) 0 0;font-size:.875rem;color:var(--color-text-secondary);text-align:center}.authSwitch a{color:var(--color-primary-base);font-weight:500;text-decoration:none}:is(.authSwitch a):hover{text-decoration:underline}.authSwitchDot{margin:0 var(--spacing-sm);color:var(--color-text-tertiary)}.loginLegal{font-size:.8125rem;color:var(--color-text-tertiary);text-align:center;margin:0;max-width:380px;line-height:1.6}.loginLegal a{color:var(--color-text-secondary);text-decoration:none;transition:color var(--transition-base)}:is(.loginLegal a):focus-visible{outline:2px solid var(--border-color-focus);outline-offset:2px}:is(.loginLegal a):hover{color:var(--color-primary-base);text-decoration:underline}:is(.loginLegal a):focus-visible{border-radius:2px}.loginFallback{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-md);text-align:center;padding:var(--spacing-lg)}.loginFallback p{margin:0;color:var(--color-error);font-weight:500;font-size:.875rem}.loginFallback .subtext{font-size:.8125rem;color:var(--color-text-secondary);font-weight:400}.authSuccess{padding:var(--spacing-lg);font-size:.9375rem;color:var(--color-success);background:color-mix(in srgb,var(--color-success) 10%,transparent);border-radius:var(--radius-sm);text-align:center}.codeInput{font-size:1.5rem;font-weight:600;letter-spacing:.5em;text-align:center;font-family:monospace}.linkButton{background:none;border:none;padding:0;font:inherit;color:var(--color-primary-base);font-weight:500;cursor:pointer;text-decoration:none}.linkButton:hover{text-decoration:underline}.linkButton:disabled{opacity:.7;cursor:not-allowed}
