/* =========================================================
 * 登录页样式（仅整理：去重/合并/消冲突；不改布局与交互）
 * ======================================================= */

/* ------------------ 基础 ------------------ */
body { background: rgba(255, 255, 255, 0.65); /* 半透明白底 */
  backdrop-filter: blur(14px) saturate(160%) contrast(105%);
  -webkit-backdrop-filter: blur(14px) saturate(160%) contrast(105%); }

.right-sidebar,
.no-login-prompt,
.friendly-link { display:none !important; }

.footer { margin-top:0; background:transparent; }
.footer .normal-show { display:none; }
.footer .normal-hide { display:inline-block; }

/* ------------------ 顶部 ------------------ */
.login-top { height:100px; padding:15px 0; }
.login-top .login-logo { padding-left:30px; width:260px; height:70px; line-height:70px; }
.login-top .login-logo img {
  display:inline-block; vertical-align:middle; max-width:260px; max-height:70px;
}
.login-top .logo-back { height:70px; line-height:70px; padding-right:24px; }

/* ------------------ 页面框架 ------------------ */
.login-content{
  overflow:hidden; padding:100px 140px 50px 0;
  background: rgba(255, 255, 255, 0.65); /* 半透明白底 */
  backdrop-filter: blur(14px) saturate(160%) contrast(105%);
  -webkit-backdrop-filter: blur(14px) saturate(160%) contrast(105%);
  border:2px solid rgba(223,227,241,.5);
  box-shadow:0 4px 4px rgba(0,0,0,.1);
}

