:root{--purple:#6c5ce7;--purple-dark:#5747d8;--ink:#29263a;--muted:#918da2;--line:#e9e7f0}*{box-sizing:border-box}.auth-body{min-height:100vh;margin:0;background:#f7f7fb;color:var(--ink);font-family:"PingFang SC","Microsoft YaHei",system-ui,-apple-system,sans-serif;-webkit-font-smoothing:antialiased}.auth-body a{text-decoration:none}.auth-header{height:76px;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(24px,5vw,76px);position:absolute;top:0;left:0;right:0;z-index:5}.auth-brand{display:flex;align-items:center;gap:11px;color:#fff}.auth-brand>span,.mobile-logo{width:40px;height:40px;border-radius:12px;background:linear-gradient(145deg,#806cf2,#5a48db);color:#fff;display:grid;place-items:center;font-size:20px;font-weight:800;box-shadow:0 7px 18px rgba(47,35,129,.25);transform:rotate(-3deg)}.auth-brand b{display:block;font-size:16px;letter-spacing:1px;color:inherit;text-shadow:0 1px 4px rgba(44,31,112,.22)}.auth-brand small{display:block;font-size:9px;color:rgba(255,255,255,.72);opacity:1;margin-top:2px}.back-home{color:#777287;font-size:12px}.back-home span{margin-left:7px;color:var(--purple)}.auth-main{min-height:100vh}.auth-wrap{min-height:100vh;display:grid;grid-template-columns:minmax(430px,47%) 1fr}.auth-visual{position:relative;overflow:hidden;padding:140px clamp(38px,6vw,92px) 54px;color:#fff;background:linear-gradient(145deg,#5947ce 0%,#7460e4 58%,#806ced 100%);display:flex;flex-direction:column}.auth-visual:before,.auth-visual:after{content:"";position:absolute;border:1px solid #fff1;border-radius:50%}.auth-visual:before{width:520px;height:520px;right:-300px;top:-200px}.auth-visual:after{width:420px;height:420px;left:-250px;bottom:-220px}.visual-copy{position:relative;z-index:2}.visual-badge{display:inline-block;padding:6px 10px;border-radius:20px;background:#ffffff16;border:1px solid #ffffff25;font-size:10px;letter-spacing:1px}.visual-copy h1{font-size:clamp(31px,3.2vw,48px);line-height:1.35;margin:21px 0 12px;letter-spacing:1px}.visual-copy h1 em{display:inline;font-style:normal;color:#ffe370}.visual-copy p{font-size:13px;opacity:.7}.study-scene{position:relative;height:330px;margin-top:8px}.scene-ring{position:absolute;border:1px solid #ffffff18;border-radius:50%}.scene-ring.one{width:280px;height:280px;left:50%;top:15px;transform:translateX(-50%)}.scene-ring.two{width:210px;height:210px;left:50%;top:50px;transform:translateX(-50%)}.scene-book{position:absolute;width:128px;height:150px;left:50%;top:70px;transform:translateX(-50%) rotate(-6deg);border-radius:9px 20px 20px 9px;background:linear-gradient(145deg,#ffdc68,#ffb640);box-shadow:18px 20px 0 #36268c45}.scene-book:before{content:"";position:absolute;left:14px;width:6px;height:100%;background:#fff6}.scene-book span{width:44px;height:44px;border:3px solid #fff;border-radius:50%;display:grid;place-items:center;margin:42px auto;color:#fff;font-size:26px;font-weight:bold}.scene-card{position:absolute;background:#fff;border-radius:12px;padding:12px 14px;color:#302c43;box-shadow:0 12px 30px #31228155}.scene-card b{display:block;color:var(--purple);font-size:20px}.scene-card small{display:block;color:#9d99aa;font-size:9px;margin:2px 0 8px}.scene-card i{display:block;width:90px;height:4px;background:#eee;border-radius:4px}.scene-card i em{display:block;width:76%;height:100%;background:#73c9aa;border-radius:4px}.card-progress{left:4%;top:42px;transform:rotate(-3deg)}.card-days{right:1%;top:185px;transform:rotate(4deg)}.card-days b{color:#ff8d66}.visual-tip{display:flex;gap:10px;align-items:flex-start;position:relative;z-index:2;padding-top:18px;border-top:1px solid #ffffff20}.visual-tip>span{font:32px Georgia;color:#ffe370}.visual-tip p{font-size:12px;line-height:1.8;margin:0}.visual-tip small{display:block;font-size:9px;opacity:.6}.auth-panel{background:#fff;display:flex;flex-direction:column;justify-content:center;padding:110px clamp(40px,9vw,150px) 80px}.form-heading{margin-bottom:30px}.form-heading h2{font-size:28px;margin:0 0 9px;font-weight:700}.form-heading p{color:var(--muted);font-size:12px;margin:0}.mobile-logo{display:none}.modern-form{max-width:470px}.field{margin-bottom:18px}.field label{display:block;font-size:12px;font-weight:600;margin:0 0 8px}.input-wrap{height:48px;border:1px solid var(--line);border-radius:11px;display:flex;align-items:center;padding:0 13px;transition:.2s;background:#fff}.input-wrap:focus-within{border-color:#8a7bed;box-shadow:0 0 0 3px #6c5ce712}.input-icon{width:25px;color:#aaa6b7;font-size:16px}.input-wrap input{height:100%;min-width:0;flex:1;border:0!important;box-shadow:none!important;outline:0;background:transparent;font-size:12px;padding:0!important}.input-wrap input::placeholder{color:#b6b2bf}.password-toggle{border:0;background:transparent;color:#aaa6b7;padding:8px;cursor:pointer}.help-block{font-size:10px;margin:4px 0 0;color:#ef637c}.has-error .input-wrap{border-color:#ef637c}.form-options{display:flex;align-items:center;justify-content:space-between;margin:-1px 0 22px;font-size:11px}.check{display:flex!important;align-items:center;gap:7px;color:#777386;font-weight:400!important;cursor:pointer}.check input{position:absolute;opacity:0}.check>span{width:16px;height:16px;border:1px solid #cbc8d5;border-radius:5px;display:grid;place-items:center;color:transparent;font-size:10px}.check input:checked+span{background:var(--purple);border-color:var(--purple);color:#fff}.btn-forgot{color:var(--purple)}.submit-button{width:100%;height:49px;border:0;border-radius:11px;background:linear-gradient(120deg,var(--purple),#7968eb);color:#fff;font-size:13px;font-weight:700;cursor:pointer;box-shadow:0 10px 22px #6c5ce72d;transition:.2s}.submit-button:hover{transform:translateY(-1px);box-shadow:0 13px 25px #6c5ce73d}.submit-button span{margin-left:12px}.switch-auth{text-align:center;color:#9793a4;font-size:11px;margin:18px 0}.switch-auth a{color:var(--purple);font-weight:600;margin-left:4px}.trust-row{max-width:470px;display:flex;justify-content:space-between;border-top:1px solid #f0eef4;padding-top:22px;color:#aaa6b5;font-size:9px}.trust-row span:before{color:#66bfa2}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:13px}.agreement{font-size:10px;margin:4px 0 17px!important}.agreement a{color:var(--purple)}.register-panel{padding-top:90px;padding-bottom:50px}.register-panel .form-heading{margin-bottom:22px}.register-panel .field{margin-bottom:13px}.captcha-field .input-group{display:flex;width:100%}.captcha-field .form-control{height:46px;border:1px solid var(--line);border-radius:10px 0 0 10px;box-shadow:none}.captcha-field .input-group-btn .btn{height:46px;display:flex;align-items:center;border:0;background:var(--purple);font-size:11px}.captcha-field img{height:46px!important;border-radius:0 9px 9px 0;cursor:pointer}.auth-footer{position:absolute;right:clamp(40px,9vw,150px);bottom:22px;display:flex;gap:16px;color:#aaa6b5;font-size:9px}.auth-footer a{color:#aaa6b5}.reset-form{padding:20px 15px}.reset-form .btn-primary{background:var(--purple);border-color:var(--purple)}
@media(max-width:900px){.auth-wrap{grid-template-columns:1fr}.auth-visual{display:none}.auth-header{position:relative;height:70px;background:#fff}.auth-brand{color:var(--ink)}.auth-brand b{color:var(--ink);text-shadow:none}.auth-brand small{color:#8e899c}.auth-brand>span{background:var(--purple);color:#fff}.auth-panel{min-height:calc(100vh - 70px);padding:45px max(24px,12vw) 100px}.modern-form,.trust-row{max-width:560px;width:100%;margin-left:auto;margin-right:auto}.form-heading{max-width:560px;width:100%;margin-left:auto;margin-right:auto}.auth-footer{position:relative;right:auto;bottom:auto;justify-content:center;margin-top:-55px;padding-bottom:25px}.mobile-logo{display:none}}
@media(max-width:560px){.auth-header{padding:0 18px}.auth-brand small{display:none}.back-home{font-size:0}.back-home span{font-size:18px}.auth-panel{justify-content:flex-start;padding:34px 20px 90px}.form-heading h2{font-size:24px}.field-row{grid-template-columns:1fr;gap:0}.trust-row{gap:8px;flex-wrap:wrap}.auth-footer span{display:none}.register-panel{padding-top:25px}.register-panel .field{margin-bottom:14px}}

/* Readable Chinese typography: body copy never drops below 12px. */
.auth-brand b{font-size:18px}.auth-brand small{font-size:11px}.back-home{font-size:14px}.visual-badge{font-size:12px;padding:7px 12px}.visual-copy p{font-size:15px;line-height:1.8}.visual-tip p{font-size:14px}.visual-tip small{font-size:11px}.scene-card small{font-size:11px}.form-heading h2{font-size:30px}.form-heading p{font-size:14px;line-height:1.7}.field{margin-bottom:20px}.field label{font-size:14px;margin-bottom:9px}.input-wrap{height:52px}.input-wrap input{font-size:14px}.input-icon{font-size:18px}.form-options{font-size:13px}.submit-button{height:52px;font-size:15px}.switch-auth{font-size:13px;margin-top:20px}.trust-row{font-size:11px;line-height:1.6}.agreement{font-size:12px}.help-block{font-size:12px}.captcha-field .form-control,.captcha-field .input-group-btn .btn,.captcha-field img{height:50px!important}.captcha-field .input-group-btn .btn{font-size:13px}.auth-footer{font-size:11px}
.third-divider{max-width:470px;margin:20px 0 14px;display:flex;align-items:center;color:#aaa6b5;font-size:12px}.third-divider:before,.third-divider:after{content:"";height:1px;background:#eceaf1;flex:1}.third-divider span{padding:0 13px}.wechat-login-button{max-width:470px;height:50px;border:1px solid #dce9df;border-radius:11px;color:#26352a;display:flex;align-items:center;justify-content:center;gap:10px;background:#f7fcf8;font-size:14px;font-weight:600}.wechat-login-button:hover{border-color:#07c160;background:#f0fbf3}.wechat-login-button i,.wechat-guide-card>span{font-style:normal;width:30px;height:30px;border-radius:9px;background:#07c160;color:#fff;display:grid;place-items:center;font-weight:800}.wechat-guide-wrap .wechat-visual-mark{width:150px;height:150px;margin:auto;border-radius:38px;background:#07c160;display:grid;place-items:center;font-size:72px;font-weight:800;box-shadow:0 25px 60px #30248b55}.wechat-guide-card{max-width:470px;text-align:center;padding:30px;border:1px solid #e7e5ed;border-radius:16px;background:#fafafa}.wechat-guide-card>span{width:58px;height:58px;border-radius:16px;margin:0 auto;font-size:25px}.wechat-guide-card h3{font-size:18px;margin:15px 0 8px}.wechat-guide-card p{font-size:13px;color:#858091;line-height:1.7}.wechat-guide-card button{height:42px;padding:0 22px;border:0;border-radius:9px;background:#07c160;color:#fff;cursor:pointer}.wechat-guide-card small{display:block;margin-top:16px;color:#a19cab;line-height:1.6}.wechat-back-login{display:inline-block;margin-top:20px;color:var(--purple)}
.wechat-qr-card{width:330px;max-width:100%;padding:18px 20px 22px;text-align:center;border:1px solid #e7e5ed;border-radius:16px;background:#fafafa}.wechat-qr-card #wechatQrContainer{width:288px;max-width:100%;min-height:300px;margin:0 auto;overflow:hidden}.wechat-qr-card iframe{width:300px!important;max-width:100%;height:400px!important;margin:-8px 0 -72px;border:0}.wechat-qr-loading{height:288px;display:grid;place-items:center;color:#999}.wechat-qr-card p{margin:15px 0 5px;font-size:14px;color:#4a4653}.wechat-qr-card small{color:#9993a2}
.mini-register-trigger{border:0;background:transparent;padding:0;color:var(--purple);font:inherit;font-weight:600;cursor:pointer}.mini-register-trigger:hover{text-decoration:underline}.mini-register-modal{position:fixed;inset:0;z-index:1200;display:grid;place-items:center;padding:20px;visibility:hidden;opacity:0;transition:opacity .2s ease,visibility .2s ease}.mini-register-modal.is-open{visibility:visible;opacity:1}.mini-register-backdrop{position:absolute;inset:0;width:100%;height:100%;border:0;background:rgba(27,23,45,.58);backdrop-filter:blur(3px);cursor:default}.mini-register-dialog{position:relative;width:390px;max-width:100%;padding:28px 30px 25px;border-radius:20px;background:#fff;box-shadow:0 24px 70px rgba(31,24,69,.28);transform:translateY(12px) scale(.98);transition:transform .2s ease}.mini-register-modal.is-open .mini-register-dialog{transform:none}.mini-register-close{position:absolute;right:14px;top:12px;width:34px;height:34px;border:0;border-radius:50%;background:#f3f2f7;color:#777287;font-size:23px;line-height:1;cursor:pointer}.mini-register-close:hover{background:#ebe9f2;color:#3f394d}.mini-register-heading{display:flex;align-items:center;gap:12px;margin-bottom:17px}.mini-register-heading>span{width:42px;height:42px;border-radius:12px;background:#07c160;color:#fff;display:grid;place-items:center;font-weight:800;font-size:19px}.mini-register-heading h3{margin:0 0 4px;font-size:19px;color:#29263a}.mini-register-heading p{margin:0;color:#918da2;font-size:12px}.mini-register-qr{width:246px;height:246px;margin:0 auto;padding:9px;border:1px solid #ebe9f0;border-radius:17px;background:#fff;box-shadow:0 9px 30px rgba(35,29,65,.08)}.mini-register-qr img{display:block;width:100%;height:100%;object-fit:contain;border-radius:10px}.mini-register-tip{margin:17px 0 10px;text-align:center;color:#5e596a;font-size:13px;line-height:1.7}.mini-register-tip b{color:#252231}.mini-register-note{padding:10px 13px;border-radius:10px;background:#f5fbf7;color:#5f7867;font-size:11px;line-height:1.7;text-align:center}.mini-register-open{overflow:hidden}
@media(max-width:560px){.mini-register-dialog{padding:24px 20px 21px}.mini-register-qr{width:220px;height:220px}.mini-register-heading h3{font-size:18px}}

/* Solid header keeps the brand readable regardless of the panel underneath. */
.auth-header{position:absolute;background:#fff;border-bottom:1px solid #ece9f3;box-shadow:0 2px 12px rgba(45,38,82,.04)}
.auth-brand{color:#302b43}
.auth-brand b{color:#302b43;text-shadow:none}
.auth-brand small{color:#817b91}
.auth-brand>span{background:linear-gradient(145deg,#806cf2,#5a48db);color:#fff}

/* Mini program login */
.mini-login-wrap{grid-template-columns:minmax(440px,45%) 1fr}.mini-login-visual{padding-bottom:38px}.mini-login-visual .visual-copy h1{margin-top:18px}.mini-login-scene{position:relative;flex:1;min-height:330px;margin-top:10px}.mini-scene-glow{position:absolute;width:260px;height:260px;left:50%;top:35px;transform:translateX(-50%);border-radius:50%;background:radial-gradient(circle,#ffffff26 0,#ffffff08 55%,transparent 72%)}.mini-phone{position:absolute;left:50%;top:30px;width:178px;height:270px;transform:translateX(-50%) rotate(-2deg);padding:48px 18px 18px;border:7px solid #34277d;border-radius:28px;background:linear-gradient(160deg,#fff,#f4f1ff);color:#302a47;text-align:center;box-shadow:20px 25px 45px #33258455}.mini-phone-speaker{position:absolute;top:14px;left:50%;width:52px;height:5px;transform:translateX(-50%);border-radius:5px;background:#d9d4e8}.mini-phone-logo{width:65px;height:65px;margin:0 auto 13px;border-radius:19px;display:grid;place-items:center;background:linear-gradient(145deg,#806cf2,#5a48db);color:#fff;font-size:29px;font-weight:800;box-shadow:0 10px 22px #6553d54a;transform:rotate(-3deg)}.mini-phone b,.mini-phone small{display:block}.mini-phone b{font-size:16px}.mini-phone small{margin-top:4px;color:#9a94a8;font-size:11px}.mini-phone>span{display:block;margin-top:25px;padding:9px 5px;border-radius:9px;background:#eaf8f1;color:#36a47c;font-size:11px;font-weight:700}.mini-scene-card{position:absolute;display:flex;align-items:center;gap:10px;min-width:138px;padding:11px 13px;border:1px solid #ffffff38;border-radius:13px;background:#ffffffed;color:#39334b;box-shadow:0 14px 28px #31237940}.mini-scene-card>i{width:31px;height:31px;border-radius:9px;display:grid;place-items:center;background:#eeeaff;color:#6c5ce7;font-style:normal;font-weight:800}.mini-scene-card b,.mini-scene-card small{display:block}.mini-scene-card b{font-size:12px}.mini-scene-card small{margin-top:2px;color:#9b96a5;font-size:9px}.scene-scan{left:2%;top:65px;transform:rotate(-4deg)}.scene-sync{right:0;top:210px;transform:rotate(4deg)}.scene-sync>i{background:#e9f8f2;color:#37ad82}.mini-visual-points{position:relative;z-index:2;padding-top:17px;border-top:1px solid #ffffff20;display:flex;justify-content:space-between;gap:10px;color:#e5e1ff;font-size:11px}.mini-visual-points i{display:inline-grid;place-items:center;width:18px;height:18px;margin-right:5px;border-radius:50%;background:#ffffff19;color:#ffe270;font-style:normal}.mini-login-panel{padding-top:100px;padding-bottom:55px}.mini-login-content{width:400px;max-width:100%;margin:auto}.mini-login-heading{display:flex;align-items:center;gap:13px;margin-bottom:14px}.mini-mobile-logo{width:47px;height:47px;border-radius:14px;display:none;place-items:center;background:linear-gradient(145deg,#806cf2,#5a48db);color:#fff;font-size:21px;font-weight:800;box-shadow:0 8px 18px #6250d238}.mini-login-heading small{display:block;color:#8a7de1;font-size:10px;font-weight:700;letter-spacing:1.5px}.mini-login-heading h2{margin:4px 0 0;font-size:27px;color:#2d293b}.mini-login-status{height:34px;margin:0 0 14px;padding:0 12px;border-radius:9px;display:flex;align-items:center;justify-content:center;background:#f5f3ff;color:#665b82;font-size:12px}.mini-login-status i{width:7px;height:7px;margin-right:7px;border-radius:50%;background:#6c5ce7;box-shadow:0 0 0 4px #6c5ce714;animation:miniStatusPulse 1.8s infinite}.mini-login-status.is-success{background:#eaf8f1;color:#278b68}.mini-login-status.is-success i{background:#32ab7c}.mini-login-status.is-error{background:#fff1f2;color:#c85667}.mini-login-status.is-error i{background:#df6476}@keyframes miniStatusPulse{50%{box-shadow:0 0 0 7px transparent}}.mini-qr-card{padding:15px 18px 13px;border:1px solid #e8e4f0;border-radius:19px;background:#fff;box-shadow:0 14px 45px rgba(45,36,91,.09)}.mini-qr-box{position:relative;width:238px;height:238px;margin:auto;padding:12px;background:#fff}.mini-qr-box img{display:block;width:100%;height:100%;object-fit:contain;border-radius:8px}.qr-corner{position:absolute;width:21px;height:21px;border-color:#7663e4;border-style:solid;z-index:2}.qr-corner.top-left{left:0;top:0;border-width:3px 0 0 3px;border-radius:7px 0 0}.qr-corner.top-right{right:0;top:0;border-width:3px 3px 0 0;border-radius:0 7px 0 0}.qr-corner.bottom-left{left:0;bottom:0;border-width:0 0 3px 3px;border-radius:0 0 0 7px}.qr-corner.bottom-right{right:0;bottom:0;border-width:0 3px 3px 0;border-radius:0 0 7px}.mini-qr-expired{display:none;position:absolute;inset:4px;z-index:3;border-radius:10px;background:rgba(255,255,255,.96);align-items:center;justify-content:center;flex-direction:column;text-align:center}.mini-qr-expired.show{display:flex}.mini-qr-expired>span{font-size:27px;color:#7664df}.mini-qr-expired b{margin-top:7px;font-size:15px;color:#494354}.mini-qr-expired small{margin-top:4px;color:#9993a3;font-size:10px}.mini-qr-expired button{height:36px;margin-top:14px;padding:0 16px;border:0;border-radius:9px;background:#6c5ce7;color:#fff;font-size:12px;font-weight:700;cursor:pointer}.mini-qr-caption{display:flex;align-items:center;justify-content:center;gap:9px;margin-top:11px;padding-top:12px;border-top:1px solid #f0edf4;text-align:left}.wechat-symbol{width:33px;height:33px;border-radius:10px;display:grid;place-items:center;background:#07c160;color:#fff;font-size:13px;font-weight:800}.mini-qr-caption b,.mini-qr-caption small{display:block}.mini-qr-caption b{font-size:12px}.mini-qr-caption small{margin-top:2px;color:#9994a4;font-size:10px}.mini-login-flow{display:flex;align-items:center;justify-content:center;margin:17px 0 14px}.mini-login-flow span{display:flex;align-items:center;gap:5px;color:#6f697d;font-size:10px}.mini-login-flow span i{width:20px;height:20px;border-radius:50%;display:grid;place-items:center;background:#ede9ff;color:#6856d5;font-style:normal;font-weight:800}.mini-login-flow em{width:28px;height:1px;margin:0 6px;background:#ded9ea}.mini-account-note{display:grid;grid-template-columns:1fr 1fr;gap:8px}.mini-account-note p{display:flex;align-items:center;gap:8px;margin:0;padding:10px;border-radius:10px;background:#f8f7fb}.mini-account-note p>i{width:27px;height:27px;flex:none;border-radius:8px;display:grid;place-items:center;background:#eeeaff;color:#6c5ce7;font-size:10px;font-style:normal;font-weight:800}.mini-account-note p:last-child>i{background:#e9f8f2;color:#32a87c}.mini-account-note b,.mini-account-note small{display:block}.mini-account-note b{font-size:10px}.mini-account-note small{margin-top:2px;color:#9b96a4;font-size:9px;white-space:nowrap}.mini-back-home{display:block;margin-top:16px;text-align:center;font-size:12px}
@media(max-width:900px){.mini-login-panel{min-height:calc(100vh - 70px);padding:28px 24px 85px}.mini-login-content{width:390px}.mini-mobile-logo{display:grid}.mini-login-heading h2{font-size:24px}}
@media(max-width:480px){.mini-login-panel{padding:23px 16px 80px}.mini-login-heading{margin-bottom:11px}.mini-login-heading h2{font-size:21px}.mini-login-heading small{font-size:9px}.mini-login-status{font-size:11px}.mini-qr-card{padding:13px}.mini-qr-box{width:218px;height:218px}.mini-account-note{grid-template-columns:1fr}.mini-account-note p{padding:9px 11px}.mini-login-flow em{width:15px;margin:0 3px}.mini-login-flow span b{font-size:9px}.mini-back-home{margin-top:13px}}

/* Keep the login footer as one balanced row below the right-side login panel. */
.auth-footer{left:45%;right:0;bottom:20px;align-items:center;justify-content:center;gap:0;width:auto;white-space:nowrap}.auth-footer span,.auth-footer a{display:inline-flex;align-items:center;line-height:1}.auth-footer a{margin-left:16px}.auth-footer a+a:before{content:"";width:1px;height:10px;margin-right:16px;background:#ddd9e6}
@media(max-width:900px){.auth-footer{left:auto;right:auto;bottom:auto;width:100%;margin:-55px 0 0;padding:0 20px 25px;flex-wrap:nowrap}}
@media(max-width:560px){.auth-footer{gap:0;margin-top:-48px;overflow:hidden}.auth-footer span{display:inline-flex}.auth-footer a{margin-left:11px}.auth-footer a+a:before{margin-right:11px}}
