/* ============================================================
   登录 / 注册页 —— 依赖 styles.css 与 portal.css 的 Design Tokens。
   ============================================================ */

.auth-body {
  min-height: 100vh;
  background:
    radial-gradient(680px 420px at 90% -10%, var(--blush-soft) 0%, transparent 60%),
    radial-gradient(560px 380px at -8% 90%, var(--lilac-soft) 0%, transparent 55%),
    var(--canvas);
}
.auth-header { border-bottom: 1px solid var(--line); background: rgba(250, 248, 244, .92); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); }
.auth-header-inner { min-height: 68px; display: flex; align-items: center; justify-content: space-between; gap: 20px; }
.auth-header a { color: var(--accent-strong); font-size: 14px; font-weight: 700; text-decoration: none; }
.auth-header a.brand { color: var(--ink-strong); }

.auth-main { display: grid; min-height: calc(100vh - 69px); place-items: center; padding: 56px 0; }
.auth-shell { width: min(100%, 520px); }
.auth-card {
  padding: 34px;
  border: 1px solid var(--line); border-radius: var(--r-xl);
  background: var(--paper);
  box-shadow: var(--shadow-l);
}
.auth-heading { margin-bottom: 26px; }
.auth-heading .portal-eyebrow { margin-bottom: 8px; }
.auth-heading h1 { margin: 0; color: var(--ink-strong); font-size: 30px; font-weight: 800; line-height: 1.28; }
.auth-heading p { margin: 10px 0 0; color: var(--muted); font-size: 14px; }

.auth-form { display: grid; gap: 18px; }
.auth-form .portal-field { gap: 7px; }
.auth-form .portal-field input { min-height: 46px; }
.auth-form .portal-button { width: 100%; min-height: 46px; font-size: 14px; }

.auth-inline { display: flex; align-items: end; gap: 10px; }
.auth-inline .portal-field { min-width: 0; flex: 1; }
.auth-inline .portal-button { flex: 0 0 auto; width: auto; min-width: 108px; min-height: 46px; }

.auth-check { display: flex; align-items: flex-start; gap: 9px; color: var(--muted); font-size: 13px; line-height: 1.6; }
.auth-check input { width: 17px; height: 17px; margin-top: 3px; accent-color: var(--accent); }

.auth-links { display: flex; justify-content: space-between; gap: 16px; margin-top: 22px; color: var(--accent-strong); font-size: 13px; font-weight: 700; }
.auth-links a { text-decoration: none; }
.auth-links a:hover { text-decoration: underline; }

.auth-note {
  margin: 20px 0 0; padding: 13px 16px;
  border: 1px solid #ecdfc0; border-radius: var(--r-m);
  color: #6d5a22; background: var(--warning-bg);
  font-size: 13px; line-height: 1.6;
}
.auth-note[hidden] { display: none; }

.auth-message {
  margin: 0 0 18px; padding: 13px 16px;
  border: 1px solid #f0d5cc; border-radius: var(--r-m);
  color: #8a4030; background: var(--danger-bg);
  font-size: 13px; line-height: 1.6;
}
.auth-message.success { border-color: #c9e2d4; color: var(--accent-strong); background: var(--success-bg); }
.auth-message[hidden] { display: none; }

.auth-secondary { margin-top: 18px; padding-top: 20px; border-top: 1px solid var(--line); color: var(--muted); font-size: 12px; text-align: center; line-height: 1.7; }
.auth-secondary a { color: var(--accent-strong); font-weight: 700; text-decoration: none; }

@media (max-width: 640px) {
  .auth-header-inner { min-height: 60px; }
  .auth-main { min-height: calc(100vh - 61px); padding: 28px 0; }
  .auth-card { padding: 26px 18px; border-radius: var(--r-l); }
  .auth-heading h1 { font-size: 26px; }
  .auth-inline { align-items: stretch; flex-direction: column; }
  .auth-inline .portal-button { width: 100%; }
  .auth-links { align-items: flex-start; flex-direction: column; gap: 10px; }
}