.gradient-border{
  position:absolute; top:0; right:0; width:1200px; height:50px;
  padding-left:30px; text-align:left;
  background:linear-gradient(270deg,#B3CAFF 0%,#3369E3 100%);
  z-index:1;
}
.gradient-border h3{
  display:inline-block; margin-right:10px; line-height:50px;
  font-size:20px; color:#fff;
}
.gradient-border span{ display:inline-block; font-size:12px; color:#fff; }

.ksdl{ margin-top:10px; }
.ksdl a{ font-size:24px; }

/* ------------------ 左图右表单 ------------------ */
.login-content .login-banner{ width:410px; height:345px; margin-left:140px; }
.login-banner img{ width:410px; height:345px; }

.login-content .login-form{
  width:380px; overflow:hidden; padding:30px 40px 30px;
  background:#fff; border:2px solid rgba(223,227,241,.4);
  box-shadow:0 4px 4px rgba(0,0,0,.1);
}
.login-content .login-form h3{
  height:31px; line-height:31px; margin-bottom:25px;
  font-size:24px; color:#333; text-align:center;
}
.login-content .login-form .input-box{
  width:304px; height:46px; margin-bottom:20px;
  border-radius:4px; border:2px solid #dfe3f1;
}
.login-content .login-form .input-box:hover{ border-color:#3369E3; }
.login-content .login-form .input-box:last-child{ margin-bottom:0; }
.login-content .login-form .input-box .input-icon{
  float:left; width:42px; height:42px; line-height:42px; text-align:center;
  background:#f1f6fe; border-radius:2px 0 0 2px;
}
.login-content .login-form .input-box .input-icon i{ display:inline-block; vertical-align:middle; }
.login-content .login-form .input-box .input-text{ float:left; width:256px; }
.login-content .login-form .input-box .input-text.el-input{ height:42px; line-height:42px; }
.login-content .login-form .input-box .input-text.el-input input{
  height:42px; line-height:42px; border:none;
}

.login-content .login-form .reset-psd{ text-align:right; margin:17px 0 18px; }
.login-content .login-form .reset-psd a{ font-size:14px; color:#3c7ee5; line-height:19px; }

.login-content .login-form .input-submit{
  width:300px; height:44px; line-height:44px; display:block;
  background:#3c7ee5; border-radius:2px; color:#fff; text-align:center; font-size:16px;
}
.login-content .login-form .input-submit.disabled{
  background:#cedaee; color:#000 !important; cursor:not-allowed; pointer-events:none;
  opacity:.4; border:2px solid transparent; box-shadow:1px 1px 1px 1px rgba(136,136,136,.5);
}

.login-content .login-form .input-reg{
  margin-top:17px; height:19px; line-height:19px; font-size:14px; color:#666; text-align:left;
}
.login-content .login-form .input-reg a{ color:#3c7ee5; }

/* 登录方式 tabs */
.login-types{ margin-bottom:20px; }
.login-types>div{
  float:left; width:50%; height:40px; line-height:40px; text-align:center;
  font-size:16px; border-bottom:3px #fff solid; cursor:pointer;
}
.login-types>div:hover,
.login-types>div.selected{ color:#3C7EE5; border-bottom-color:#3C7EE5; }

/* 输入右侧按钮 */
.el-input__suffix{ right:-1px; }
.el-code-btn{ width:100px; color:#3C7EE5; background:#F1F6FE; cursor:pointer; }

/* 统一弹窗底部居中 */
.el-dialog__footer{ text-align:center !important; }

/* ------------------ 协议行（单行不换行） ------------------ */
.nowrap-item{ display:flex; align-items:center; flex-wrap:nowrap; }
.nowrap-links{ white-space:nowrap; }

.el-form-item,
.agree-row{ box-sizing:content-box !important; }

.agree-row{
  width:100%; display:flex; align-items:center; justify-content:center;
  gap:6px; flex-wrap:nowrap;
}
.agree-row .agree-box{ margin-right:2px; }
.agree-row .agree-text{ white-space:nowrap; font-size:13px; color:#555; }

.el-form-checkbox.nowrap-item .el-form-item__content{
  display:inline-flex; align-items:center; gap:6px; white-space:nowrap;
  width:auto !important; max-width:none !important; padding-right:0;
  box-sizing:content-box;
}
.el-form-checkbox.nowrap-item .el-checkbox,
.el-form-checkbox.nowrap-item .el-checkbox__label{ white-space:nowrap; line-height:1; }
.nowrap-links{ display:inline-flex; align-items:baseline; white-space:nowrap; }
.nowrap-links .el-link{ margin-left:0; }
.el-form-item--medium.el-form-checkbox.nowrap-item .el-form-item__content{ width:auto !important; }
.el-form-checkbox.nowrap-item .el-form-item__content{ margin-left:0 !important; }
.el-link.el-link--primary{ margin-left:-5px !important; }

.checkbox-container{ width:350px; }

/* ------------------ 微信二维码弹窗（作用域化样式） ------------------ */
.qr-code-wx .el-dialog{
  border-radius:8px; overflow:hidden; background: linear-gradient(135deg, rgba(255,255,255,0.2), rgba(255,255,255,0.4));
 position:relative;
  box-shadow:0 12px 28px rgba(0,200,100,.35), 0 20px 40px rgba(0,200,100,.18);
  animation:smokeFloat 6s ease-in-out infinite alternate;
  will-change:box-shadow,transform; backface-visibility:hidden; transform:translateZ(0);
}
.qr-code-wx .el-dialog::after{
  content:""; position:absolute; inset:-20px; border-radius:16px;
  background:
    radial-gradient(circle at 30% 40%, rgba(0,255,120,.25), transparent 70%),
    radial-gradient(circle at 70% 60%, rgba(0,220,100,.15), transparent 80%);
  filter:blur(20px); z-index:-1; animation:smokeMove 10s ease-in-out infinite alternate;
  will-change:transform,opacity;
}
.qr-code-wx .el-dialog__header{
  position:relative; padding:10px 56px 6px 12px; border-bottom:0;
}
.qr-code-wx .el-dialog__headerbtn{
  position:absolute; top:6px; right:6px; width:44px; height:44px;
  display:flex; align-items:center; justify-content:center; border-radius:10px;
  transition:background-color .15s ease, box-shadow .15s ease; z-index:3;
}
.qr-code-wx .el-dialog__close{ font-size:20px; line-height:1; }
.qr-code-wx .el-dialog__headerbtn:hover{ background:#ecf5ff; }
.qr-code-wx .el-dialog__headerbtn:active{ background:#d9ecff; }
.qr-code-wx .el-dialog__headerbtn:focus-visible{ outline:0; box-shadow:0 0 0 2px rgba(64,158,255,.25); }
.qr-code-wx .el-dialog__body{ padding:20px; } /* 收敛：不再使用全局 .el-dialog__body */

.qr-header{ text-align:center; margin-bottom:8px; }
.qr-header .iconfont{ font-size:28px; vertical-align:middle; margin-right:6px; color:#07c160; }
.qr-title{ font-size:18px; font-weight:700; line-height:1.4; color:#222; }
.qr-subtitle{ font-size:12px; color:#8c8c8c; margin-top:2px; }

.qr-card{ padding:14px 14px 10px; }
.qr-box{
  position:relative; width:260px; height:260px; margin:0 auto 10px;
  display:grid; place-items:center; overflow:hidden;
  border-radius:10px; background: linear-gradient(135deg, rgba(255,255,255,0.2), rgba(255,255,255,0.4));
 border:2px solid #f2f3f7;
}
.qr-img{ width:220px; height:220px; object-fit:contain; image-rendering:pixelated; border-radius:6px; }

.qr-anim-scope{ contain:layout style; }
.qr-ring{
  position:absolute; inset:6px; border-radius:8px; pointer-events:none;
  -webkit-mask:radial-gradient(farthest-side, transparent calc(100% - 2px), #000 0);
          mask:radial-gradient(farthest-side, transparent calc(100% - 2px), #000 0);
  background:conic-gradient(from 0deg,
    rgba(7,193,96,0.00) 0%,
    rgba(7,193,96,0.55) 10%,
    rgba(7,193,96,0.00) 25%,
    rgba(7,193,96,0.45) 40%,
    rgba(7,193,96,0.00) 55%,
    rgba(7,193,96,0.35) 70%,
    rgba(7,193,96,0.00) 85%,
    rgba(7,193,96,0.55) 95%,
    rgba(7,193,96,0.00) 100%);
  transform:rotate(0deg); will-change:transform; animation:ringRotate 3.6s linear infinite; animation-play-state:paused;
}
.anim-active .qr-ring{ animation-play-state:running; }
@keyframes ringRotate{ to{ transform:rotate(360deg); } }

.qr-glint{
  --accent:7,193,96; --alpha-strong:.90; --alpha-soft:.18; --scan-duration:2.6s;
  position:absolute; inset:0; pointer-events:none; mix-blend-mode:screen;
}
.qr-glint::before,
.qr-glint::after{
  content:""; position:absolute; left:-20%; right:-20%; will-change:transform;
  height:38%; top:-50%; transform:translateY(0); border-radius:10px; filter:blur(.2px);
  animation:qrScan var(--scan-duration) cubic-bezier(.4,0,.2,1) infinite; animation-play-state:paused;
}
.qr-glint::before{
  background:linear-gradient(to bottom,
    rgba(var(--accent),0) 0%,
    rgba(var(--accent), var(--alpha-soft)) 35%,
    rgba(255,255,255, var(--alpha-strong)) 50%,
    rgba(var(--accent), var(--alpha-soft)) 65%,
    rgba(var(--accent),0) 100%);
}
.qr-glint::after{
  height:30%; top:-45%; animation-delay:.22s;
  background:linear-gradient(to bottom,
    rgba(var(--accent),0) 0%,
    rgba(var(--accent),.12) 45%,
    rgba(255,255,255,.35) 55%,
    rgba(var(--accent),.12) 65%,
    rgba(var(--accent),0) 100%);
}
.anim-active .qr-glint::before,
.anim-active .qr-glint::after{ animation-play-state:running; }
.scan-paused .qr-glint::before,
.scan-paused .qr-glint::after{ animation-play-state:paused !important; }

@keyframes qrScan{ 0%{ transform:translateY(0); } 100%{ transform:translateY(220px); } }

.qr-mask{
  position:absolute; inset:0; display:grid; place-items:center;
  background:rgba(255,255,255,.78); backdrop-filter:blur(3px);
  border-radius:10px; z-index:2;
}
.qr-mask-inner{ text-align:center; padding:10px 12px; }
.qr-mask-title{ font-size:14px; font-weight:600; color:#222; }
.qr-mask-sub{ font-size:12px; color:#666; margin:4px 0 10px; }
.qr-mask-actions .el-button + .el-button{ margin-left:6px; }

.pulse-cta{ position:relative; }
.pulse-cta::after{
  content:""; position:absolute; inset:-6px; border-radius:12px;
  border:2px solid rgba(7,193,96,.25); transform:scale(.92); opacity:0; pointer-events:none;
}
.anim-active .qr-mask .pulse-cta::after{ animation:pulseRing 1.8s ease-out infinite; }
@keyframes pulseRing{
  0%{ transform:scale(.92); opacity:0; }
  40%{ transform:scale(1.05); opacity:1; }
  100%{ transform:scale(1.18); opacity:0; }
}

.qr-tips{ color:#008D55; }

/* ------------------ 动画与首选项 ------------------ */
@keyframes smokeFloat{
  0%{   box-shadow:0 10px 20px rgba(0,200,100,.35), 0 20px 40px rgba(0,200,100,.15); }
  50%{  box-shadow:0 14px 32px rgba(0,230,120,.5), 0 26px 60px rgba(0,230,120,.22); }
  100%{ box-shadow:0 18px 36px rgba(0,200,100,.4), 0 30px 70px rgba(0,200,100,.2); }
}
@keyframes smokeMove{
  0%{   transform:translate(-5px,-5px) scale(1);   opacity:.6; }
  50%{  transform:translate( 5px,10px) scale(1.1); opacity:.8; }
  100%{ transform:translate(-8px, 4px) scale(1.05); opacity:.65; }
}
@media (prefers-reduced-motion: reduce){
  .qr-code-wx .el-dialog,
  .qr-code-wx .el-dialog::after,
  .qr-ring,
  .qr-glint::before,
  .qr-glint::after,
  .anim-active .qr-mask .pulse-cta::after{ animation:none !important; }
}

/* ------------------ 响应式 ------------------ */
@media (max-width:420px){
  .qr-code-wx .el-dialog{ width:92% !important; }
  .qr-code-wx .el-dialog__header{ padding-right:64px; }
  .qr-code-wx .el-dialog__headerbtn{ width:48px; height:48px; top:4px; right:4px; }
  .qr-code-wx .el-dialog__close{ font-size:22px; }
  .qr-box{ width:220px; height:220px; }
  .qr-img{ width:188px; height:188px; }
  @keyframes qrScan{ 0%{ transform:translateY(0); } 100%{ transform:translateY(188px); } }
}

/* ------------------ 蒙层 ------------------ */
.v-modal{ background:rgba(15,23,42,.6) !important; }
