/* 登录页 · 照设计稿「登录页」1a/1b（375×812；输入框 52px/圆角14，主按钮 50px 全圆角品牌金，微信绿仅微信按钮）*/
.login-page {
  --l-line: #E3DFD8; --l-gold: #D99A2B; --l-gold-deep: #9A6A10; --l-gold-ghost: #F2E7CC; --l-wx: #07C160;
  min-height: 100vh; background: var(--bg); display: flex; flex-direction: column;
  padding: 0 8.5vw 9vw; font-family: 'PingFang SC', 'Noto Sans SC', sans-serif; color: var(--ink); position: relative;
}
body.dark .login-page { --l-line: #2B2B28; --l-gold-deep: #E6B24E; --l-gold-ghost: rgba(230,178,78,.13); }
.login-nav { display: flex; align-items: center; height: 13vw; margin: 0 -8.5vw; padding: 0 3vw; }
.login-nav .back { width: 11vw; height: 11vw; display: flex; align-items: center; justify-content: center; font-size: 7vw; color: var(--ink); }
.login-nav .title { flex: 1; text-align: center; font-size: 4.3vw; font-weight: 600; }
.login-nav .skip { font-size: 3.6vw; color: var(--meta); padding: 0 2vw; }
.login-nav .spacer { width: 11vw; }
.login-glow { position: absolute; top: 8vw; left: 50%; transform: translateX(-50%); width: 85vw; height: 64vw; background: radial-gradient(circle, rgba(217,154,43,.16), transparent 70%); pointer-events: none; }
.login-body { flex: 1; position: relative; z-index: 1; display: flex; flex-direction: column; align-items: center; }
.login-body.top { padding-top: 17vw; }
.login-body.left { align-items: stretch; padding-top: 7vw; }
.login-logo { width: 19vw; height: 19vw; }
.login-logo img { width: 100%; height: 100%; }
.login-brand { display: flex; align-items: baseline; gap: 2.4vw; margin-top: 5vw; }
.login-brand .cn { font-family: 'Noto Serif SC', 'Songti SC', serif; font-weight: 700; font-size: 7.2vw; letter-spacing: .12em; }
.login-brand .en { font-family: 'Newsreader', Georgia, serif; font-style: italic; font-weight: 500; font-size: 4.3vw; color: var(--l-gold-deep); }
.login-slogan { font-size: 3.5vw; color: var(--sub); margin-top: 2.6vw; letter-spacing: .06em; }
.login-h1 { font-family: 'Noto Serif SC', 'Songti SC', serif; font-weight: 700; font-size: 7.2vw; margin: 0; }
.login-desc { font-size: 3.6vw; color: var(--sub); margin-top: 3vw; line-height: 1.7; }
.login-form { width: 100%; display: grid; gap: 3.7vw; margin-top: 10.6vw; }
.login-field { height: 13.9vw; border-radius: 3.7vw; background: var(--surface); border: 1px solid var(--l-line); display: flex; align-items: center; padding: 0 4.3vw; gap: 3.2vw; }
.login-field.code { padding: 0 1.6vw 0 4.3vw; }
.login-field .cc { font-size: 4vw; font-weight: 600; display: flex; align-items: center; gap: 1.3vw; white-space: nowrap; }
.login-field .vline { width: 1px; height: 5.3vw; background: var(--l-line); }
.login-field input { flex: 1; min-width: 0; border: none; outline: none; background: none; font-size: 4vw; color: var(--ink); }
.login-field input::placeholder { color: var(--meta); }
.login-getcode { height: 10.6vw; padding: 0 4.3vw; border-radius: 2.9vw; background: var(--l-gold-ghost); font-size: 3.6vw; font-weight: 700; color: var(--l-gold-deep); white-space: nowrap; border: none; }
.login-getcode[disabled] { background: var(--line-soft); color: var(--meta); }
.login-primary { height: 13.3vw; border-radius: 6.7vw; background: var(--l-gold); font-size: 4.3vw; font-weight: 700; color: #1B1B1A; box-shadow: 0 2.6vw 6.4vw -2.6vw rgba(194,132,26,.55); margin-top: 2vw; border: none; }
.login-wx { height: 13.3vw; border-radius: 6.7vw; background: var(--l-wx); display: flex; align-items: center; justify-content: center; gap: 2.4vw; font-size: 4.3vw; font-weight: 700; color: #fff; box-shadow: 0 2.6vw 6.4vw -2.6vw rgba(7,193,96,.5); border: none; }
.login-alt { text-align: center; margin-top: 5.3vw; }
.login-alt button { font-size: 3.6vw; color: var(--sub); border: none; background: none; border-bottom: 1px solid var(--l-line); padding: 0 0 .5vw; }
.login-hintcard { display: flex; align-items: center; gap: 2.4vw; margin-top: 7vw; padding: 3.5vw 4vw; border-radius: 3.2vw; background: var(--l-gold-ghost); }
.login-hintcard img { width: 6vw; height: 6vw; flex: 0 0 auto; }
.login-hintcard span { font-size: 3.2vw; color: var(--l-gold-deep); line-height: 1.6; }
.login-agree { display: flex; align-items: flex-start; justify-content: center; gap: 1.9vw; padding-top: 5.3vw; }
.login-agree .box { width: 4vw; height: 4vw; border-radius: 50%; border: 1.5px solid #C9C5BC; flex: 0 0 auto; margin-top: .3vw; display: flex; align-items: center; justify-content: center; }
.login-agree.on .box { background: var(--l-gold); border-color: var(--l-gold); }
.login-agree.on .box::after { content: '✓'; font-size: 2.4vw; color: #1B1B1A; font-weight: 900; }
.login-agree span { font-size: 3.1vw; color: var(--meta); line-height: 1.6; }
.login-agree b { color: var(--l-gold-deep); font-weight: 500; }
