.auth-page{background:var(--bg-primary);grid-template-columns:1.1fr 1fr;min-height:100vh;display:grid}.auth-visual{justify-content:space-between;gap:var(--s-7);padding:var(--s-7);background:var(--bg-secondary);border-right:1px solid var(--border-color);flex-direction:column;display:flex}.auth-visual-logo{text-decoration:none}.auth-visual-copy{max-width:26rem}.auth-visual-copy h2{font-size:var(--fs-2xl);color:var(--text);margin-bottom:var(--s-4)}.auth-visual-copy p{font-size:var(--fs-md);color:var(--text-2);line-height:1.6}.auth-visual-modules{border-top:1px solid var(--line);max-width:26rem;margin:0;padding:0;list-style:none}.auth-visual-modules li{padding:var(--s-2)0;border-bottom:1px solid var(--line);font-size:var(--fs-sm);color:var(--text-2)}.auth-panel{justify-content:center;align-items:center;padding:40px 24px;display:flex}.auth-card{width:100%;max-width:420px}.auth-card-logo{margin-bottom:32px;text-decoration:none;display:none}.auth-card h1{letter-spacing:-.02em;margin-bottom:8px;font-size:32px;font-weight:600}.auth-subtitle{color:var(--text-secondary);margin-bottom:32px;font-size:15px}.auth-error{background:color-mix(in srgb,var(--bad)10%,transparent);border:1px solid color-mix(in srgb,var(--bad)30%,transparent);color:var(--bad);border-radius:var(--r-2);margin-bottom:20px;padding:12px 16px;font-size:14px;font-weight:500}.auth-success{background:color-mix(in srgb,var(--ok)10%,transparent);border:1px solid color-mix(in srgb,var(--ok)30%,transparent);color:var(--ok);border-radius:var(--r-2);margin-bottom:20px;padding:12px 16px;font-size:14px;font-weight:500}.auth-form{flex-direction:column;gap:20px;display:flex}.auth-field-row{grid-template-columns:1fr 1fr;gap:16px;display:grid}.auth-field{flex-direction:column;gap:8px;display:flex}.auth-field label{color:var(--text-secondary);font-size:13px;font-weight:600}.auth-field-label-row{justify-content:space-between;align-items:baseline;display:flex}.auth-forgot-link{color:var(--accent);font-size:13px;font-weight:600;text-decoration:none}.auth-forgot-link:hover{text-decoration:underline}.auth-field-hint{color:var(--text-secondary);opacity:.8;font-size:12px}.auth-field input{border:1px solid var(--border-color);border-radius:var(--r-2);width:100%;color:var(--text-primary);transition:all var(--transition-base);background:#ffffff0d;padding:14px 16px;font-size:15px}.auth-field input:focus{border-color:var(--accent);background:#ffffff14;outline:none}.auth-password-wrapper{display:flex;position:relative}.auth-password-wrapper input{padding-right:46px}.auth-password-toggle{border-radius:var(--r-1);cursor:pointer;width:36px;height:36px;color:var(--text-secondary);transition:all var(--transition-fast);background:0 0;border:none;justify-content:center;align-items:center;display:flex;position:absolute;top:50%;right:4px;transform:translateY(-50%)}.auth-password-toggle:hover{color:var(--text-primary);background:var(--bg-hover)}.auth-password-toggle svg{fill:currentColor;width:18px;height:18px}.auth-password-strength{align-items:center;gap:10px;margin-top:4px;display:flex}.auth-strength-bars{flex:1;gap:4px;display:flex}.auth-strength-bars span{border-radius:var(--r-1);background:var(--bg-hover);height:4px;transition:background var(--transition-base);flex:1}.auth-strength-label{color:var(--text-secondary);white-space:nowrap;font-size:12px;font-weight:600}.auth-submit{background:var(--primary-gradient);border-radius:var(--r-2);width:100%;color:var(--accent-ink);cursor:pointer;transition:all var(--transition-base);border:none;margin-top:4px;padding:15px;font-size:16px;font-weight:600}.auth-submit:disabled{opacity:.6;cursor:not-allowed}.auth-switch{text-align:center;color:var(--text-secondary);margin-top:28px;font-size:14px}.auth-switch a{color:var(--accent);font-weight:600;text-decoration:none}.auth-switch a:hover{text-decoration:underline}.auth-guard-loading{background:var(--bg-primary);flex-direction:column;justify-content:center;align-items:center;gap:20px;min-height:100vh;display:flex}.auth-guard-spinner{border:3px solid var(--border-color);border-top-color:var(--accent);border-radius:50%;width:40px;height:40px;animation:.8s linear infinite authSpin}@keyframes authSpin{to{transform:rotate(360deg)}}@media (max-width:960px){.auth-page{grid-template-columns:1fr}.auth-visual{display:none}.auth-card-logo{display:inline-flex}}@media (max-width:480px){.auth-field-row{grid-template-columns:1fr}.auth-card h1{font-size:26px}}
