.login-body{background:linear-gradient(145deg,#f0f4ff 0,#faf0ff 50%,#eef8ff 100%);min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}.login-card{width:100%;max-width:380px;border-radius:var(--r-2xl);padding:44px 40px 40px;animation:slideUpSpring .5s var(--ease-spring) both}.login-logo{width:68px;height:68px;background:linear-gradient(145deg,#6366f1,#8b5cf6);border-radius:20px;display:flex;align-items:center;justify-content:center;margin:0 auto 22px;box-shadow:0 6px 24px rgba(99,102,241,.38),0 1px 0 rgba(255,255,255,.3) inset}.login-logo svg{width:34px;height:34px}.login-title{text-align:center;font-size:22px;font-weight:800;color:var(--t1);letter-spacing:-.5px;margin-bottom:6px}.login-sub{text-align:center;font-size:14px;color:var(--t3);margin-bottom:32px;font-weight:500}.field-group{margin-bottom:14px}.field-group label{display:block;font-size:13px;font-weight:600;color:var(--t2);margin-bottom:6px}.field-input{width:100%;padding:13px 16px;background:rgba(255,255,255,.88);border:1.5px solid var(--border);border-radius:var(--r-md);font-size:16px;color:var(--t1);outline:0;transition:border-color .2s var(--ease),box-shadow .2s var(--ease),background .2s var(--ease);font-family:inherit}.field-input:focus{border-color:var(--accent);background:#fff;box-shadow:0 0 0 4px var(--accent-muted)}.field-input::placeholder{color:var(--t4)}.btn-primary{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:13px 22px;background:linear-gradient(135deg,#6366f1,#8b5cf6);border:none;border-radius:var(--r-md);font-size:15px;font-weight:700;color:#fff;cursor:pointer;box-shadow:0 4px 18px var(--accent-glow),0 1px 0 rgba(255,255,255,.25) inset;transition:opacity .18s var(--ease),transform .15s var(--ease-spring),box-shadow .2s var(--ease);font-family:inherit;position:relative;overflow:hidden}.btn-primary::after{content:'';position:absolute;inset:0 0 50% 0;background:linear-gradient(180deg,rgba(255,255,255,.18),transparent);pointer-events:none}.btn-primary:hover{opacity:.92}.btn-primary:active{transform:scale(.97);opacity:.88}.btn-primary:disabled{opacity:.55;cursor:not-allowed}.btn-primary.full-width{width:100%}.error-box{background:#fff0f0;border:1.5px solid #fca5a5;border-radius:var(--r-sm);padding:10px 14px;font-size:13px;color:#dc2626;font-weight:500;margin-bottom:14px;display:none;animation:fadeIn .2s var(--ease) both}