/* 登录页专用样式（2026-11-06 自动提取，勿手工大改）
 *
 * 为什么单独抽出来：服务器带宽只有 ~15 KB/s，app.css 292KB（gzip 后 60KB）要 4 秒才下完，
 * 而登录页只用到其中很小一部分。
 *
 * 生成方式：加载 login.html → 遍历 app.css / design.css 的每条规则 →
 *          选择器用 document.querySelector 实测是否命中 → 命中就整条保留。
 * ⚠️ 改登录页 HTML 结构后如果样式缺失，需要重新跑一次提取（见 _tools/_extract_login_css.js）。
 */
@keyframes fade { 
  0% { opacity: 0; transform: translateY(6px); }
  100% { opacity: 1; transform: none; }
}
select:focus, input:focus { border-color: var(--brand); }
@keyframes quizOptIn { 
  0% { opacity: 0; transform: translateY(8px); }
  100% { opacity: 1; transform: none; }
}
@keyframes quizPop { 
  0% { transform: scale(1); }
  40% { transform: scale(1.04); }
  100% { transform: scale(1); }
}
.auth-wrap { min-height: 80vh; display: flex; align-items: center; justify-content: center; padding: 20px; }
.auth-card { background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow); padding: 30px; width: 100%; max-width: 380px; }
.auth-card h2 { margin: 0px 0px 4px; text-align: center; }
.auth-sub { text-align: center; color: var(--ink-soft); font-size: 13px; margin-bottom: 18px; }
.form-row { margin-bottom: 14px; }
.form-row label { display: block; font-size: 13px; color: var(--ink-soft); margin-bottom: 6px; }
.form-row input, .form-row select, .form-row textarea { width: 100%; border: 1px solid var(--line); background: var(--panel); color: var(--ink); padding: 10px 12px; border-radius: var(--radius); font-size: 14px; outline: none; font-family: inherit; }
.form-row input:focus, .form-row select:focus, .form-row textarea:focus { border-color: var(--brand); }
.auth-msg { font-size: 13px; margin-bottom: 12px; min-height: 18px; }
.auth-msg.err { color: var(--red); }
.auth-msg.ok { color: var(--green); }
.auth-stage { display: grid; width: 100%; max-width: 380px; perspective: 1400px; transition: height 0.38s cubic-bezier(0.22, 0.61, 0.36, 1); }
.auth-stage .auth-card { grid-area: 1 / 1; align-self: start; max-width: 380px; transform: rotateY(0deg); opacity: 0; pointer-events: none; backface-visibility: hidden; transition: transform 0.5s cubic-bezier(0.22, 0.61, 0.36, 1), opacity 0.32s; }
.auth-stage .auth-card.enter-r { transform: rotateY(84deg); }
.auth-stage .auth-card.is-active { transform: rotateY(0deg); opacity: 1; pointer-events: auto; transition: transform 0.5s cubic-bezier(0.22, 0.61, 0.36, 1), opacity 0.32s 0.06s; }
.auth-links { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 14px; font-size: 13px; }
.auth-links a { color: var(--ink-soft); text-decoration: none; cursor: pointer; font-weight: 600; }
.auth-links a:hover { color: var(--brand); text-decoration: underline; }
.auth-done { text-align: center; }
.auth-done .btn { margin-top: 6px; }
.inline-blank.ok { background: var(--green-soft); border-color: var(--green); color: var(--green); }
.dictate-feedback.ok { color: var(--green); }
.rev-item.ok { border-left-color: var(--green,#2e9e5b); }
.wc-card, .stat-card, .sentence-card, .bank-item, .cat-tree, .exam-intro, .exam-result, .quiz-result, .level-card, .achv-card, .dash-card, .dash-panel, .catset-card, .modal, .auth-card { transition: transform 0.18s, box-shadow 0.18s, border-color 0.18s; }
* { box-sizing: border-box; scrollbar-width: thin; scrollbar-color: rgb(205, 214, 228) transparent; }
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: content-box rgb(205, 214, 228); border-radius: 999px; border: 2px solid transparent; }
::-webkit-scrollbar-thumb:hover { background: content-box rgb(179, 191, 210); }
.btn:focus-visible, button:focus-visible, a:focus-visible, select:focus-visible, input:focus-visible, textarea:focus-visible, .side-link:focus-visible, .tab:focus-visible, .cat-group-head:focus-visible { outline: none; box-shadow: var(--ring); }
::selection { background: rgba(79, 124, 255, 0.22); }
@media (prefers-reduced-motion: reduce) {
*, ::before, ::after { animation-duration: 0.001ms !important; animation-iteration-count: 1 !important; transition-duration: 0.001ms !important; scroll-behavior: auto !important; }
}
body { margin: 0; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif; background: var(--bg-grad); color: var(--ink); -webkit-font-smoothing: antialiased; background-attachment: fixed }
.card, .flashcard, .sentence-card, .dash-card, .stats-cards > *, .bank-item, .wc-card, .stat-card, .exam-intro, .exam-result, .quiz-result, .level-card, .achv-card, .dash-panel, .catset-card, .modal, .auth-card, .cat-tree { transition: transform 0.18s, box-shadow 0.18s, border-color 0.18s; }
:root { --bg: #f6f8fb; --panel: #ffffff; --ink: #1f2933; --ink-soft: #66727f; --line: #e4e9f0; --brand: #4f7cff; --brand-soft: #eaf0ff; --green: #1fa971; --green-soft: #e4f7ef; --amber: #e0922b; --amber-soft: #fdf1e1; --red: #e1574c; --shadow: 0 6px 22px rgba(31, 41, 51, 0.08); --radius: 14px; --row-even: #f7f9fd; --brand-2: #7a5cff; --green-grad: linear-gradient(115deg, #0fa86d 0%, #1fd6c0 100%); --bg-grad: radial-gradient(900px 600px at 90% -16%, #b9ccff 0%, rgba(185,204,255,0) 48%), radial-gradient(820px 540px at -10% 2%, #a6f0d6 0%, rgba(166,240,214,0) 46%), radial-gradient(760px 520px at 52% 122%, #e7d4ff 0%, rgba(231,212,255,0) 52%), #eef3fb; --ring: 0 0 0 4px rgba(79,124,255,.18); --shadow-lg: 0 14px 34px rgba(31,41,51,.13); --brand-grad: linear-gradient(115deg, #2f6bff 0%, #6a5cff 45%, #a14bff 100%); --glass: rgba(255,255,255,.74); }
@keyframes barShine { 
  0% { background-position: 100% 0px; }
  100% { background-position: 0px 0px; }
}
@media (prefers-color-scheme: dark) {
:root, :root[data-theme="dark"] { --bg: #0f141b; --panel: #18202b; --ink: #e7edf5; --ink-soft: #9aa7b6; --line: #283341; --brand: #6e94ff; --brand-soft: #1d2a45; --green: #34c98a; --green-soft: #133027; --amber: #f0a64a; --amber-soft: #2c2415; --red: #f0726a; --shadow: 0 6px 22px rgba(0,0,0,.45); --radius: 14px; --row-even: #141c27; }
}
@media (prefers-color-scheme: dark) {
body { color: var(--ink); background: radial-gradient(1100px 620px at 86% -12%, rgb(22, 36, 63) 0%, rgba(22, 36, 63, 0) 55%) fixed, radial-gradient(900px 520px at -6% 6%, rgb(16, 42, 35) 0%, rgba(16, 42, 35, 0) 52%), rgb(15, 20, 27); }
}
@media (prefers-color-scheme: dark) {
.card, .flashcard, .sentence-card, .dash-card, .modal, .auth-card, .exam-intro, .quiz-result, .cat-tree, .bank-item { background: var(--panel); border-color: var(--line); }
}
@media (prefers-color-scheme: dark) {
.btn.ghost { color: var(--ink); border-color: var(--line); }
}
@media (prefers-color-scheme: dark) {
.btn.ghost:hover { background: var(--brand-soft); color: var(--brand); }
}
.exm-pv-opts li.ok { color: rgb(26, 122, 69); font-weight: 700; }
@media (max-width: 720px) {
html, body { overflow-x: hidden; }
}
@media (max-width: 720px) {
select, input[type="search"], input[type="text"], input[type="number"], input[type="password"], textarea { font-size: 16px; min-height: 44px; padding: 10px 12px; box-sizing: border-box; }
}
@media (max-width: 720px) {
html, body { overflow-x: hidden; }
}
@media (max-width: 720px) {
h2 { font-size: 17px; }
}
@media (max-width: 720px) {
select, input[type="search"], input[type="text"], input[type="number"], input[type="password"], textarea { font-size: 16px; min-height: 40px; border-radius: 10px; padding: 8px 10px; }
}
@media (max-width: 720px) {
.card:hover, .wc-card:hover, .stat-card:hover, .bank-item:hover, .level-card:hover, .sentence-card:hover, .dash-card:hover, .dash-panel:hover, .catset-card:hover, .modal:hover, .exam-intro:hover, .quiz-result:hover, .achv-card:hover, .btn:hover, .side-link:hover, .cat-tree:hover { transform: none !important; box-shadow: var(--shadow) !important; border-color: var(--line) !important; }
}
@media (max-width: 720px) {
.btn.primary:hover, .btn.success:hover { box-shadow: var(--shadow) !important; }
}
@media (max-width: 720px) {
.card, .wc-card, .dash-card, .dash-panel, .level-card, .stat-card, .sentence-card, .bank-item, .modal, .auth-card, .exam-intro, .exam-result, .quiz-result, .achv-card, .catset-card, .cat-tree { border-radius: 12px; }
}
@keyframes skel-pulse { 
  0%, 100% { opacity: 0.45; }
  50% { opacity: 0.9; }
}
.btn.primary { background: var(--brand-grad, linear-gradient(135deg, var(--brand), var(--brand-2))); border-color: transparent; color: rgb(255, 255, 255); box-shadow: rgba(79, 124, 255, 0.28) 0px 4px 14px; }
.btn.primary:hover { box-shadow: rgba(79, 124, 255, 0.4) 0px 8px 22px; transform: translateY(-1px); }
.btn { border: 1px solid var(--line); background: var(--panel); color: var(--ink); padding: 10px 16px; border-radius: var(--radius); cursor: pointer; font-size: 14px; font-weight: 600; transition: 0.15s; box-shadow: none; }
.btn:hover { box-shadow: rgba(31, 41, 51, 0.08) 0px 2px 10px; transform: translateY(-1px); }
.btn.ghost { background: transparent; color: var(--ink-soft); border-color: transparent; }
.btn.ghost:hover { background: var(--bg); color: var(--brand); box-shadow: none; }
@keyframes lpPulse { 
  0%, 100% { box-shadow: rgba(79, 124, 255, 0.4) 0px 0px 0px 0px; }
  50% { box-shadow: rgba(79, 124, 255, 0) 0px 0px 0px 10px; }
}
.es-item.ok { background: var(--green-soft); border-color: var(--green); color: var(--green); }
@media (max-width: 720px) {
select:focus, input:focus { border-color: var(--brand); }
}
@media (max-width: 720px) {
.auth-card h2 { margin: 0px 0px 4px; text-align: center; }
}
@media (max-width: 720px) {
.auth-sub { text-align: center; color: var(--ink-soft); font-size: 13px; margin-bottom: 18px; }
}
@media (max-width: 720px) {
.form-row { margin-bottom: 14px; }
}
@media (max-width: 720px) {
.form-row label { display: block; font-size: 13px; color: var(--ink-soft); margin-bottom: 6px; }
}
@media (max-width: 720px) {
.form-row input, .form-row select, .form-row textarea { width: 100%; border: 1px solid var(--line); background: var(--panel); color: var(--ink); padding: 10px 12px; border-radius: var(--radius); font-size: 14px; outline: none; font-family: inherit; }
}
@media (max-width: 720px) {
.form-row input:focus, .form-row select:focus, .form-row textarea:focus { border-color: var(--brand); }
}
@media (max-width: 720px) {
.auth-msg { font-size: 13px; margin-bottom: 12px; min-height: 18px; }
}
@media (max-width: 720px) {
.auth-msg.err { color: var(--red); }
}
@media (max-width: 720px) {
.auth-msg.ok { color: var(--green); }
}
@media (max-width: 720px) {
.inline-blank.ok { background: var(--green-soft); border-color: var(--green); color: var(--green); }
}
@media (max-width: 720px) {
.dictate-feedback.ok { color: var(--green); }
}
@media (max-width: 720px) {
.rev-item.ok { border-left-color: var(--green,#2e9e5b); }
}
@media (max-width: 720px) {
.wc-card, .stat-card, .sentence-card, .bank-item, .cat-tree, .exam-intro, .exam-result, .quiz-result, .level-card, .achv-card, .dash-card, .dash-panel, .catset-card, .modal, .auth-card { transition: transform 0.18s, box-shadow 0.18s, border-color 0.18s; }
}
@media (max-width: 720px) {
* { box-sizing: border-box; scrollbar-width: thin; scrollbar-color: rgb(205, 214, 228) transparent; }
}
@media (max-width: 720px) {
::-webkit-scrollbar { width: 10px; height: 10px; }
}
@media (max-width: 720px) {
::-webkit-scrollbar-track { background: transparent; }
}
@media (max-width: 720px) {
::-webkit-scrollbar-thumb { background: content-box rgb(205, 214, 228); border-radius: 999px; border: 2px solid transparent; }
}
@media (max-width: 720px) {
::-webkit-scrollbar-thumb:hover { background: content-box rgb(179, 191, 210); }
}
@media (max-width: 720px) {
.btn:focus-visible, button:focus-visible, a:focus-visible, select:focus-visible, input:focus-visible, textarea:focus-visible, .side-link:focus-visible, .tab:focus-visible, .cat-group-head:focus-visible { outline: none; box-shadow: var(--ring); }
}
@media (max-width: 720px) {
::selection { background: rgba(79, 124, 255, 0.22); }
}
@media (prefers-reduced-motion: reduce) {
*, ::before, ::after { animation-duration: 0.001ms !important; animation-iteration-count: 1 !important; transition-duration: 0.001ms !important; scroll-behavior: auto !important; }
}
@media (max-width: 720px) {
.card, .flashcard, .sentence-card, .dash-card, .stats-cards > *, .bank-item, .wc-card, .stat-card, .exam-intro, .exam-result, .quiz-result, .level-card, .achv-card, .dash-panel, .catset-card, .modal, .auth-card, .cat-tree { transition: transform 0.18s, box-shadow 0.18s, border-color 0.18s; }
}
@media (max-width: 720px) {
:root { --bg: #f6f8fb; --panel: #ffffff; --ink: #1f2933; --ink-soft: #66727f; --line: #e4e9f0; --brand: #4f7cff; --brand-soft: #eaf0ff; --green: #1fa971; --green-soft: #e4f7ef; --amber: #e0922b; --amber-soft: #fdf1e1; --red: #e1574c; --shadow: 0 6px 22px rgba(31, 41, 51, 0.08); --radius: 14px; --row-even: #f7f9fd; --brand-2: #7a5cff; --green-grad: linear-gradient(115deg, #0fa86d 0%, #1fd6c0 100%); --bg-grad: radial-gradient(900px 600px at 90% -16%, #b9ccff 0%, rgba(185,204,255,0) 48%), radial-gradient(820px 540px at -10% 2%, #a6f0d6 0%, rgba(166,240,214,0) 46%), radial-gradient(760px 520px at 52% 122%, #e7d4ff 0%, rgba(231,212,255,0) 52%), #eef3fb; --ring: 0 0 0 4px rgba(79,124,255,.18); --shadow-lg: 0 14px 34px rgba(31,41,51,.13); --brand-grad: linear-gradient(115deg, #2f6bff 0%, #6a5cff 45%, #a14bff 100%); --glass: rgba(255,255,255,.74); }
}
@media (prefers-color-scheme: dark) {
:root, :root[data-theme="dark"] { --bg: #0f141b; --panel: #18202b; --ink: #e7edf5; --ink-soft: #9aa7b6; --line: #283341; --brand: #6e94ff; --brand-soft: #1d2a45; --green: #34c98a; --green-soft: #133027; --amber: #f0a64a; --amber-soft: #2c2415; --red: #f0726a; --shadow: 0 6px 22px rgba(0,0,0,.45); --radius: 14px; --row-even: #141c27; }
}
@media (prefers-color-scheme: dark) {
body { color: var(--ink); background: radial-gradient(1100px 620px at 86% -12%, rgb(22, 36, 63) 0%, rgba(22, 36, 63, 0) 55%) fixed, radial-gradient(900px 520px at -6% 6%, rgb(16, 42, 35) 0%, rgba(16, 42, 35, 0) 52%), rgb(15, 20, 27); }
}
@media (prefers-color-scheme: dark) {
.card, .flashcard, .sentence-card, .dash-card, .modal, .auth-card, .exam-intro, .quiz-result, .cat-tree, .bank-item { background: var(--panel); border-color: var(--line); }
}
@media (prefers-color-scheme: dark) {
.btn.ghost { color: var(--ink); border-color: var(--line); }
}
@media (prefers-color-scheme: dark) {
.btn.ghost:hover { background: var(--brand-soft); color: var(--brand); }
}
@media (max-width: 720px) {
h2 { font-size: 17px; }
}
@media (max-width: 720px) {
select, input[type="search"], input[type="text"], input[type="number"], input[type="password"], textarea { font-size: 16px; min-height: 40px; padding: 8px 10px; box-sizing: border-box; border-radius: 10px; }
}
@media (max-width: 720px) {
.card:hover, .wc-card:hover, .stat-card:hover, .bank-item:hover, .level-card:hover, .sentence-card:hover, .dash-card:hover, .dash-panel:hover, .catset-card:hover, .modal:hover, .exam-intro:hover, .quiz-result:hover, .achv-card:hover, .btn:hover, .side-link:hover, .cat-tree:hover { transform: none !important; box-shadow: var(--shadow) !important; border-color: var(--line) !important; }
}
@media (max-width: 720px) {
.btn.primary:hover, .btn.success:hover { box-shadow: var(--shadow) !important; }
}
@media (max-width: 720px) {
.card, .wc-card, .dash-card, .dash-panel, .level-card, .stat-card, .sentence-card, .bank-item, .modal, .auth-card, .exam-intro, .exam-result, .quiz-result, .achv-card, .catset-card, .cat-tree { border-radius: 12px; }
}
@media (max-width: 720px) {
.auth-wrap { min-height: 80vh; display: flex; align-items: center; justify-content: center; padding: calc(16px + env(safe-area-inset-top, 0px)) 14px; }
}
@media (max-width: 720px) {
.auth-card { background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow); padding: 20px 16px; width: 100%; max-width: 380px; }
}
@media (max-width: 720px) {
html, body { overflow-x: hidden; }
}
@media (max-width: 720px) {
body { margin: 0; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif; background: var(--bg-grad); color: var(--ink); -webkit-font-smoothing: antialiased; background-attachment: fixed; font-size: 13px }
}
@media (max-width: 720px) {
.btn.primary { background: var(--brand-grad); border-color: transparent; color: rgb(255, 255, 255); box-shadow: rgba(79, 124, 255, 0.28) 0px 4px 14px; }
}
@media (max-width: 720px) {
.btn.primary:hover { box-shadow: rgba(123, 92, 255, 0.4) 0px 8px 22px; transform: translateY(-1px); }
}
@media (max-width: 720px) {
.btn { border: 1px solid var(--line); background: var(--panel); color: var(--ink); padding: 9px 14px; border-radius: 10px; cursor: pointer; font-size: 13px; font-weight: 600; transition: 0.15s; min-height: 38px; box-shadow: none; }
}
@media (max-width: 720px) {
.btn:hover { box-shadow: rgba(31, 41, 51, 0.08) 0px 2px 10px; transform: translateY(-1px); }
}
@media (max-width: 720px) {
.btn.ghost { background: transparent; color: var(--ink-soft); border-color: transparent; }
}
@media (max-width: 720px) {
.btn.ghost:hover { background: var(--bg); color: var(--brand); box-shadow: none; }
}
@media (max-width: 720px) {
.es-item.ok { background: var(--green-soft); border-color: var(--green); color: var(--green); }
}
@keyframes sheetUp { 
  0% { transform: translateY(100%); }
  100% { transform: translateY(0px); }
}
:root { --sp-1: 4px; --sp-2: 8px; --sp-3: 12px; --sp-4: 16px; --sp-5: 20px; --sp-6: 24px; --sp-8: 32px; --r-xs: 8px; --r-sm: 10px; --radius: 14px; --r-lg: 18px; --shadow-xs: 0 1px 2px rgba(16, 24, 40, .05); --shadow-sm: 0 2px 8px rgba(16, 24, 40, .06); --shadow: 0 6px 22px rgba(16, 24, 40, .08); --shadow-lg: 0 14px 38px rgba(16, 24, 40, .12); --ring: 0 0 0 3px rgba(79, 124, 255, .28); --ease: cubic-bezier(.4, 0, .2, 1); --brand-grad: linear-gradient(135deg, #4f7cff, #7a5cff); --brand-hair: linear-gradient(90deg, rgba(79,124,255,.55), rgba(122,92,255,.28) 60%, transparent); --ctl-h: 40px; }
@media (prefers-color-scheme: dark) {
:root, :root[data-theme="dark"] { --brand-grad: linear-gradient(135deg, #5f8bff, #8f7bff); --brand-hair: linear-gradient(90deg, rgba(95,139,255,.6), rgba(143,123,255,.3) 60%, transparent); }
}
@media (prefers-color-scheme: dark) {
:root, :root[data-theme="dark"] { --shadow-xs: 0 1px 2px rgba(0, 0, 0, .4); --shadow-sm: 0 2px 10px rgba(0, 0, 0, .4); --shadow: 0 8px 26px rgba(0, 0, 0, .5); --shadow-lg: 0 16px 44px rgba(0, 0, 0, .6); --ring: 0 0 0 3px rgba(110, 148, 255, .35); }
}
body { font-size: 15px; line-height: 1.55; }
* { scrollbar-width: thin; scrollbar-color: var(--line) transparent; }
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-thumb { background: #cdd6e4; border-radius: 999px; border: 2px solid transparent; background-clip: content-box; }
::-webkit-scrollbar-thumb:hover { background: #b3bfd2; background-clip: content-box; }
:focus-visible { outline: none; box-shadow: var(--ring); border-radius: var(--r-sm); }
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-height: var(--ctl-h); padding: 0 var(--sp-4); border-radius: var(--r-sm); border: 1px solid var(--line); background: var(--panel); color: var(--ink); font-size: 14px; font-weight: 600; line-height: 1; cursor: pointer; white-space: nowrap; transition: transform .12s var(--ease), box-shadow .15s var(--ease), background .15s var(--ease), border-color .15s var(--ease); }
.btn:hover { border-color: var(--brand); box-shadow: var(--shadow-sm); }
.btn:active { transform: translateY(1px); }
.btn.primary { color: rgb(255, 255, 255); border-color: transparent; background: var(--brand-grad); box-shadow: rgba(79, 124, 255, 0.28) 0px 2px 8px; }
.btn.primary:hover { box-shadow: rgba(79, 124, 255, 0.38) 0px 6px 18px; filter: brightness(1.04); }
.btn.ghost { background: transparent; }
.btn:disabled { opacity: 0.55; cursor: not-allowed; box-shadow: none; transform: none; }
input[type="text"], input[type="search"], input[type="email"], input[type="password"], input[type="number"], select, textarea { min-height: var(--ctl-h); border-radius: var(--r-sm); border: 1px solid var(--line); background: var(--panel); color: var(--ink); padding: 0 var(--sp-3); font-size: 14px; transition: border-color .15s var(--ease), box-shadow .15s var(--ease); }
input:hover, select:hover, textarea:hover { border-color: rgba(110, 148, 255, 0.55); }
input:focus, select:focus, textarea:focus { outline: none; border-color: var(--brand); box-shadow: var(--ring); }
@media (max-width: 720px) {
.btn { min-height: 44px; }
}
.auth-wrap { min-height: 88vh; }
.auth-card { max-width: 400px; padding: 32px 30px; border-radius: var(--r-lg); box-shadow: var(--shadow-lg); }
.auth-card h2 { font-size: 22px; font-weight: 800; letter-spacing: -0.4px; }
.auth-sub { margin-bottom: var(--sp-5); }
.form-row { margin-bottom: var(--sp-4); }
.form-row input, .form-row select, .form-row textarea { border-radius: var(--r-sm); }
:root { --grp-bg: #eef1f6; --grp-bg-hover: #e5eaf3; }
@media (prefers-color-scheme: dark) {
:root, :root[data-theme="dark"] { --grp-bg: #1b2431; --grp-bg-hover: #223044; }
}
.exm-q-opt.ok { background: var(--green-soft); color: var(--ink); font-weight: 600; }

/* ── 协议链接（2026-11-06 手工追加；重新生成 login.css 时记得补回） ── */
.auth-legal {
  margin: 14px 0 0;
  text-align: center;
  font-size: 12px;
  line-height: 1.7;
  color: var(--ink-soft);
}
.auth-legal a { color: var(--brand); text-decoration: none; }
.auth-legal a:hover { text-decoration: underline; }
