/*!
 * KTG-MES 移动端 SCSS 变量定义
 * 参照微信小程序配色方案，与 variables 在 vue.config.js 中 prependData 自动注入所有 .scss 文件
 */.login-page[data-v-029b2990]{min-height:100vh;background:linear-gradient(160deg,#e8eefc,#f5f6fa 40%,#f5f6fa);display:flex;justify-content:center;padding:2rem .8rem;box-sizing:border-box}.login-container[data-v-029b2990]{width:100%;max-width:500px;display:flex;flex-direction:column;align-items:center}.brand-section[data-v-029b2990]{text-align:center;margin-bottom:1.2rem;margin-top:1rem}.brand-section .brand-icon[data-v-029b2990]{width:3.2rem;height:3.2rem;margin:0 auto .6rem;border-radius:50%;background:linear-gradient(135deg,#409eff,#1d6fe0);display:flex;align-items:center;justify-content:center;box-shadow:0 .16rem .48rem rgba(64,158,255,.35)}.brand-section .brand-icon i[data-v-029b2990]{font-size:1.6rem;color:#fff}.brand-section .brand-title[data-v-029b2990]{font-size:1.12rem;font-weight:700;color:#1a1a2e;margin:0 0 .16rem;letter-spacing:.05rem}.brand-section .brand-subtitle[data-v-029b2990]{font-size:.373rem;color:#999;margin:0}.role-tabs[data-v-029b2990]{display:flex;width:100%;background:#e8edf7;border-radius:.32rem;padding:.08rem;margin-bottom:.48rem}.role-tabs .role-tab[data-v-029b2990]{flex:1;text-align:center;padding:.26rem 0;border-radius:.26rem;font-size:.42rem;color:#666;cursor:pointer;transition:all .2s}.role-tabs .role-tab.active[data-v-029b2990]{background:#fff;color:#409eff;font-weight:600;box-shadow:0 .04rem .16rem rgba(0,0,0,.08)}.form-card[data-v-029b2990]{width:100%;background:#fff;border-radius:.4rem;padding:.8rem .8rem 1rem;box-shadow:0 .08rem .4rem rgba(0,0,0,.06)}.form-card .form-label[data-v-029b2990]{font-size:.373rem;color:#333;font-weight:500}[data-v-029b2990] .el-form-item{margin-bottom:.6rem}[data-v-029b2990] .el-input__inner{height:1.2rem;line-height:1.2rem;font-size:.4rem;border-radius:.24rem}[data-v-029b2990] .el-input__prefix{left:.2rem;font-size:.48rem;line-height:1.2rem}[data-v-029b2990] .el-input__suffix{right:.2rem}[data-v-029b2990] .el-input--prefix .el-input__inner{padding-left:.8rem}.password-toggle[data-v-029b2990]{line-height:1.2rem;font-size:.48rem;color:#c0c4cc;cursor:pointer}.password-toggle[data-v-029b2990]:active{color:#409eff}.captcha-row[data-v-029b2990]{display:flex;align-items:center;gap:.32rem}.captcha-row .captcha-input[data-v-029b2990]{flex:1}.captcha-row .captcha-img[data-v-029b2990]{width:2.4rem;height:1.2rem;border-radius:.16rem;overflow:hidden;border:1px solid #dcdfe6;flex-shrink:0;cursor:pointer}.captcha-row .captcha-img img[data-v-029b2990]{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.captcha-row .captcha-placeholder[data-v-029b2990]{width:2.4rem;height:1.2rem;border-radius:.16rem;border:1px dashed #dcdfe6;display:flex;flex-direction:column;align-items:center;justify-content:center;flex-shrink:0;cursor:pointer;color:#c0c4cc;font-size:.32rem;gap:.05rem}.captcha-row .captcha-placeholder i[data-v-029b2990]{font-size:.48rem}.login-btn[data-v-029b2990]{width:100%;height:1.2rem;font-size:.45rem;border-radius:.24rem;letter-spacing:.1rem;border:none;background:linear-gradient(135deg,#409eff,#1d6fe0);margin-top:.2rem}.register-row[data-v-029b2990]{text-align:center;margin-top:.8rem;padding:.2rem;cursor:pointer}.register-row .register-text[data-v-029b2990]{font-size:.373rem;color:#999}.register-row .register-link[data-v-029b2990]{font-size:.373rem;color:#409eff;font-weight:500}.bottom-tip[data-v-029b2990]{text-align:center;font-size:.32rem;color:#bbb;margin-top:1rem}