/* ==========================================================================
   Nova 认证页（登录 / 注册 / 找回密码）共用样式
   方正直角 + 主题蓝，左品牌视觉 / 右表单卡
   ========================================================================== */
:root{
  --nva-primary:#1256d4;
  --nva-deep:#0b2a6b;
  --nva-light:#eef4ff;
  --nva-line:#dbe4f2;
  --nva-text:#0b1526;
  --nva-sub:#64748b;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body.nvauth{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  color:var(--nva-text);background:#f4f8ff}

.nvauth-shell{position:relative;z-index:2;display:grid;grid-template-columns:minmax(340px,38%) 1fr;min-height:100vh}

/* ---------- 左：品牌视觉 ---------- */
.nvauth-brand{position:relative;overflow:hidden;color:#fff;
  background-image:
    linear-gradient(100deg,rgba(6,24,60,.70) 0%,rgba(9,34,86,.34) 40%,rgba(18,86,212,0) 72%),
    url(../images/auth-bg.webp);
  background-size:cover,cover;
  background-position:center center,center center;
  background-repeat:no-repeat,no-repeat;
  display:flex;align-items:center}
.nvauth-brand:before{display:none}
.nvauth-brand:after{display:none}
.nvauth-brand-in{position:relative;z-index:1;width:100%;padding:56px 56px 40px;max-width:620px;
  margin-left:0;margin-right:auto;text-align:left;display:flex;flex-direction:column;min-height:100vh;box-sizing:border-box}
.nvauth-logo{display:inline-flex;align-items:center;gap:12px;color:#fff;text-decoration:none;font-size:20px;font-weight:800;letter-spacing:.2px}
.nvauth-logo img{height:40px;width:auto;max-width:230px;object-fit:contain;display:block;
  filter:brightness(0) invert(1)}  /* 深色 Logo 在深色背景上强制渲染为白色 */
.nvauth-logo .mark{width:38px;height:38px;display:flex;align-items:center;justify-content:center;
  background:#fff;color:var(--nva-primary);font-weight:900;font-size:20px}
.nvauth-title{margin:38px 0 14px;font-size:34px;line-height:1.28;font-weight:800;letter-spacing:-.6px;
  text-shadow:0 2px 12px rgba(2,10,30,.55)}
.nvauth-title em{font-style:normal;color:#8ec2ff}
.nvauth-desc{margin:0;font-size:14.5px;line-height:1.9;color:rgba(255,255,255,.82);max-width:430px;
  text-shadow:0 1px 8px rgba(2,10,30,.5)}
.nvauth-points{list-style:none;margin:34px 0 0;padding:0;display:flex;flex-direction:column;gap:14px}
.nvauth-points li{display:flex;align-items:center;gap:10px;font-size:13.5px;color:rgba(255,255,255,.9);
  text-shadow:0 1px 8px rgba(2,10,30,.5)}
.nvauth-points li:before{content:"";width:7px;height:7px;flex:none;background:#8ec2ff}
/* 中部文案整块纵向居中（Logo 在上、版权在底） */
.nvauth-center{flex:1 1 auto;display:flex;flex-direction:column;justify-content:center;padding:24px 0}
.nvauth-brand-foot{position:relative;z-index:1;padding-top:0;
  font-size:12.5px;color:rgba(255,255,255,.5)}

/* ---------- 右：表单 ---------- */
.nvauth-main{display:flex;align-items:center;justify-content:center;padding:56px 32px;background:#f4f8ff}
.nvauth-card{width:420px;max-width:100%;background:#fff;border:1px solid var(--nva-line);
  border-top:3px solid var(--nva-primary);padding:34px 34px 30px;
  box-shadow:0 30px 70px -40px rgba(15,40,90,.45)}
.nvauth-hd h2{margin:0 0 8px;font-size:22px;font-weight:800;letter-spacing:-.4px;color:var(--nva-text)}
.nvauth-hd p{margin:0 0 22px;font-size:13px;color:var(--nva-sub)}

/* 表单元素 */
.nvauth-form label{display:block;font-size:12.5px;font-weight:700;color:#33415c;margin:14px 0 7px}
/* 表单输入框：不依赖 type 属性（登录账号框未写 type，也要吃到样式） */
.nvauth-form input{width:100%;height:46px;border:1px solid var(--nva-line);border-radius:0;padding:0 14px;
  font-size:14px;color:var(--nva-text);outline:none;background:#fbfdff;
  font-family:inherit;transition:border-color .18s,background .18s}
.nvauth-form input:focus{border-color:var(--nva-primary);background:#fff}
.nvauth-form input::placeholder{color:#a8b3c4}

/* 聚焦描边（直角跑光） */
.fx-field{position:relative;display:block}
.fx-ring{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible;z-index:1;
  opacity:0;visibility:hidden;transition:opacity .28s ease}
.fx-field:focus-within>.fx-ring{opacity:1;visibility:visible}
.fx-ring rect{x:1.5px;y:1.5px;width:calc(100% - 3px);height:calc(100% - 3px);rx:0;fill:none;
  stroke:var(--nva-primary);stroke-width:2.5;stroke-linejoin:miter;stroke-linecap:round;
  stroke-dasharray:22 78;animation:fxDash 2.6s linear infinite}
.fx-field:focus-within>.fx-ring rect{animation-duration:1.2s}
@keyframes fxDash{to{stroke-dashoffset:-100}}

/* 密码显示/隐藏 */
.fx-field.has-eye>input{padding-right:44px}
.fx-eye{position:absolute;right:11px;top:50%;transform:translateY(-50%);width:24px;height:24px;padding:0;
  border:none;background:none;cursor:pointer;color:#94a3b8;display:flex;align-items:center;justify-content:center;
  z-index:2;transition:color .16s ease}
.fx-eye:hover,.fx-eye.on{color:var(--nva-primary)}
.fx-eye svg{width:18px;height:18px;display:block}

/* 登录/注册方式切换 */
.reg-tabs{display:flex;background:#f1f5f9;border:1px solid #e6edf9;padding:4px;margin-bottom:4px}
.reg-tabs button{flex:1;height:36px;border:none;border-radius:0;background:transparent;font-size:13.5px;
  color:#64748b;cursor:pointer;font-weight:600;transition:.18s;font-family:inherit}
.reg-tabs button.on{background:#fff;color:var(--nva-primary);box-shadow:0 1px 0 var(--nva-line)}

/* 手机号：密码 / 短信 */
.mode-switch{display:flex;gap:16px;margin:6px 0 0}
.mode-switch button{border:none;background:transparent;padding:0 0 5px;font-size:13px;color:#94a3b8;
  cursor:pointer;font-family:inherit;border-bottom:2px solid transparent;font-weight:600}
.mode-switch button.on{color:var(--nva-primary);border-bottom-color:var(--nva-primary)}

/* 验证码行 */
.code-row{display:flex;gap:8px}
.code-row .fx-field{flex:1;min-width:0}
.code-row .code-btn{flex:none;height:46px;padding:0 14px;border:1px solid var(--nva-primary);
  color:var(--nva-primary);background:var(--nva-light);border-radius:0;font-size:13px;font-weight:600;
  cursor:pointer;white-space:nowrap;font-family:inherit}
.code-row .code-btn:disabled{background:#f1f5f9;color:#94a3b8;border-color:var(--nva-line);cursor:not-allowed}

/* 记住我 / 忘记密码 */
.nvauth-form .row{display:flex;align-items:center;justify-content:space-between;margin:14px 0 4px;font-size:13px}
.nvauth-form .row label{margin:0;display:flex;align-items:center;gap:7px;font-weight:400;color:#475569}
.nvauth-form .row input[type=checkbox]{width:15px;height:15px;padding:0;margin:0;accent-color:var(--nva-primary)}
.nvauth-form .row a{color:var(--nva-primary);text-decoration:none;font-weight:600}
.nvauth-form .row a:hover{color:#0d3f9e}

/* 主按钮 */
.auth-submit{display:block;width:100%;height:48px;border:none;border-radius:0;margin-top:16px;cursor:pointer;
  background:linear-gradient(135deg,#2f6fe4,#1256d4);color:#fff;font-size:15px;font-weight:700;
  letter-spacing:1px;text-align:center;line-height:48px;text-decoration:none;font-family:inherit;
  transition:background .2s,box-shadow .2s}
.auth-submit:hover{background:linear-gradient(135deg,#1256d4,#0d3f9e);
  box-shadow:0 14px 26px -18px rgba(18,86,212,.85)}
.auth-submit:disabled{opacity:.72;cursor:not-allowed;box-shadow:none}

.nvauth-foot{text-align:center;margin:18px 0 0;font-size:13px;color:#94a3b8}
.nvauth-foot a{color:var(--nva-primary);font-weight:600;text-decoration:none}
.nvauth-foot a:hover{color:#0d3f9e}

/* 提示条 / 说明 */
.alert{padding:11px 14px;font-size:12.5px;line-height:1.8;margin-bottom:16px;
  background:var(--nva-light);color:#0d3f9e;border:1px solid #dbe7fa;border-left:3px solid var(--nva-primary)}
.alert.warn{background:#fef2f2;color:#b91c1c;border-color:#fbd5d5;border-left-color:#dc2626}
.msg{display:none;padding:10px 14px;font-size:13px;margin-top:12px;line-height:1.6}
.msg.err{display:block;background:#fef2f2;color:#dc2626;border:1px solid #fbd5d5}
.msg.ok{display:block;background:#f0fdf4;color:#15803d;border:1px solid #c9efd6}

/* 密码错误次数提示（口径同后台 WAF） */
.waf-hint{display:none;gap:8px;margin-top:12px;padding:10px 12px;font-size:12.5px;line-height:1.65;
  background:#fff8ec;border:1px solid #fde3b8;border-left:3px solid #f59e0b;color:#95501a}
.waf-hint.on{display:flex}
.waf-hint svg{width:15px;height:15px;flex:none;margin-top:2px;color:#d97706}
.waf-hint b{color:#b45309;font-weight:700;padding:0 1px}
.waf-hint.danger{background:#fef2f2;border-color:#fbd5d5;border-left-color:#dc2626;color:#9f2d2d}
.waf-hint.danger svg{color:#dc2626}
.waf-hint.danger b{color:#b91c1c}

/* 验证码控件（框架输出）在窄卡片里自适应；强制拉回本主题的直角风格 */
.nvauth-card .captcha,.nvauth-card .captcha-box{margin-top:10px}
.nvauth-form input[name=captcha]{height:46px!important;border:1px solid var(--nva-line)!important;
  border-radius:0!important;background:#fbfdff!important;font-size:14px!important;padding:0 14px!important}
.nvauth-form input[name=captcha]:focus{border-color:var(--nva-primary)!important;background:#fff!important}
.nvauth-form input[name=captcha]~img{height:46px!important;border:1px solid var(--nva-line)!important;
  border-radius:0!important;flex:none;cursor:pointer}

/* ---------- 响应式 ---------- */
@media(max-width:1024px){
  .nvauth-shell{grid-template-columns:1fr}
  .nvauth-brand{display:none}
  .nvauth-main{padding:36px 18px;align-items:flex-start;padding-top:56px}
  .nvauth-card{width:100%;max-width:440px;padding:26px 22px 24px}
}
