*{box-sizing:border-box;margin:0;padding:0;font-family:Segoe UI,Hiragino Kaku Gothic ProN,sans-serif}body{background:#f6fcfc;justify-content:center;align-items:center;height:100vh;display:flex}.auth-page{justify-content:center;align-items:center;width:100%;height:100%;display:flex}.auth-card{text-align:center;background:#fff;border-radius:14px;width:min(380px,92vw);padding:48px 36px;animation:.4s ease-out cardFadeIn;position:relative;box-shadow:0 8px 24px #00000014}.auth-title{color:#1f2d2d;letter-spacing:1.5px;margin-bottom:28px;font-size:28px;font-weight:700}.auth-form{flex-direction:column;gap:18px;display:flex}.auth-form label{text-align:left;color:#2b3a3a;letter-spacing:.2px;flex-direction:column;gap:6px;font-size:13px;font-weight:500;animation:.3s both fadeUp;display:flex}.auth-form label:first-child{animation-delay:50ms}.auth-form label:nth-child(2){animation-delay:.1s}.auth-form input{will-change:transform;background:#fafdff;border:1px solid #d6e3e3;border-radius:10px;outline:none;padding:12px;font-size:14px;transition:all .2s}.auth-form input::placeholder{color:#9aa9a9;font-size:13px}.auth-form input:focus{background:#fff;border-color:#2f80ed;box-shadow:0 0 0 4px #2f80ed2e}.auth-form input:not(:placeholder-shown){border-color:#c7d9d9}.auth-form input.error{background:#e74c3c0d;border-color:#e74c3c;box-shadow:0 0 0 3px #e74c3c1f}#loginButton{color:#fff;cursor:pointer;background:#2f80ed;border:none;border-radius:10px;margin-top:10px;padding:12px;font-weight:700;transition:all .2s;box-shadow:0 4px 10px #2f80ed2e}#loginButton:hover{background:#246fce;transform:translateY(-2px);box-shadow:0 6px 16px #2f80ed40}#loginButton:active{transform:translateY(0)scale(.98);box-shadow:0 2px 6px #2f80ed26}#loginButton:disabled{cursor:not-allowed;box-shadow:none;background:#bcd3f5}.auth-form button.loading{color:#2f4f7f;cursor:not-allowed;box-shadow:none;background:#d6e6fb}.button-spinner{border:2px solid #2f80ed33;border-top-color:#2f80ed;border-radius:50%;width:14px;height:14px;animation:.7s linear infinite spin}.status-message{color:#1f2d2d;background:0 0;border-radius:10px;justify-content:flex-start;align-items:center;gap:8px;min-height:18px;margin-bottom:12px;padding:10px 12px;font-size:13px;display:flex}.status-message.error{color:#c0392b;background:#e74c3c1a;border:1px solid #e74c3c66}.status-message.error-input{color:#d35400;background:#e67e221a;border:1px solid #e67e2259}.status-message.error-network{color:#2f80ed;background:#2f80ed1a;border:1px solid #2f80ed40}.status-message.info{color:#2980b9;background:#3498db14;border:1px solid #3498db33}.status-message.success{color:#1e8f4e;background:#2ecc7114;border:1px solid #2ecc7159;animation:.3s successPop}.password-wrapper{align-items:center;display:flex;position:relative}.password-wrapper input{width:100%;padding-right:44px}.togglePassword{cursor:pointer;color:#6b7c7c;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;padding:4px;transition:all .2s;display:flex;position:absolute;right:10px}.togglePassword:hover{color:#2f80ed;background:#2f80ed14;transform:scale(1.1)}.loading-overlay{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#ffffffb3;border-radius:14px;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.loading-box{color:#2f3b3b;background:#fff;border-radius:10px;padding:12px 16px;font-size:14px;animation:1.2s ease-in-out infinite loadingPulse;box-shadow:0 6px 16px #00000014}.hidden{display:none!important}@keyframes spin{to{transform:rotate(360deg)}}@keyframes cardFadeIn{0%{opacity:0;transform:translateY(10px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes fadeUp{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes loadingPulse{0%,to{opacity:.9;transform:scale(1)}50%{opacity:1;transform:scale(1.02)}}@keyframes successPop{0%{opacity:.6;transform:scale(.98)}to{opacity:1;transform:scale(1)}}@keyframes shake{0%{transform:translate(0)}25%{transform:translate(-3px)}50%{transform:translate(3px)}75%{transform:translate(-2px)}to{transform:translate(0)}}
