/* ============== 统一登录面板（手机号 + 微信扫码，用户体系统一 P1） ============== */
.wd-login-panel {
  position: fixed; top: 0; left: 0; right: 0; bottom: 0;
  background: rgba(15, 23, 42, 0.6); z-index: 400;
  display: flex; align-items: center; justify-content: center;
  animation: wd-fade-in 0.2s ease;
}
.wd-login-panel-box {
  background: var(--wd-white); border-radius: 16px; width: 360px; max-width: 92vw;
  border: 1px solid var(--wd-border);   /* 与页内 `.login-sso-box` 同为 1px：否则两者输入框差 2px（实测） */
  box-shadow: 0 24px 48px rgba(15, 23, 42, 0.15);
  overflow: hidden;
}
.wd-login-panel-header {
  display: flex; align-items: center; justify-content: space-between;
  padding: 18px 20px 0;
}
.wd-login-panel-title { font-size: 18px; font-weight: 700; color: var(--wd-navy); }
.wd-login-panel-close {
  font-size: 24px; line-height: 1; color: var(--wd-slate-light); cursor: pointer; padding: 4px;
  background: none; border: none; font-family: inherit;   /* 由 span 改为 button：可 Tab 聚焦、Enter 触发 */
}
.wd-login-panel-close:hover { color: var(--wd-off-black); }
/* 键盘可见焦点（铁律 5.2：键盘可操作且可见） */
.wd-login-panel-close:focus-visible,
.wd-login-submit:focus-visible,
.wd-login-code-btn:focus-visible,
.wd-login-switch a:focus-visible {
  outline: 2px solid var(--wd-focus-ring);
  outline-offset: var(--wd-focus-ring-offset);
}
/* 单一视图（2026-09-21 定案）：无「方式选择」中转视图，底部文字链见 .wd-login-switch
   左右内边距 20px —— 与页内 `.login-sso-box` 的 `24px 20px 20px` 对齐；
   叠加两者同为 `border: 1px` ⇒ 输入框等宽（border-box：360 − 2×20 − 2×1 = 318px，实测） */
.wd-login-tab-body { padding: 16px 20px 24px; }
.wd-login-input {
  width: 100%; box-sizing: border-box; padding: 12px 14px; margin-bottom: 12px; min-height: 44px;
  border: 1px solid var(--wd-slate-300); border-radius: 10px; font-size: 15px; outline: none;
  transition: border-color 0.2s, box-shadow 0.2s;
}
.wd-login-input:focus { border-color: var(--wd-accent); box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.12); }
.wd-login-err {
  min-height: 18px; font-size: 13px; color: var(--wd-danger); margin-bottom: 8px;
}
.wd-login-submit {
  width: 100%; padding: 12px; min-height: 44px; background: var(--wd-accent); color: var(--wd-white);
  border: none; border-radius: 10px; font-size: 15px; font-weight: 600; cursor: pointer;
  transition: background 0.2s;
}
.wd-login-submit:hover { background: var(--wd-accent-dark); }
.wd-login-submit:disabled { background: var(--wd-indigo-300); cursor: not-allowed; }
/* 底部「其它方式」文字链：360px 窄框内需放下 3 项（13px 字号 + 收紧分隔符间距）；
   链接加 nowrap —— 否则窄框会把「学生用户名登录」从词中间拆成两行（2026-09-21 浏览器实测） */
.wd-login-switch {
  margin-top: 14px; text-align: center; font-size: 13px; color: var(--wd-slate); line-height: 1.9;
}
.wd-login-switch a { color: var(--wd-accent); text-decoration: none; font-weight: 600; white-space: nowrap; }
.wd-login-switch a:hover { text-decoration: underline; }
.wd-login-switch-sep { margin: 0 6px; color: var(--wd-slate-300); }
.wd-login-qr-tip {
  font-size: 14px; color: var(--wd-slate); text-align: center; margin-bottom: 16px; line-height: 1.6;
}

/* 学生自助注册子视图（2026-09-23 B1）：字段较多，故用紧凑行距，不做平铺进主态的妥协 */
#wdLoginTabStudentReg .wd-login-input { margin-bottom: 10px; }
.wd-login-tip-sm { margin-top: 8px; text-align: center; font-size: 11px; color: var(--wd-slate); }
.wd-login-tip-sm a { color: var(--wd-slate); text-decoration: underline; white-space: nowrap; }

/* 短信验证码登录（用户体系统一 P4） */
.wd-login-sms-row { display: flex; gap: 10px; margin-bottom: 12px; }
.wd-login-sms-row .wd-login-code-input { flex: 1; margin-bottom: 0; }
.wd-login-code-btn {
  flex-shrink: 0; padding: 12px 14px; background: var(--wd-border-light); color: var(--wd-accent);
  border: 1px solid var(--wd-slate-300); border-radius: 10px; font-size: 14px; cursor: pointer;
  transition: background 0.2s;
}
.wd-login-code-btn:hover { background: var(--wd-border); }
.wd-login-code-btn:disabled { color: var(--wd-slate-light); cursor: not-allowed; }

/* 统一登录页（/login）：默认直出手机验证码，与登录面板共用同一份表单定义。
   尺寸口径（2026-09-21 统一，见 docs/handoff/XW-06）：面板与页内**同宽 360px**
   （本行 392px - 左右各 16px 内边距 = `.login-sso-box` 实宽 360px）/ 输入与主按钮 44px。 */
.login-sso-wrap { max-width: 392px; margin: 48px auto 64px; padding: 0 16px; }
.login-sso-box {
  background: var(--wd-white); border: 1px solid var(--wd-border); border-radius: 16px;
  padding: 24px 20px 20px; box-shadow: 0 8px 24px rgba(15, 23, 42, 0.06);
}
.login-sso-title { margin: 0 0 6px; font-size: 18px; font-weight: 700; color: var(--wd-navy); }
.login-sso-sub { margin: 0; font-size: 12px; line-height: 1.7; color: var(--wd-slate); }
.login-sso-box .wd-login-method { padding: 0; }
.login-sso-box .wd-login-tab-body { padding: 14px 0 0; }

/* 微信扫码：页内内联二维码（0 页面跳转；替代原「弹窗」形态） */
.wd-login-qr-inline { text-align: center; }
.wd-login-qr-img {
  width: 160px; height: 160px; border: 1px solid var(--wd-border); border-radius: 10px;
  padding: 6px; background: var(--wd-white); box-sizing: content-box;
}
.wd-login-qr-tip { margin: 12px 0 6px; font-size: 13px; color: var(--wd-slate); }
.wd-login-qr-status { margin: 0 0 10px; font-size: 13px; color: var(--wd-slate-light); }
.wd-login-link {
  background: none; border: none; padding: 0; font-size: 13px;
  color: var(--wd-accent); cursor: pointer;
}
.wd-login-link:hover { text-decoration: underline; }

@media (max-width: 480px) {
  .wd-login-panel-box { width: 90vw; }
  .wd-login-tab-body { padding: 16px 16px 20px; }
}
