/* 登录门 —— 与站点令牌同源 */
.login-gate {
  position: fixed;
  inset: 0;
  z-index: 200;
  display: none;
  align-items: center;
  justify-content: center;
  padding: 24px;
  background: var(--color-bg, #ffffff);
}
.login-gate.show { display: flex; }
.app-layout.hidden { display: none; }

.login-box { width: 100%; max-width: 380px; }
.login-title { font-size: 24px; font-weight: 700; margin: 0 0 6px; color: var(--color-text, #1f2328); }
.login-sub { font-size: 13px; color: var(--color-text-secondary, #656d76); margin: 0 0 22px; line-height: 1.6; }

.login-form { display: flex; flex-direction: column; gap: 12px; }
.login-row { display: flex; gap: 8px; }
.login-row input { flex: 1; min-width: 0; }
.login-submit { width: 100%; }

/* 启动遮罩 —— 恢复登录态期间盖住页面，避免闪出登录框 */
.boot-splash {
  position: fixed; inset: 0; z-index: 150;
  display: none; align-items: center; justify-content: center;
  background: var(--color-bg, #ffffff);
}
.boot-splash.show { display: flex; }
.boot-splash-box { text-align: center; color: var(--color-text-secondary, #656d76); font-size: 13px; }
.boot-splash-box p { margin: 10px 0 0; }
.boot-splash .spinner { width: 22px; height: 22px; border-width: 3px; vertical-align: 0; }

/* 验证码：字距拉开好读；发送按钮定宽，倒计时数字变化时不跳动 */
#loginCode { letter-spacing: .18em; }
#btnSendCode { min-width: 112px; white-space: nowrap; }

.login-msg { min-height: 18px; font-size: 12.5px; line-height: 1.5; }
.login-msg.err { color: var(--color-danger, #cf222e); }
.login-msg.ok { color: var(--color-success, #1a7f37); }

.login-foot { font-size: 11.5px; color: var(--color-text-secondary, #656d76); margin: 18px 0 0; line-height: 1.6; }
