/* ============================================================
   论文助手 · AI 工具集 — 设计系统 + 落地页样式
   覆盖：设计 token / 通用组件 / 落地页；深浅色沿用 data-theme
   部署：替换原 style.css，并同步全站 <link> 的版本号（版本号以各页标签为准，此处不写死）
   ============================================================ */

/* 2026-10-08：原先在此处以外部引入方式加载字体（Sora / JetBrains Mono），已删除。
   原因：① 站点 CSP 仅允许同源资源，外部字体恒被拦；② 该字体 CDN 在国内不可达。
   结果：这两个字体从未渲染过一次 —— 删除它是零视觉变化，只是去掉死代码。
   ⛔ 不要加回来，也不要在 CSP 里为它开白：自托管（文件放 /fonts/ 下，用字体声明引入）
      才是唯一可行路径。
   ⛔ 本注释不复写任何域名，以免后续「是否残留外链」的检索被注释里的假命中带偏。 */

/* ---------- 思源宋体 Noto Serif SC · 自托管子集（P1-5 · 2026-10-09）----------
   由 scripts/build_cjk_font.py 生成：pyftsubset 精确子集，仅含站内实际用字
   （929 个汉字 + 拉丁/数字/标点 = 1025 字）。勿手改。
   实测：400=170.4KB / 600=173.2KB / 700=175.7KB（合计 519.3KB）。
   font-display:swap —— 加载失败回落系统字体，不出现豆腐块。 */
@font-face{font-family:'Noto Serif SC';font-style:normal;font-weight:400;font-display:swap;src:url('/fonts/NotoSerifSC-400.woff2') format('woff2')}
@font-face{font-family:'Noto Serif SC';font-style:normal;font-weight:600;font-display:swap;src:url('/fonts/NotoSerifSC-600.woff2') format('woff2')}
@font-face{font-family:'Noto Serif SC';font-style:normal;font-weight:700;font-display:swap;src:url('/fonts/NotoSerifSC-700.woff2') format('woff2')}

/* ---------- Design Tokens ---------- */
:root {
  --brand-50:#F0FDFA; --brand-100:#CCFBF1; --brand-200:#99F6E4; --brand-300:#5EEAD4;
  --brand-400:#2DD4BF; --brand-500:#14B8A6; --brand-600:#0D9488; --brand-700:#0F766E; --brand-800:#115E59; --brand-900:#134E4A;

  /* 头像主题色板（用户可选，0-7；白字对比均达 AA）。纯色，无渐变。 */
  --ava-0:#4F46E5; --ava-1:#0B7C70; --ava-2:#2563EB; --ava-3:#B45309;
  --ava-4:#DC2626; --ava-5:#7C3AED; --ava-6:#15803D; --ava-7:#0E7490;

  --bg:#FFFFFF; --surface:#F7F8FA; --surface-2:#EEF0F4;
  /* P0-2（2026-10-03）：--panel 此前**从未定义**。paper.html 的 .pdf-chat-box /
     .graph-card 写的是 background:var(--panel,#fff) → 变量不存在时恒回退纯白，
     暗色主题下就变成「白底 + 暗色文字 #F1F5F9」，实测对比度仅 1.09:1，几乎不可读。
     浅色取 #FFFFFF，与原回退值完全一致 → 浅色观感零变化（刻意保持现状）。 */
  --panel:#FFFFFF;
  /* 三级文字保持可分辨的亮度差，且都满足 AA 4.5:1（含 surface 底） */
  --text:#0B1220; --text-2:#334155; --text-3:#5D6B7E;
  --border:#E2E8F0; --border-strong:#CBD5E1;

  /* 语义色全部加深到 4.5:1 以上（原 warning/success 在 3.2~3.3:1，12px 文字不达标） */
  --success:#15803D; --warning:#B45309; --danger:#B91C1C; --info:#0369A1;
  --success-soft:rgba(21,128,61,.10);  --success-line:rgba(21,128,61,.28);
  --warning-soft:rgba(180,83,9,.10);   --warning-line:rgba(180,83,9,.26);
  --danger-soft:rgba(185,28,28,.10);   --danger-line:rgba(185,28,28,.28);
  --info-soft:rgba(3,105,161,.10);     --info-line:rgba(3,105,161,.28);
  --bad:#DC2626; /* resume 内联脚本引用别名 */

  /* 渐变末端由 #8B5CF6 改深为 #7C3AED：白字对比度 4.22:1 -> 5.70:1，达到 AA */
  --grad-cta:linear-gradient(135deg,#0F766E,#115E59);
  --grad:var(--grad-cta);
  --grad-soft:linear-gradient(135deg,#F0FDFA,#CCFBF1);
  --radius-sm:10px; --radius:14px; --radius-lg:18px; --radius-xl:24px;
  /* 分层阴影：远近两层，hover 只升一档，避免生硬跳变 */
  --shadow-sm:0 1px 2px rgba(11,18,32,.05),0 1px 3px rgba(11,18,32,.04);
  --shadow:0 4px 12px -2px rgba(11,18,32,.07),0 12px 32px -8px rgba(11,18,32,.10);
  --shadow-lg:0 12px 32px -8px rgba(11,18,32,.13),0 32px 64px -16px rgba(11,18,32,.16);
  --maxw:1160px;
  --maxw-xl:1280px;
  --brand-solid:#0F766E;
  --brand-on-solid:#FFFFFF;
  --focus-ring:var(--brand-700);
  --tap:44px;
  --gap:var(--space-4); --gap-lg:var(--space-5); --pad-card:var(--space-5);
  --sec-y:48px; --radius-pill:999px;
  --topbar-h:111px;   /* qa-v25 实测：≤640 顶栏 offsetHeight 111（110.92） */
  --adm-topbar-h:56px; /* 后台顶栏，与 admin.css 保持一致 */  --space-1:4px; --space-2:8px; --space-3:12px; --space-4:16px; --space-5:24px; --space-6:32px;
  --font:"Noto Serif SC","PingFang SC","Microsoft YaHei","Noto Sans SC",system-ui,-apple-system,"Segoe UI",sans-serif;
  --mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  /* 动效 token（Tier 1 redesign · 2026-09-24） */
  --dur-instant:80ms; --dur-fast:140ms; --dur-base:200ms; --dur-enter:260ms; --dur-view:320ms; --dur-stagger:50ms;
  --ease-out:cubic-bezier(.33,1,.68,1); --ease-standard:cubic-bezier(.2,0,.2,1); --ease-in-out:cubic-bezier(.4,0,.2,1); --ease-spring:cubic-bezier(.34,1.56,.64,1);
}
[data-theme="dark"] {
  --bg:#0B0F1A; --surface:#111827; --surface-2:#1E293B;
  /* P0-2：深色的 --panel。取 #1E293B（= 本主题的 --surface-2，与卡面同层），
     与 --text #F1F5F9 的对比度约 13.4:1，远高于 AA 要求的 4.5:1；
     同时与 --surface #111827 有可辨层次，不会和页面底色糊成一片。 */
  --panel:#1E293B;
  /* 原 --text-2 与 --text-3 都是 #94A3B8，三级层级塌陷；此处重新拉开 */
  --text:#F1F5F9; --text-2:#B6C2D4; --text-3:#8595AA;
  --border:#273244; --border-strong:#3B4A63;

  /* 补全：原深色只重定义 50/100/300/500/600/700，
     导致 --brand-200/400/800/900 仍是浅色值，
     例如 .conclusion-box 用 brand-800 在 brand-50 底上对比度仅 1.63:1，几乎不可读 */
  --brand-50:#042F2E; --brand-100:#053F3C; --brand-200:#0B5753;
  --brand-300:#0D9488; --brand-400:#14B8A6;
  --brand-500:#14B8A6; --brand-600:#14B8A6; --brand-700:#2DD4BF;
  --brand-800:#5EEAD4; --brand-900:#99F6E4;
  --brand-solid:#0F766E; --brand-on-solid:#FFFFFF;

  --success:#4ADE80; --warning:#FBBF24; --danger:#F87171; --info:#38BDF8;
  --success-soft:rgba(74,222,128,.14); --success-line:rgba(74,222,128,.34);
  --warning-soft:rgba(251,191,36,.14); --warning-line:rgba(251,191,36,.32);
  --danger-soft:rgba(248,113,113,.14); --danger-line:rgba(248,113,113,.34);
  --info-soft:rgba(56,189,248,.14);    --info-line:rgba(56,189,248,.32);

  --grad:var(--grad-cta);
  --grad-soft:linear-gradient(135deg,#042F2E,#0B3B39);

  --shadow-sm:0 1px 2px rgba(0,0,0,.4),0 1px 3px rgba(0,0,0,.3);
  --shadow:0 4px 12px -2px rgba(0,0,0,.45),0 12px 32px -8px rgba(0,0,0,.55);
  --shadow-lg:0 12px 32px -8px rgba(0,0,0,.5),0 32px 64px -16px rgba(0,0,0,.6);
}

/* ---------- Reset / Base ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;font-family:var(--font);color:var(--text);background:var(--bg);
  line-height:1.75;font-size:16px;-webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;font-synthesis:none}
h1,h2,h3,h4,p{margin:0}
a{color:var(--brand-700);text-decoration:none}
a:hover{text-decoration:underline}
/* 链接态按钮：替换原先的空锚点（D-28 死链门禁），外观对齐全局 a */
.link-btn{font-family:inherit;font-size:inherit;color:var(--brand-700);background:none;
  border:none;padding:0;margin:0;cursor:pointer;text-decoration:none;text-align:left}
.link-btn:hover{text-decoration:underline}
img{max-width:100%;display:block}
.container{width:100%;max-width:var(--maxw);margin:0 auto;padding:0 24px}
.grad{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.hidden{display:none !important}

/* 焦点可见（无障碍） */
:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px;border-radius:4px}

/* ---------- 按钮 ---------- */
.btn,.primary-btn,.ghost-btn,.icon-btn{font-family:inherit;cursor:pointer;border:none;
  border-radius:var(--radius-sm);transition:transform var(--dur-base) var(--ease-out),background var(--dur-base) var(--ease-out),box-shadow var(--dur-base) var(--ease-out)}
.primary-btn{background:var(--grad);color:#fff;padding:12px 22px;font-size:15px;font-weight:500;
  box-shadow:var(--shadow-sm)}
.primary-btn:hover{transform:translateY(-1px);box-shadow:var(--shadow)}
.primary-btn:active{transform:scale(.97)}
/* D-26：这三个控件已改用 aria-disabled（焦点可达/读屏可读），此处补回等效视觉态 */
.primary-btn[aria-disabled="true"]{opacity:.55;cursor:not-allowed;transform:none}
.ask-box input[aria-disabled="true"]{opacity:.6;cursor:not-allowed}
.primary-btn:disabled{opacity:.55;cursor:not-allowed;transform:none}
.ghost-btn{background:transparent;color:var(--text-2);padding:9px 14px;font-size:14px;border:1px solid var(--border)}
.ghost-btn:hover{background:var(--surface);color:var(--text);transform:translateY(-1px)}
.fmt-select{background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:10px;padding:6px 8px;font-size:13px;margin-left:4px}
#cite-output{white-space:pre-wrap;word-break:break-all;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:12px;font-size:13px;line-height:1.6;max-height:50vh;overflow:auto;margin:10px 0}
.icon-btn{background:var(--surface);color:var(--text);width:38px;height:38px;border-radius:10px;
  display:inline-flex;align-items:center;justify-content:center;font-size:18px;border:1px solid var(--border)}
.icon-btn:hover{background:var(--surface-2);transform:translateY(-1px)}
.btn-lg{padding:14px 28px;font-size:16px}

/* ---------- 顶栏（三页共用） ---------- */
/* 顶栏：先给不透明背景（旧浏览器降级），再交给 color-mix 增强 */
.topbar{position:sticky;top:0;z-index:40;display:flex;align-items:center;justify-content:space-between;
  gap:12px;padding:12px 20px;background:var(--bg);
  backdrop-filter:saturate(160%) blur(10px);border-bottom:1px solid var(--border);
  flex-wrap:wrap;row-gap:6px}
@supports (background:color-mix(in srgb,red 50%,transparent)){
  .topbar{background:color-mix(in srgb,var(--bg) 88%,transparent)}
}
.brand{display:flex;align-items:center;gap:10px;font-weight:600;color:inherit;text-decoration:none}

/* 统一导航栏 */
.nav{display:flex;align-items:center;gap:2px;flex:1 1 auto}
.nav-link{color:var(--text-2);font-size:14px;padding:8px 12px;border-radius:var(--radius-sm);text-decoration:none;white-space:nowrap}
.nav-link:hover{color:var(--text);background:var(--surface)}
.nav-link.active{color:var(--brand-700);background:var(--brand-50)}
.nav-dropdown{position:relative}
.nav-dropdown>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:2px}
.nav-dropdown>summary::-webkit-details-marker{display:none}
.caret{font-size:10px;opacity:.6}
.nav-menu{position:absolute;top:calc(100% + 6px);left:0;min-width:180px;background:var(--bg);
  border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:6px;display:none;z-index:50}
.nav-menu a{display:block;padding:9px 12px;border-radius:var(--radius-sm);color:var(--text-2);font-size:14px;text-decoration:none}
.nav-menu a:hover{background:var(--surface);color:var(--text)}
.nav-dropdown:hover .nav-menu,.nav-dropdown[open] .nav-menu,.nav-dropdown:focus-within .nav-menu{display:block}
.nav-back{margin-right:2px}
@media (max-width:575px){
  .brand-sub{display:none}
  .nav-link{padding:8px 9px;font-size:13px}
  .home-quota{display:none}
  .nav-menu{left:auto;right:0;min-width:160px;max-width:calc(100vw - 24px)}
}

/* 定价页能力对比表（响应式） */
.table-scroll{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
.cmp-table{width:100%;border-collapse:collapse;font-size:14px;min-width:520px}
.cmp-table th,.cmp-table td{padding:12px 14px;text-align:left;border-bottom:1px solid var(--border)}
.cmp-table thead th{color:var(--text-2);font-weight:600;background:var(--surface)}
.cmp-table tbody tr:hover{background:var(--surface)}
.cmp-table .yes{color:var(--success);font-weight:600}
.cmp-table .no{color:var(--text-3)}
.pricing-more{text-align:center;margin-top:10px}

/* 开发中模块卡片 */
.module-card.coming{opacity:.9}
.module-card.coming .module-icon{filter:grayscale(.35)}
.badge-soon{display:inline-block;margin-top:8px;font-size:12.5px;color:var(--warning);
  background:var(--warning-soft);border:1px solid var(--warning-line);padding:3px 11px;border-radius:999px}
.brand-logo,.logo{height:36px}
.brand-name{font-size:16px}
.brand-sub{color:var(--text-2);font-size:14px;font-weight:400}
.topbar-right{display:flex;align-items:center;gap:10px;flex-wrap:wrap;flex-shrink:1;min-width:0;row-gap:6px;margin-left:auto}
.user-name{color:var(--text-2);font-size:14px;max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.home-quota{display:flex;align-items:center;gap:10px;font-size:12px;color:var(--text-2);
  background:var(--surface);padding:6px 10px;border-radius:999px;border:1px solid var(--border)}
.home-quota .tier{color:var(--brand-700);font-weight:600}
.topbar-link{color:var(--text-2);font-size:14px}
.topbar-link:hover{color:var(--brand-700);text-decoration:none}

/* 主题切换图标 */
.theme-toggle .i-moon{display:none}
[data-theme="dark"] .theme-toggle .i-sun{display:none}
[data-theme="dark"] .theme-toggle .i-moon{display:inline}

/* ---------- 弹窗（三页共用 auth） ---------- */
.modal{position:fixed;inset:0;z-index:60;display:flex;align-items:center;justify-content:center;
  background:rgba(15,23,42,.5);padding:16px}
.modal-card{width:100%;max-width:380px;background:var(--bg);border-radius:var(--radius-lg);
  padding:26px;box-shadow:var(--shadow-lg);border:1px solid var(--border);
  animation:rise .25s ease}
@keyframes rise{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.modal-card h3{font-size:18px;margin-bottom:8px}
.modal-note{color:var(--text-2);font-size:13px;margin-bottom:14px}
.login-input{width:100%;padding:11px 13px;margin-bottom:12px;border:1px solid var(--border);
  border-radius:var(--radius-sm);font-size:14px;background:var(--surface);color:var(--text)}
.login-input:focus{outline:2px solid var(--focus-ring);outline-offset:1px;border-color:var(--brand-500)}
.auth-tabs{display:flex;gap:8px;margin-bottom:14px}
.auth-tab{flex:1;padding:9px;border:1px solid var(--border);background:var(--surface);border-radius:var(--radius-sm);
  cursor:pointer;color:var(--text-2);font-size:14px}
.auth-tab.active{background:var(--brand-600);color:#fff;border-color:var(--brand-600)}
.auth-consent{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text-2);margin-bottom:12px}
.login-error{color:var(--danger);font-size:13.5px;margin-bottom:10px;background:var(--danger-soft);
  border:1px solid var(--danger-line);padding:9px 12px;border-radius:var(--radius-sm)}
.auth-switch{text-align:center;font-size:13px;color:var(--text-2);margin-top:12px}
.modal-close{margin-top:14px;width:100%;padding:9px;background:var(--surface);border:1px solid var(--border);
  border-radius:var(--radius-sm);cursor:pointer;color:var(--text-2);font-size:13px}

/* ---------- 落地页 ---------- */
.hero{display:grid;gap:28px;align-items:center;padding:56px 0 36px}
.hero-title{font-size:clamp(28px,6vw,46px);line-height:1.2;font-weight:600;letter-spacing:-.5px}
.hero-sub{color:var(--text-2);font-size:16px;margin-top:16px;max-width:540px}
.hero-cta{display:flex;flex-wrap:wrap;gap:12px;margin-top:24px}
.hero-art{display:flex;justify-content:center}
.hero-art > svg{width:100%;max-width:360px;height:auto}

.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:8px 0 40px;
  background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:22px}
.stat{text-align:center}
.stat b{display:block;font-size:26px;color:var(--brand-700);line-height:1.1}
.stat span{color:var(--text-2);font-size:13px}

.section{padding:48px 0}
.section-head{text-align:center;max-width:640px;margin:0 auto 32px}
.section-head h2{font-size:clamp(22px,4vw,32px);font-weight:600}
.section-head p{color:var(--text-2);margin-top:10px}

/* 工具双卡 */
.module-grid{display:grid;gap:18px;grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}
/* #40 主页 IA 双模块（duo-grid）：复用 module-card 基类+修饰；零新增 :root token；
   增量④：duo-grid 为 hero 直接子元素（row2，grid-column:1/-1 跨两列全宽）——结构性杜绝
   与 hero 右列 demo 卡并排（R1 根因/C10 零重叠守）；≤900 单列纵排（布局断点，非字号规则——R1 冻结口径）；
   390 档 tool-list 换行+微描述隐藏 */
.duo-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-8);align-items:stretch;grid-column:1/-1}
/* C12 实测回填（padding 微调授权内）：--space-7(40) 首轮值实测 duo 卡 615px 高、duoBottom=990>900，
   收至 --space-6(32)（消费值变更，非新 token）；其余卡内间距同步收紧见下行 */
.module-card.duo{padding:var(--space-6);display:flex;flex-direction:column}
.tool-list{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}
.tool-link{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3);
  padding:6px 11px;border:1px solid var(--border);border-radius:var(--radius-lg);
  color:var(--text);text-decoration:none;
  transition:border-color var(--dur-base) var(--ease-out),background var(--dur-base) var(--ease-out)}
.tool-link:hover{border-color:var(--brand-300);background:var(--brand-50)}
.tool-desc{font-size:12px;color:var(--text-2)}
.duo-cta{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);
  margin-top:12px;padding-top:10px;border-top:1px solid var(--border)}
.duo-cta-txt{font-size:13px;color:var(--text-2)}
.duo-work{margin-top:12px;padding-top:10px;border-top:1px solid var(--border);
  font-size:13px;color:var(--text-2)}
@media (max-width:900px){.duo-grid{grid-template-columns:1fr}}
@media (max-width:640px){.tool-desc{display:none}.tool-link{flex-wrap:wrap}}
.module-card{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-lg);
  padding:26px;transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease}
.module-card:hover{transform:translateY(-4px);box-shadow:var(--shadow);border-color:var(--brand-300)}
.module-icon{font-size:34px;margin-bottom:12px;display:flex;align-items:center;color:var(--brand-600)}
/* 统一 SVG 图标（内联 sprite + use），跟随字号缩放 */
.ico-svg{width:1em;height:1em;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:0 0 auto}
.module-title{font-size:19px;font-weight:600;margin-bottom:8px}
.module-desc{color:var(--text-2);font-size:14px;margin-bottom:16px}
.module-cta{color:var(--brand-700);font-weight:500;font-size:14px}

/* 特性四列 */
.features{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
.feature{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);
  padding:20px;transition:transform .2s ease}
.feature:hover{transform:translateY(-3px)}
.feature .ico{width:42px;height:42px;border-radius:12px;background:var(--brand-50);color:var(--brand-600);
  display:flex;align-items:center;justify-content:center;font-size:20px;margin-bottom:12px}
.feature h3{font-size:16px;margin-bottom:6px}
.feature p{color:var(--text-2);font-size:13px}

/* 示例报告卡 */
.sample{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);
  padding:24px;max-width:760px;margin:0 auto}
.sample h4{font-size:15px;color:var(--brand-700);margin-bottom:10px}
.sample .ref{font-size:12px;color:var(--brand-700);font-family:var(--mono)}

/* 定价 */
.pricing{display:grid;gap:18px;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));align-items:stretch}
.plan{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-lg);padding:26px;
  display:flex;flex-direction:column}
.plan.popular{border-color:var(--brand-500);box-shadow:var(--shadow);position:relative}
.plan.popular::after{content:"推荐";position:absolute;top:-12px;right:22px;background:var(--brand-solid);color:var(--brand-on-solid);
  font-size:12px;padding:4px 12px;border-radius:999px}
.plan h3{font-size:18px}
.plan .price{font-size:32px;font-weight:600;margin:12px 0}
.plan .price small{font-size:14px;color:var(--text-2);font-weight:400}
.plan ul{list-style:none;padding:0;margin:14px 0 20px;display:grid;gap:10px}
.plan li{font-size:14px;color:var(--text-2);display:flex;gap:8px}
.plan li::before{content:"✓";color:var(--success);font-weight:700}
.plan .primary-btn,.plan .ghost-btn{margin-top:auto;text-align:center}

/* FAQ 手风琴 */
.faq{max-width:760px;margin:0 auto;display:grid;gap:10px}
.faq details{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}
.faq summary{padding:16px 18px;cursor:pointer;font-weight:500;font-size:15px;list-style:none;
  display:flex;justify-content:space-between;align-items:center}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";color:var(--brand-700);font-size:20px;transition:transform .2s}
.faq details[open] summary::after{content:"−"}
.faq .ans{padding:0 18px 16px;color:var(--text-2);font-size:14px}

/* CTA 横幅 + 页脚 */
.cta-band{background:var(--grad);color:#fff;border-radius:var(--radius-xl);padding:40px 28px;text-align:center}
.cta-band h2{font-size:clamp(20px,4vw,28px)}
.cta-band p{opacity:.9;margin:10px 0 20px}
.cta-band .primary-btn{background:#fff;color:var(--brand-700)}
.footer{display:flex;flex-wrap:wrap;gap:14px;justify-content:space-between;align-items:center;
  padding:28px 0 40px;color:var(--text-3);font-size:13px;border-top:1px solid var(--border);margin-top:40px}
.admin-link{color:var(--text-3)}
.tip-qr{width:96px;border-radius:8px}

/* 顶栏服务状态（role="status"）：576-767px 下它与 nav 争宽会把 .topbar 撑高，
   故移出排版流但保留读屏可读（用 .sr-only 手法，不用 display:none） */
@media (max-width:767px){
  #status-text{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
}
/* ---------- 响应式 ---------- */
@media (min-width:768px){
  /* #40 增量④：恢复两列模板（row1=左文案|右 demo 卡）。⚠️ padding 档由 :808 基础层统管——
     本块在源序上先于 :808，同特异性下其 padding 声明会被 :808 覆盖（v52 实测 padding=64 即此因），
     故 768+ 的 36/16 档写在 :808 之后的媒体层，见「增量④ C12 预算」块 */
  .hero{grid-template-columns:1.05fr .95fr}
}
@media (max-width:575px){
  .stats{grid-template-columns:1fr;gap:14px}
  .home-quota{display:none}
  .brand-sub{display:none}
  /* 顶栏收纳：允许换行 + 导航横向滚动，修复 390px 下「登录/注册」竖排溢出 */
  .topbar{flex-wrap:wrap;row-gap:6px;padding:10px 12px;gap:8px}
  .nav{min-width:0;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}
  .nav::-webkit-scrollbar{display:none}
  .topbar-right{flex-shrink:0;gap:6px}
  #history-btn{display:none}
}
@media (prefers-reduced-motion:reduce){
  /* 精细化：保留透明度/颜色淡入（160ms），移除位移·缩放·旋转与循环动画 */
  *,*::before,*::after{
    animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;
    transition-property:opacity,background-color,border-color,color,fill,stroke!important;
    transition-duration:160ms!important;
  }
  .primary-btn:hover,.ghost-btn:hover,.icon-btn:hover,.search-btn:hover,.module-card:hover,.feature:hover,.plan:hover,.paper-card:hover,.sample:hover{transform:none!important}
  /* B8：揭示与进度条在「减少动态」下立即可见、移除位移/缩放/循环 */
  html.reveal-ready [data-reveal]{transform:none!important;opacity:1!important;transition:none!important}
  .resume-progress .seg.current{animation:none!important}
}

/* ============================================================
   功能页：论文助手 / AI 简历优化（复用上方 token 与 .modal/.auth 体系）
   ============================================================ */

/* ---------- 论文助手页 ---------- */
.page{max-width:var(--maxw);margin:0 auto;padding:22px 20px 90px}
.page-hero{text-align:center;padding:20px 0 24px;background-image:radial-gradient(var(--grid-dot) 1.4px,transparent 1.4px);
  background-size:26px 26px;background-position:-13px -13px}
.page-hero h1{font-size:clamp(24px,4vw,var(--text-h1));font-weight:600;margin:0;line-height:var(--leading-h1)}
.page-hero p{color:var(--text-2);margin:10px auto 0;max-width:620px;font-size:15px}
.search-card{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-lg);
  padding:20px;box-shadow:var(--shadow-sm);margin-bottom:22px}
.search-row{display:flex;gap:10px;flex-wrap:wrap}
.search-input{flex:1;min-width:200px;padding:12px 14px;border:1px solid var(--border);border-radius:var(--radius-sm);
  background:var(--surface);color:var(--text);font-size:15px;font-family:inherit}
.search-input:focus{outline:2px solid var(--focus-ring);outline-offset:1px;border-color:var(--brand-500)}
.search-btn{background:var(--grad);color:#fff;border:none;border-radius:var(--radius-sm);padding:12px 22px;
  font-size:15px;font-weight:500;cursor:pointer;transition:transform .2s ease}
.search-btn:hover{transform:translateY(-1px);box-shadow:var(--shadow)}
.search-options{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-top:14px}
.opt{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--text-2)}
.opt select{padding:9px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);
  background:var(--surface);color:var(--text);font-size:14px;font-family:inherit}
.opt select:focus{outline:2px solid var(--focus-ring);outline-offset:2px;border-color:var(--brand-500)}
.content-grid{display:grid;gap:20px;grid-template-columns:1fr}
@media (min-width:992px){.content-grid{grid-template-columns:minmax(0,1fr) minmax(0,1.05fr)}}
.panel{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-lg);padding:18px;box-shadow:var(--shadow-sm)}
.panel-header{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px;flex-wrap:wrap}
.panel-header h2{font-size:var(--text-h3);font-weight:600;line-height:var(--leading-h3);margin:0}
.count-badge{background:var(--brand-100);color:var(--brand-700);font-size:12px;padding:2px 10px;border-radius:999px}
.paper-list{display:grid;gap:12px}
/* app.js 生成的卡片无内容包裹层，故用相对定位 + 绝对定位勾选框实现左缩进 */
.paper-card{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);
  padding:14px 16px 14px 44px;cursor:pointer;transition:border-color .2s ease,transform .2s ease}
.paper-card:hover{border-color:var(--brand-300);transform:translateY(-2px)}
.paper-card.selected{border-color:var(--brand-500);background:var(--brand-50)}
.paper-card .check{position:absolute;left:14px;top:14px;width:20px;height:20px;border-radius:6px;
  border:2px solid var(--border-strong);display:flex;align-items:center;justify-content:center;font-size:13px;color:#fff}
.paper-card.selected .check{background:var(--brand-600);border-color:var(--brand-600)}
.paper-idx{position:absolute;right:14px;top:12px;font-size:12px;color:var(--text-3)}
.paper-title{font-weight:600;font-size:15px;line-height:1.4}
.paper-meta{color:var(--text-3);font-size:12px;margin-top:4px;display:flex;flex-wrap:wrap;gap:6px}
.paper-abstract{color:var(--text-2);font-size:13px;margin-top:8px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.paper-tags{margin-top:8px;display:flex;flex-wrap:wrap;gap:6px}
.paper-tags .tag{font-size:11px;padding:1px 8px;border-radius:999px;background:var(--surface-2);color:var(--text-2)}
.paper-links{margin-top:8px;display:flex;gap:10px}
.paper-link{font-size:13px;color:var(--brand-700)}
/* 总结区富文本 / 报告结构（app.js 注入） */
.summary-content .pdf-refs{margin:16px 0 0;padding-left:20px}
.summary-content .pdf-refs .ref-title{font-weight:600}
.summary-content .pdf-refs .ref-meta{color:var(--text-3);font-size:12px;margin-left:6px}
.summary-content .pdf-refs .ref-url{display:block;color:var(--brand-700);font-size:12px;word-break:break-all}
.summary-content .rpt-head{margin:18px 0 6px}
.summary-content .rpt-title{font-size:17px;font-weight:600}
.summary-content .rpt-sub,.summary-content .rpt-meta{color:var(--text-3);font-size:12px}
.summary-content .rpt-body{margin-top:8px}
/* 骨架屏（加载中） */
.skeleton-card{border:1px solid var(--border);border-radius:var(--radius);padding:16px;background:var(--surface)}
.sk{background:var(--border);border-radius:6px;animation:sk 1.2s ease-in-out infinite}
.sk-box{width:20px;height:20px;border-radius:6px;margin-bottom:10px}
.sk-title{height:14px;width:70%;margin-bottom:8px}
.sk-meta{height:11px;width:40%;margin-bottom:12px}
.sk-line{height:11px;width:100%;margin:6px 0}
.sk-line.short{width:60%}
.sk-head{height:14px;width:40%;margin-bottom:8px}
@keyframes sk{0%,100%{opacity:.5}50%{opacity:1}}
/* 我的记录内联结构 */
.hist-head{display:flex;flex-wrap:wrap;gap:8px;font-size:12px;color:var(--text-3)}
.hist-time{font-weight:600;color:var(--text)}
.hist-q{font-size:13px;margin-top:6px}
.hist-titles{font-size:13px;color:var(--text-2);margin-top:4px}
.hist-excerpt{font-size:12px;color:var(--text-3);margin-top:4px}
.hist-loading,.hist-empty{color:var(--text-3);font-size:13px;padding:10px 0}
/* 吐司图标 */
.toast-ico{width:16px;height:16px;margin-right:6px;vertical-align:-3px}
/* 选中态时给底部浮条留白 */
body.has-selection .page{padding-bottom:120px}
.empty-state{text-align:center;color:var(--text-3);padding:30px 10px}
.empty-state svg{width:54px;height:54px;color:var(--border-strong);margin-bottom:8px}
.empty-state .hint{font-size:12px;color:var(--text-3)}
.conclusion-box{background:var(--brand-50);border:1px solid var(--brand-200);border-radius:var(--radius);
  padding:12px 14px;margin-bottom:14px;font-size:14px;color:var(--brand-800)}
.summary-content{font-size:14px;line-height:1.7;color:var(--text);word-break:break-word}
.summary-content h1,.summary-content h2,.summary-content h3{margin:14px 0 6px;line-height:1.3}
.summary-content blockquote{margin:10px 0;padding:8px 14px;border-left:3px solid var(--brand-400);
  background:var(--surface);border-radius:0 var(--radius-sm) var(--radius-sm) 0;color:var(--text-2)}
.summary-content pre{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px;overflow:auto}
.summary-content a{color:var(--brand-700);word-break:break-all}
.adv-box{margin-top:14px;border-top:1px solid var(--border);padding-top:12px}
.adv-box summary{cursor:pointer;color:var(--text-2);font-size:13px;list-style:none}
.adv-box summary::-webkit-details-marker{display:none}
.adv-inner{margin-top:10px;display:grid;gap:10px}
.default-req,.skill-name,.report-req{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);
  background:var(--surface);color:var(--text);font-size:14px;font-family:inherit}
.report-req{min-height:64px;resize:vertical}
.skill-toggle{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text-2)}
.ask-box{display:flex;gap:10px;margin-top:14px}
.ask-box input{flex:1;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font-size:14px;font-family:inherit}
.ask-box input:focus,.default-req:focus,.skill-name:focus,.report-req:focus{outline:2px solid var(--focus-ring);outline-offset:1px;border-color:var(--focus-ring)}
.loading{display:flex;align-items:center;gap:10px;color:var(--text-2);padding:14px 0}
.spinner{width:22px;height:22px;border:3px solid var(--border);border-top-color:var(--brand-500);border-radius:50%;animation:spin 1s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.error-banner{background:var(--danger-soft);color:var(--danger);
  border:1px solid var(--danger-line);border-radius:var(--radius-sm);padding:11px 15px;font-size:14.5px}
.select-bar{position:fixed;left:50%;transform:translateX(-50%);bottom:16px;width:min(720px,92vw);z-index:30;
  display:flex;align-items:center;gap:12px;justify-content:center;background:var(--bg);border:1px solid var(--border);
  border-radius:var(--radius);padding:12px 16px;box-shadow:var(--shadow-lg)}
.select-count{font-size:14px;color:var(--text-2)}
.status-dot{width:9px;height:9px;border-radius:50%;background:var(--text-3);display:inline-block}
.status-dot.ok{background:var(--success)}
.status-dot.err{background:var(--danger)}
.status-text{font-size:13px;color:var(--text-2);white-space:nowrap;flex:0 0 auto}
.quota-chip{display:inline-flex;align-items:center;gap:6px;background:var(--surface);border:1px solid var(--border);
  border-radius:999px;padding:5px 12px;font-size:13px;color:var(--text-2);cursor:pointer}
.quota-chip:hover{background:var(--surface-2)}

/* Toast（app.js 动态创建 .toast + 类型类） */
.toast{position:fixed;right:18px;bottom:18px;background:var(--text);color:var(--bg);padding:11px 16px;
  border-radius:var(--radius-sm);font-size:14px;box-shadow:var(--shadow-lg);z-index:80;
  border-left:4px solid var(--brand-500);max-width:90vw}
.toast.out{opacity:0;transform:translateY(8px);transition:opacity .25s,transform .25s}
.toast.success,.toast.ok{border-left-color:var(--success)}
.toast.error,.toast.err{border-left-color:var(--danger)}
.toast.info{border-left-color:var(--info)}

/* 额度弹窗内部 */
.quota-card{max-width:420px}
.quota-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:16px 0}
.qstat{text-align:center;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px 6px}
.qnum{font-size:20px;font-weight:600;color:var(--brand-700)}
.qlab{font-size:11px;color:var(--text-2);margin-top:4px}
.quota-actions{display:flex;flex-wrap:wrap;gap:10px}
.quota-msg{font-size:13px;margin:10px 0}
.quota-msg.ok{color:var(--success)}
.quota-msg.err{color:var(--danger)}
.code-redeem{margin-top:12px;border-top:1px solid var(--border);padding-top:12px}
.code-row{display:flex;gap:8px}
.code-input{flex:1;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font-family:inherit}
.quota-tip{font-size:12px;color:var(--text-3);margin-top:8px}
.history-card{max-width:520px}
.hist-list{display:grid;gap:10px;max-height:52vh;overflow:auto}
.hist-item{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 12px;font-size:13px}
.hist-item .t{font-weight:500;color:var(--text)}
.hist-item .m{color:var(--text-3);font-size:12px;margin-top:3px}

/* ---------- AI 简历优化页 ---------- */
.resume-wrap{max-width:880px;margin:0 auto;padding:28px 18px 64px}
.resume-wrap header{text-align:center;margin-bottom:22px}
.resume-wrap h1{font-size:clamp(24px,4vw,var(--text-h1));font-weight:600;line-height:var(--leading-h1);background:var(--grad);
  -webkit-background-clip:text;background-clip:text;color:transparent;display:inline-block;margin:0}
.resume-wrap header p{color:var(--text-2);margin-top:8px}
.btn-home{display:inline-block;margin-top:10px;font-size:13px;color:var(--text-2);text-decoration:none}
.rcard{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-lg);padding:22px;margin-bottom:18px;box-shadow:var(--shadow-sm)}
.rcard h3{margin:0 0 14px;font-size:var(--text-h3);font-weight:600;line-height:var(--leading-h3)}
.rlabel{display:block;font-size:13px;color:var(--text-2);margin:14px 0 6px}
.rinput{width:100%;background:var(--surface);border:1px solid var(--border);color:var(--text);border-radius:var(--radius-sm);
  padding:11px 12px;font-size:14px;font-family:inherit;outline:none;resize:vertical}
.rinput:focus{border-color:var(--brand-500);box-shadow:0 0 0 3px var(--brand-100)}
.up{border:1.5px dashed var(--border-strong);border-radius:var(--radius);padding:20px;text-align:center;background:var(--surface);
  cursor:pointer;transition:.2s;color:var(--text-2)}
.up.drag{border-color:var(--brand-500);background:var(--brand-50)}
.raction{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}
/* 步骤5 #28 终态：4 任务卡并列常显（显隐开关退役，active 仅承载 fade 反馈） */
.step{display:block}
.step.active{animation:fade .3s}
/* 页面级入口区（#step1，步骤5 #28 C.2 推荐案）：视觉沿用 .rcard，与模块区纵距用 --space-9（§D 首消费点①） */
.entry-zone{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-lg);padding:22px;margin-bottom:var(--space-9);box-shadow:var(--shadow-sm)}
/* 4 并列卡网格（rgrid，resume 专属类名——避让 more 页既有 .module-grid 体系 L256/L849 的 gap 覆盖链）：
   卡间距 --space-8（§D 首消费点②）；auto-fit 窄屏自动降单列，零断点规则（R1 冻结合规） */
.rgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:var(--space-8);align-items:start}
.rgrid .rcard{margin-bottom:0}
@keyframes fade{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.score-wrap{display:flex;align-items:center;gap:26px;flex-wrap:wrap}
.ring{--p:0;width:120px;height:120px;border-radius:50%;flex:0 0 auto;
  background:conic-gradient(var(--brand-500) calc(var(--p)*1%),var(--border) 0);display:grid;place-items:center;position:relative}
.ring::before{content:"";position:absolute;inset:11px;background:var(--bg);border-radius:50%}
.ring b{position:relative;font-size:30px}
.ring span{position:relative;font-size:11px;color:var(--text-2)}
.dims{flex:1;min-width:240px}
.dim{margin:9px 0}
.dim .lab{display:flex;justify-content:space-between;font-size:13px;color:var(--text-2);margin-bottom:4px}
.bar{height:8px;background:var(--border);border-radius:6px;overflow:hidden}
.bar i{display:block;height:100%;background:var(--grad);border-radius:6px}
.gap{border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px 14px;margin:10px 0;background:var(--surface)}
.gap .kw{font-weight:600;color:var(--text)}
.tag{display:inline-block;font-size:11px;padding:2px 9px;border-radius:20px;margin-left:8px;vertical-align:middle}
.t-high{background:var(--danger-soft);color:var(--danger);border:1px solid var(--danger-line)}
.t-mid{background:var(--warning-soft);color:var(--warning);border:1px solid var(--warning-line)}
.t-low{background:var(--success-soft);color:var(--success);border:1px solid var(--success-line)}
.sug{color:var(--text-2);font-size:13px;margin-top:5px}
.hl{color:var(--success);font-size:13px}
.res-sec{margin:16px 0}
.res-sec h4{margin:0 0 8px;font-size:14px;color:var(--brand-700)}
.exp{padding:10px 0;border-bottom:1px solid var(--border)}
.exp .h{font-weight:600}
.exp ul{margin:6px 0 0;padding-left:18px;color:var(--text-2);font-size:13px}
.exp li{margin:3px 0}
.chg{font-size:13px;padding:8px 0;border-bottom:1px solid var(--border)}
.chg .r{color:var(--brand-500);font-size:11px}
.err{color:var(--danger);font-size:13px;margin-top:10px;min-height:16px}
.muted{color:var(--text-2);font-size:13px}
.overlay{position:fixed;inset:0;background:color-mix(in srgb,var(--bg) 72%,transparent);backdrop-filter:blur(2px);
  display:none;align-items:center;justify-content:center;z-index:90}
.overlay.show{display:flex}
/* 视觉隐藏：对读屏可见、对视觉隐藏。禁止 display:none、visibility:hidden —— 那样读屏同样读不到，等于没做 */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
/* 跳转主内容链接（保留可读、可聚焦；键盘可达） */
.skip-link{position:absolute;left:-9999px;top:8px;z-index:200;padding:8px 14px;background:var(--brand-700);color:#fff;border-radius:8px;font-weight:600}
.skip-link:focus{left:8px}
/* 滚动揭示（B6：仅用 opacity/transform）。
   作用域放在 html.reveal-ready 后：JS 加载即加该 class，未加载/被禁用时元素保持可见（fail-safe）。 */
html.reveal-ready [data-reveal]{opacity:0;transform:translateY(12px);transition:opacity .5s var(--ease-out),transform .5s var(--ease-out)}
html.reveal-ready [data-reveal].in{opacity:1;transform:none}
/* 简历步骤进度条（B7） */
.resume-progress{display:flex;gap:8px;margin:0 0 22px}
.resume-progress .seg{flex:1;height:8px;padding:0;border:0;border-radius:999px;background:var(--brand-100);cursor:default;transition:background var(--dur-base) var(--ease-out)}
.resume-progress .seg.done{background:var(--brand-600)}
.resume-progress .seg.current{background:var(--brand-600);animation:segPulse 1.4s var(--ease-in-out) infinite}
.resume-progress .seg.done,.resume-progress .seg.current{cursor:pointer}
@keyframes segPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.12)}}
.spin{width:46px;height:46px;border:4px solid var(--border);border-top-color:var(--brand-500);border-radius:50%;animation:spin 1s linear infinite}
.spin-txt{color:var(--text);margin-top:14px;text-align:center}
/* 兼容 resume 原按钮类名 */
.btn{background:var(--grad);color:#fff;border:none;border-radius:var(--radius-sm);padding:11px 20px;font-weight:600;cursor:pointer;font-size:14px;transition:.15s;font-family:inherit;min-height:var(--tap)}
.btn:hover{filter:brightness(1.08)}
.btn[disabled]{opacity:.5;cursor:not-allowed}
.ghost{background:transparent;border:1px solid var(--border);color:var(--text-2);border-radius:var(--radius-sm);padding:11px 20px;font-weight:600;cursor:pointer;font-size:14px;font-family:inherit}
.ghost:hover{color:var(--text);border-color:var(--brand-500)}

/* PDF 导出容器（app.js 动态创建 .pdf-wrap，注入 .rpt-* / .pdf-refs 结构后走 window.print） */
.pdf-wrap{display:none}
.pdf-wrap .rpt-head{margin-bottom:16px}
.pdf-wrap .rpt-title{font-size:22px;font-weight:700;line-height:1.3}
.pdf-wrap .rpt-sub{color:var(--text-2);margin-top:4px}
.pdf-wrap .rpt-meta{color:var(--text-3);font-size:12px;margin-top:4px}
.pdf-wrap .rpt-body{margin-top:10px}
.pdf-wrap .pdf-refs{margin:18px 0 0;padding-left:20px}
.pdf-wrap .pdf-refs .ref-title{font-weight:600}
.pdf-wrap .pdf-refs .ref-meta{color:var(--text-3);font-size:12px;margin-left:6px}
.pdf-wrap .pdf-refs .ref-url{display:block;color:var(--brand-700);font-size:12px;word-break:break-all;margin-top:2px}
.pdf-wrap .rpt-foot{margin-top:22px;padding-top:12px;border-top:1px solid var(--border);color:var(--text-3);font-size:12px}
.pdf-wrap h1,.pdf-wrap h2,.pdf-wrap h3{margin:16px 0 6px;line-height:1.3}
.pdf-wrap blockquote{margin:10px 0;padding:8px 14px;border-left:3px solid var(--brand-400);background:var(--surface);border-radius:0 var(--radius-sm) var(--radius-sm) 0;color:var(--text-2)}
.pdf-wrap pre{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px;overflow:auto}
.pdf-wrap a{color:var(--brand-700);word-break:break-all}
@media print{
  body > *:not(.pdf-wrap){display:none !important}
  .pdf-wrap{display:block !important;max-width:none;padding:0;background:var(--bg);color:var(--text)}
}

/* ---------- 文档页（隐私政策等，v18 补回） ---------- */
.doc-shell{max-width:820px;margin:0 auto;padding:32px 20px 56px}
.doc-card{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-lg);padding:32px;box-shadow:var(--shadow-sm)}
.doc-title{font-size:26px;font-weight:600;margin:0 0 6px}
.doc-meta{color:var(--text-2);font-size:13px;margin-bottom:18px}
.doc-lead{color:var(--text-2);font-size:14px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;margin:0 0 20px}
.doc-card h2{font-size:17px;font-weight:600;margin:24px 0 8px}
.doc-card p{color:var(--text-2);font-size:14px;margin:8px 0}
.doc-card ul{color:var(--text-2);font-size:14px;padding-left:20px;margin:8px 0;display:grid;gap:6px}
.doc-card b{color:var(--text)}
.doc-note{background:var(--surface);border-left:3px solid var(--brand-400);border-radius:0 var(--radius-sm) var(--radius-sm) 0;padding:10px 14px;margin:12px 0}
.doc-foot{margin-top:28px;padding-top:14px;border-top:1px solid var(--border)}
.doc-back{color:var(--brand-700);font-size:14px;text-decoration:none}
.doc-back:hover{text-decoration:underline}
@media (max-width:575px){.doc-card{padding:20px 16px}}

/* ============================================================
   移动端增强（v19.1，整站响应式统一）
   原则：同一套 HTML，靠断点 + 少量 JS 适配，断点收为 640 / 380
   ============================================================ */

/* 悬停位移/缩放只在支持 hover 的精确指针上保留；触控设备压平，避免点按抖动 */
@media (hover:hover) and (pointer:fine){
  .module-card:hover{transform:translateY(-4px);box-shadow:var(--shadow);border-color:var(--brand-300)}
  .feature:hover{transform:translateY(-3px)}
  .plan:hover{transform:translateY(-3px);box-shadow:var(--shadow)}
  .primary-btn:hover{transform:translateY(-1px);box-shadow:var(--shadow)}
  .ghost-btn:hover{transform:translateY(-1px)}
  .icon-btn:hover{transform:translateY(-1px)}
  .search-btn:hover{transform:translateY(-1px);box-shadow:var(--shadow)}
}
@media (hover:none){
  .module-card:hover,.feature:hover,.plan:hover{transform:none;box-shadow:var(--shadow-sm)}
  .primary-btn:hover,.ghost-btn:hover,.icon-btn:hover,.search-btn:hover{transform:none}
  .module-card:active,.feature:active,.plan:active{transform:scale(.99)}
}

@media (max-width:640px){
  .container{padding:0 16px}

  /* 顶栏：品牌 + 操作在第一行，导航落第二行横向滚动 */
  .topbar{flex-wrap:wrap;row-gap:8px;padding:8px 12px;gap:8px}
  .brand{order:1}
  .topbar-right{order:2;margin-left:auto;gap:6px}
  .nav{order:3;flex:1 1 100%;min-width:0;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}
  .nav::-webkit-scrollbar{display:none}
  .nav-link{padding:8px 10px;font-size:13px}
  .home-quota{display:none}
  .brand-sub{display:none}
  .icon-btn{min-width:var(--tap);min-height:var(--tap)}

  .section{padding:36px 0}
  .section-head{margin-bottom:24px}

  .hero{padding:36px 0 20px;gap:20px}
  .hero-cta .ghost-btn,.hero-cta .btn-lg{flex:1 1 100%}

  .cta-band{padding:30px 18px}
  .module-card,.feature,.plan{padding:20px}
  .stats{gap:8px;padding:16px}

  /* 文档页 */
  .doc-shell{padding:24px 14px 40px}
  .doc-card{padding:20px 16px}

  /* 论文助手页 */
  .page{padding:16px 14px 84px}
  .search-card{padding:16px}
  .search-row .search-input{flex:1 1 100%}
  .search-row .search-btn{flex:1 1 100%}
  .search-options{grid-template-columns:1fr 1fr;gap:10px}
  .opt select{width:100%}
  .panel{padding:16px}

  /* 简历页 */
  .resume-wrap{padding:22px 14px 48px}
  .rcard{padding:18px}
  .score-wrap{gap:18px}
  .raction .btn,.raction .ghost{flex:1 1 100%}
  .ring{width:104px;height:104px}
  .ring b{font-size:26px}

  /* 定价对比表在手机更易读 */
  .cmp-table th,.cmp-table td{padding:10px;font-size:13px}

  /* 触控目标 ≥44px */
  .primary-btn,.ghost-btn,.auth-tab,.modal-close{min-height:44px;display:inline-flex;align-items:center;justify-content:center}
  .nav-link,.footer a,.doc-back,.topbar-link{min-height:36px;display:inline-flex;align-items:center}

  /* 2026-10-06 移动端触摸目标补齐（实测 5 视口 × 9 页）：
     既有区块已覆盖 .primary-btn/.ghost-btn/.nav-link/.footer a，
     但以下可点控件实测高度仍 < 30px，手指点按命中率低。全部只加 min-height，
     不改 padding/字号/配色，不影响桌面端（整段在 max-width:640px 内）。 */
  .chips .chip{min-height:32px;display:inline-flex;align-items:center;padding-top:0;padding-bottom:0}
  .adv-box summary{min-height:36px;display:flex;align-items:center}
  .ask-box input,.code-input,.search-input,.rinput{min-height:40px}
  .link-btn{min-height:32px;display:inline-flex;align-items:center}
  /* 2026-10-06 移动端触摸目标第二轮（注入对照实验实测，2 视口 x 3 页）：
     ① input[type=file] 原生高度仅 25px——paper「PDF 精读」与 interview「追问预演」
        的上传框是页面里唯一可见的 file input；resume/account 的 4 个 file input
        均带 hidden（由 .btn / label 代为点击），min-height 对其零影响（实测 0x0）。
     ② 复选框本体仅 13x13，改为「整行 label 可点 + 视觉放大到 18px」：
        label 实测高度 21.4 -> 40px，比单独放大 checkbox 有效得多。
     ③ .fav-mini 内联定义在 paper.html 的 <style>（位于 stylesheet 之后），
        但它未声明 min-height，故此处追加不会与之冲突（实测 28 -> 32px）。
     实测所有目标宽度零变化、docScrollW == clientWidth（无横向溢出）。 */
  input[type="file"]{min-height:40px}
  label.skill-toggle{min-height:40px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
  label.skill-toggle input[type="checkbox"]{width:18px;height:18px;flex:0 0 auto}
  .fav-mini{min-height:32px}
  .modal-card{padding:20px 18px}
  .modal-card .primary-btn{width:100%}
  .login-input{padding:12px 13px;font-size:16px} /* 16px 防止 iOS 聚焦缩放 */

  /* 吐司在手机贴边全宽 */
  .toast{right:12px;left:12px;bottom:12px;max-width:none}

  /* 论文页底部选中浮条：按钮换行全宽 */
  .select-bar{padding:10px 12px;gap:10px;flex-wrap:wrap}
  .select-bar .primary-btn{flex:1 1 100%}
  body.has-selection .page{padding-bottom:132px}

  /* 弹窗底部按钮全宽 */
  .quota-actions .primary-btn,.quota-actions .ghost-btn,.code-row .primary-btn{flex:1 1 100%}
}

@media (max-width:380px){
  .hero-title{font-size:26px}
  .section-head h2{font-size:22px}
  .plan .price{font-size:28px}
  .search-options{grid-template-columns:1fr}
}


/* ============================================================
   v2 精修层 — 2026-09-19
   目标：修复确定性缺陷 · 提升正文可读性 · 收敛视觉语言
   策略：不改任何既有类名，仅追加覆盖规则，保证 paper/resume/
        pricing/about/privacy 五个页面零回归
   ============================================================ */

/* ---------- 1. 修复：主题切换按钮「太阳 + 月亮」双图标叠加 ----------
   原 CSS 选择器用 .theme-toggle，而按钮 class 是 .icon-btn，
   导致两条 display 规则全部落空，两个图标同时渲染。 */
#theme-toggle .i-moon{display:none}
[data-theme="dark"] #theme-toggle .i-sun{display:none}
[data-theme="dark"] #theme-toggle .i-moon{display:block}

/* ---------- 2. 顶栏：收紧节奏，补上「当前页」反馈 ---------- */
.topbar{padding:10px 24px;gap:14px;border-bottom:1px solid var(--border)}
.brand{gap:9px;flex:0 0 auto}
.brand-logo,.logo{height:30px;width:auto}
.brand-sub{font-size:13.5px;padding-left:11px;border-left:1px solid var(--border);line-height:1.2}
.nav{gap:4px;margin-left:6px}
.nav-link{font-size:14.5px;padding:9px 13px;border-radius:var(--radius-sm);transition:background .18s ease,color .18s ease}
.nav-link:hover{text-decoration:none}
.nav-link.active,
.nav-link[aria-current="page"]{color:var(--brand-700);background:var(--brand-50);font-weight:600}
[data-theme="dark"] .nav-link.active,
[data-theme="dark"] .nav-link[aria-current="page"]{color:var(--brand-300)}
.nav-menu{padding:8px;min-width:196px;border-radius:var(--radius)}
.nav-menu a{padding:10px 12px}

/* 2026-10-05 导航统一：当前页标识（面试模拟/定价/介绍 已收进「探索」下拉，
   顶栏无对应一级项，需在下拉内标出「你在哪」）。只用既有 token，不改既有类名。 */
.nav-menu a[aria-current="page"]{color:var(--text);background:var(--surface);font-weight:600}
.home-quota{padding:6px 12px}

/* ---------- 3. 按钮：去掉 scale 导致的文字发虚，改为位移 + 加深 ---------- */
.primary-btn{
  background:var(--grad);color:#fff;
  padding:12px 22px;font-size:15px;font-weight:600;letter-spacing:.01em;
  box-shadow:0 1px 2px rgba(79,70,229,.24),0 4px 14px -4px rgba(79,70,229,.36);
}
.primary-btn:hover{transform:translateY(-1px);filter:brightness(1.05);
  box-shadow:0 2px 4px rgba(79,70,229,.28),0 10px 24px -6px rgba(79,70,229,.44)}
.primary-btn:active{transform:translateY(0);filter:brightness(.98)}
.ghost-btn{padding:10px 16px;font-size:14.5px;font-weight:500;
  background:var(--bg);border:1px solid var(--border)}
.ghost-btn:hover{transform:translateY(-1px);border-color:var(--border-strong);text-decoration:none}
.icon-btn{border-radius:var(--radius-sm)}
.btn-lg{padding:14px 28px;font-size:16px}
.btn,.primary-btn,.ghost-btn,.icon-btn{transition:transform .18s ease,background .18s ease,
  border-color .18s ease,box-shadow .18s ease,filter .18s ease}

/* 焦点环与控件圆角对齐 */
:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px;border-radius:6px}

/* ---------- 4. 首屏 ---------- */
/* #40 增量④ C12 预算（§2 首轮值）：base 28/12；gap 首轮 20 → 实测回填 12px 20px（行距 12，列距保 20）；
   768+ 36/16 档维持 §2 值不动（padding 首轮值即过线，实测 duoBottom=890） */
.hero{padding:28px 0 12px;gap:12px 20px}
@media (min-width:768px){
  .hero{padding:36px 0 16px}   /* §2：768+ 档 36/16（置于 :808 后，同特异性源序胜出） */
}
.hero-eyebrow{display:inline-flex;align-items:center;gap:7px;
  font-size:13px;font-weight:500;color:var(--brand-700);
  background:var(--brand-50);border:1px solid var(--brand-200);
  padding:5px 12px 5px 10px;border-radius:999px;margin-bottom:18px}
.hero-eyebrow .ico-svg{width:14px;height:14px}
[data-theme="dark"] .hero-eyebrow{color:var(--brand-300);border-color:var(--brand-700)}

.hero-title{font-size:clamp(28px,5vw,var(--text-h1));line-height:1.14;
  font-weight:700;letter-spacing:-.022em;text-wrap:balance}
/* 增量④：clamp 上限按 §2 冻结 40px（--text-h1 消费）；移动断点字号（≤640/≤380）不动——R1 */
/* 两段各自不断行，全文唯一的断点落在中间空格处 →
   桌面端与移动端都稳定得到「从关键词到 / 可交付的研究成果」，消除孤字 */
.hero-title .t1,.hero-title .grad{white-space:nowrap}
.hero-sub{font-size:17px;line-height:1.75;color:var(--text-2);
  margin-top:10px;max-width:560px;text-wrap:pretty}
.hero-cta{margin-top:28px;gap:14px;align-items:center}
.hero-trust{display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:22px;
  font-size:13.5px;color:var(--text-2)}
.hero-trust span{display:inline-flex;align-items:center;gap:6px}
.hero-trust .ico-svg{width:14px;height:14px;color:var(--success)}
.hero-art > svg{max-width:420px}
.hero-art .art-glow{opacity:.55}

/* ---------- 5. 数据条：数字与量词分离，加分隔线，去掉「每日」这类非数字项 ---------- */
.stats{grid-template-columns:repeat(3,1fr);gap:0;margin:6px 0 8px;
  padding:26px 8px;border-radius:var(--radius-xl);
  background:var(--surface);border:1px solid var(--border)}
.stat{text-align:center;padding:0 14px}
.stat + .stat{border-left:1px solid var(--border)}
.stat b{display:block;font-size:30px;font-weight:700;line-height:1.15;
  color:var(--brand-700);font-variant-numeric:lining-nums tabular-nums;letter-spacing:-.02em}
[data-theme="dark"] .stat b{color:var(--brand-300)}
.stat span{display:block;margin-top:5px;color:var(--text-2);font-size:14px}
.stat em{font-style:normal;font-size:15px;font-weight:600;vertical-align:top}

/* ---------- 6. 区块节奏 ---------- */
.section{padding:72px 0}
.section + .section{padding-top:0}
.section-head{margin-bottom:40px;max-width:660px}
.section-head h2{font-size:clamp(24px,3.4vw,var(--text-h2));font-weight:700;letter-spacing:-.018em;line-height:var(--leading-h2)}
.section-head p{color:var(--text-2);margin-top:12px;font-size:16px;line-height:1.7}
.section-head .eyebrow{display:block;font-size:13px;font-weight:600;letter-spacing:.08em;
  text-transform:uppercase;color:var(--brand-700);margin-bottom:10px}

/* ---------- 7. 三步走流程条（新增区块） ---------- */
.steps{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
.step-card{position:relative;background:var(--bg);border:1px solid var(--border);
  border-radius:var(--radius-lg);padding:24px 22px 22px}
.step-num{display:inline-flex;align-items:center;justify-content:center;
  width:30px;height:30px;border-radius:9px;background:var(--brand-50);
  color:var(--brand-700);font-size:14px;font-weight:700;margin-bottom:14px;
  font-variant-numeric:tabular-nums}
[data-theme="dark"] .step-num{background:var(--brand-100);color:var(--brand-300)}
.step-card h3{font-size:var(--text-h3);font-weight:600;line-height:var(--leading-h3);margin-bottom:8px}
.step-card p{color:var(--text-2);font-size:14.5px;line-height:1.72}
.step-card::after{content:"";position:absolute;right:-9px;top:38px;width:18px;height:1px;
  background:var(--border-strong);display:none}
@media (min-width:900px){.step-card:not(:last-child)::after{display:block}}

/* ---------- 8. 工具卡 / 开发中卡 ---------- */
.module-grid{gap:20px}
.module-card{display:flex;flex-direction:column;
  padding:26px 24px;background:var(--bg);
  border:1px solid var(--border);border-radius:var(--radius-lg);
  box-shadow:var(--shadow-sm);transition:transform .22s ease,box-shadow .22s ease,border-color .22s ease}
.module-card:hover{border-color:var(--brand-300);box-shadow:var(--shadow)}
.module-icon{width:44px;height:44px;border-radius:var(--radius);
  background:var(--brand-50);color:var(--brand-700);
  display:flex;align-items:center;justify-content:center;font-size:22px;margin-bottom:10px}
[data-theme="dark"] .module-icon{background:var(--brand-100);color:var(--brand-300)}
.module-icon .ico-svg{width:22px;height:22px}
.module-title{font-size:var(--text-h3);font-weight:600;line-height:var(--leading-h3);margin-bottom:6px;letter-spacing:-.01em}
.module-desc{color:var(--text-2);font-size:15px;line-height:1.75;margin-bottom:10px}
.module-cta{margin-top:auto;color:var(--brand-700);font-weight:600;font-size:14.5px;
  display:inline-flex;align-items:center;gap:6px}
.module-card a,.module-card:hover .module-cta{text-decoration:none}
.module-card:hover .module-cta{gap:10px;transition:gap .22s ease}
.module-card:hover .module-cta .ico-svg{transform:translateX(3px);transition:transform var(--dur-base)}
.badge-soon{margin-top:auto;align-self:flex-start;font-size:12.5px;font-weight:500;
  color:var(--warning);background:var(--warning-soft);border:1px solid var(--warning-line);
  padding:3px 11px;border-radius:999px}
.module-card.coming{opacity:1;background:var(--surface);border-style:dashed}
.module-card.coming .module-icon{background:var(--surface-2);color:var(--text-3);filter:none}
.module-card.coming .module-desc{color:var(--text-2)}

/* ---------- 9. 特性四列 ---------- */
.features{gap:18px}
.feature{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-lg);
  padding:22px;transition:transform .22s ease,box-shadow .22s ease,border-color .22s ease}
.feature:hover{transform:translateY(-3px);box-shadow:var(--shadow);border-color:var(--brand-200)}
.feature .ico{width:40px;height:40px;border-radius:var(--radius);background:var(--brand-50);
  color:var(--brand-700);font-size:19px;margin-bottom:14px}
[data-theme="dark"] .feature .ico{background:var(--brand-100);color:var(--brand-300)}
.feature h3{font-size:var(--text-h3);font-weight:600;line-height:var(--leading-h3);margin-bottom:7px}
.feature p{color:var(--text-2);font-size:14.5px;line-height:1.75}

/* ---------- 10. 示例报告：升级为「报告预览」卡 ---------- */
.sample{max-width:780px;padding:0;overflow:hidden;background:var(--bg);
  border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow)}
.sample-bar{display:flex;align-items:center;gap:8px;padding:12px 18px;
  background:var(--surface);border-bottom:1px solid var(--border)}
.sample-bar .dot{width:10px;height:10px;border-radius:50%;background:var(--border-strong)}
.sample-bar .name{margin-left:8px;font-size:12.5px;color:var(--text-2);font-family:var(--mono)}
.sample-body{padding:24px 26px 26px}
.sample h4{font-size:var(--text-h4);font-weight:600;color:var(--text);margin-bottom:6px;line-height:1.45}
.sample .sample-meta{font-size:12.5px;color:var(--text-3);margin-bottom:16px}
.sample p{color:var(--text-2);font-size:15px;line-height:1.8}
.sample dl{margin:18px 0 0;display:grid;gap:12px}
.sample dt{font-size:13px;font-weight:600;color:var(--brand-700);margin-bottom:3px}
.sample dd{margin:0;font-size:14.5px;line-height:1.72;color:var(--text-2)}
.sample .ref{margin-top:18px;padding-top:14px;border-top:1px dashed var(--border);
  font-size:12.5px;color:var(--brand-700);font-family:var(--mono);word-break:break-all}

/* ---------- 11. 定价卡：三卡视觉对齐 ---------- */
.pricing{gap:20px;align-items:stretch}
.plan{padding:28px 24px;background:var(--bg);border:1px solid var(--border);
  border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);
  transition:transform .22s ease,box-shadow .22s ease,border-color .22s ease}
.plan:hover{border-color:var(--brand-300);box-shadow:var(--shadow)}
.plan.popular{border-color:var(--brand-500);box-shadow:var(--shadow)}
.plan.popular::after{top:-11px;right:24px;font-size:12px;font-weight:600;padding:4px 13px}
.plan h3{font-size:var(--text-h3);font-weight:600;line-height:var(--leading-h3);color:var(--text-2)}
.plan .price{min-height:56px;display:flex;flex-direction:column;justify-content:flex-end;
  align-items:flex-start;gap:2px;font-size:32px;font-weight:700;letter-spacing:-.02em;
  margin:14px 0 4px;color:var(--text);font-variant-numeric:lining-nums tabular-nums}
.plan .price .price-note{font-size:13px;font-weight:400;color:var(--text-3);letter-spacing:0}
.plan .price .price-sm{font-size:22px;font-weight:600}
.plan ul{margin:18px 0 24px;gap:11px;padding:0;list-style:none}
.plan li{font-size:14.5px;line-height:1.6;color:var(--text-2);display:flex;gap:10px;align-items:flex-start}
.plan li::before{content:"";flex:0 0 auto;width:16px;height:16px;margin-top:3px;
  background:var(--success);border-radius:50%;
  -webkit-mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M20 6L9 17l-5-5' fill='none' stroke='black' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round'/></svg>") center/13px no-repeat;
  mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M20 6L9 17l-5-5' fill='none' stroke='black' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round'/></svg>") center/13px no-repeat}
.plan .primary-btn,.plan .ghost-btn{margin-top:auto;width:100%;text-align:center;justify-content:center}
.plan .ghost-btn{padding:12px 16px}
.pricing-more{margin-top:22px}
.pricing-more .ghost-btn{font-size:14.5px}

/* ---------- 12. FAQ：合并为一张卡，去掉「六个灰块」的碎片感 ---------- */
.faq{max-width:780px;gap:0;background:var(--bg);border:1px solid var(--border);
  border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-sm)}
.faq details{background:transparent;border:none;border-radius:0;position:relative;overflow:visible}
.faq details + details{border-top:1px solid var(--border)}
.faq summary{padding:19px 22px;font-size:16px;font-weight:600;color:var(--text);
  line-height:1.5;transition:background .18s ease}
.faq summary:hover{background:var(--surface)}
.faq summary::after{content:"";width:18px;height:18px;flex:0 0 auto;margin-left:16px;
  background:var(--brand-600);
  -webkit-mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M12 5v14M5 12h14' fill='none' stroke='black' stroke-width='2.6' stroke-linecap='round'/></svg>") center/17px no-repeat;
  mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M12 5v14M5 12h14' fill='none' stroke='black' stroke-width='2.6' stroke-linecap='round'/></svg>") center/17px no-repeat;
  transition:transform .22s ease}
.faq details[open] summary{background:var(--surface);color:var(--brand-700)}
.faq details[open] summary::after{content:"";transform:rotate(135deg)}
.faq details[open] summary::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;
  background:var(--brand-600);border-radius:0 3px 3px 0}
.faq .ans{padding:0 22px 22px;color:var(--text-2);font-size:15px;line-height:1.82;
  max-width:66ch}
.faq .ans a{color:var(--brand-700);text-decoration:underline;text-underline-offset:3px}

/* ---------- 13. CTA 横幅 ---------- */
.cta-band{position:relative;background:var(--grad);border-radius:var(--radius-xl);
  padding:56px 32px;overflow:hidden;text-align:center}
.cta-band::after{content:"";position:absolute;inset:0;
  background:radial-gradient(120% 140% at 15% 0%,rgba(255,255,255,.22),transparent 55%);
  pointer-events:none}
.cta-band h2{position:relative;font-size:clamp(22px,3.4vw,var(--text-h2));font-weight:700;
  letter-spacing:-.018em;line-height:var(--leading-h2)}
.cta-band p{position:relative;font-size:16px;opacity:1;color:rgba(255,255,255,.88);
  margin:12px auto 26px;max-width:520px}
.cta-band .primary-btn{position:relative;background:#fff;color:var(--brand-700);
  box-shadow:0 8px 24px -8px rgba(15,23,42,.4)}
.cta-band .primary-btn:hover{filter:none;background:#fff;transform:translateY(-1px)}
.cta-band .cta-trust{position:relative;display:flex;justify-content:center;flex-wrap:wrap;
  gap:8px 20px;margin-top:20px;font-size:13.5px;color:rgba(255,255,255,.85)}

/* ---------- 14. 站内页脚（首页专用 .footer-v2） ---------- */
.footer-v2{border-top:1px solid var(--border);margin-top:8px;padding:56px 0 32px}
.footer-v2 .foot-grid{display:grid;gap:36px 24px;
  grid-template-columns:minmax(240px,1.6fr) repeat(3,minmax(120px,1fr))}
.footer-v2 .foot-brand .brand{font-weight:600;color:var(--text);gap:10px}
.footer-v2 .foot-brand img{height:30px;width:auto}
.footer-v2 .foot-brand p{margin:14px 0 0;color:var(--text-2);font-size:14px;
  line-height:1.72;max-width:34ch}
.footer-v2 h4{margin:0 0 14px;font-size:13px;font-weight:600;letter-spacing:.06em;
  text-transform:uppercase;color:var(--text-3)}
.footer-v2 .foot-col a{display:block;color:var(--text-2);font-size:14.5px;
  padding:6px 0;text-decoration:none;transition:color .16s ease}
.footer-v2 .foot-col a:hover{color:var(--brand-700);text-decoration:none}
.footer-v2 .foot-col .muted-line{display:block;color:var(--text-3);font-size:13px;
  line-height:1.65;margin-top:8px;max-width:26ch}
.footer-v2 .foot-bottom{display:flex;flex-wrap:wrap;gap:12px 24px;
  justify-content:space-between;align-items:center;
  margin-top:44px;padding-top:22px;border-top:1px solid var(--border);
  color:var(--text-3);font-size:13.5px}
.footer-v2 .foot-bottom .links{display:flex;flex-wrap:wrap;gap:18px}
.footer-v2 .foot-bottom a{color:var(--text-3);text-decoration:none}
.footer-v2 .foot-bottom a:hover{color:var(--brand-700)}

/* ---------- 15. 功能页正文可读性同步 ---------- */
.panel{padding:22px;box-shadow:var(--shadow-sm)}
.panel-header h2{font-size:var(--text-h3)}
.search-input,.default-req,.skill-name,.report-req,.rinput{font-size:15px}
.paper-title{font-size:15.5px;line-height:1.5}
.paper-abstract{font-size:14px;line-height:1.72}
.paper-meta{font-size:12.5px;color:var(--text-2)}
.paper-link{font-size:13.5px}
.summary-content{font-size:15px;line-height:1.82}
.summary-content h1,.summary-content h2,.summary-content h3{font-weight:600}
.doc-card p,.doc-card ul,.doc-lead{font-size:15px;line-height:1.78}
.doc-card h2{font-size:var(--text-h3);font-weight:600;line-height:var(--leading-h3);margin-top:28px}
.doc-title{font-size:28px;font-weight:700;letter-spacing:-.02em}
.cmp-table th,.cmp-table td{padding:14px 16px;font-size:14.5px}
.cmp-table thead th{font-size:13.5px;letter-spacing:.02em}
.exp ul,.sug,.chg,.muted{font-size:14px;line-height:1.7}
.rlabel{font-size:13.5px}
.login-input,.code-input,.ask-box input{font-size:15px}
.modal-card{border-radius:var(--radius-xl);padding:28px}
.modal-card h3{font-size:19px;font-weight:700}
.modal-note{font-size:13.5px;line-height:1.7}
.auth-tab{font-size:14.5px;font-weight:500}
.error-banner,.login-error{font-size:13.5px}
.toast{font-size:14.5px;border-radius:var(--radius);padding:13px 18px}

/* ---------- 16. 移动端 ---------- */
@media (max-width:900px){
  .footer-v2 .foot-grid{grid-template-columns:1fr 1fr;gap:32px 20px}
  .footer-v2 .foot-brand{grid-column:1 / -1}
}
@media (max-width:640px){
  .container{padding:0 18px}
  .topbar{padding:9px 16px;row-gap:6px}
  .hero{padding:36px 0 4px;gap:8px}
  .hero-title{font-size:clamp(26px,7.6vw,34px);line-height:1.2}
  .hero-sub{font-size:15.5px;line-height:1.72;margin-top:14px}
  .hero-cta{gap:10px;margin-top:22px}
  .hero-trust{gap:6px 14px;font-size:13px;margin-top:16px}
  .hero-art{margin-top:28px}
  .hero-art svg{max-width:250px}

  .section{padding:52px 0}
  .section + .section{padding-top:0}
  .section-head{margin-bottom:28px}
  .section-head h2{font-size:23px}
  .section-head p{font-size:15px}

  /* 数据条：保持一行三列，避免三条堆成一大块 */
  .stats{padding:20px 4px;margin:18px 0 6px}
  .stat{padding:0 8px}
  .stat b{font-size:22px}
  .stat span{font-size:12px;margin-top:3px}

  .module-card{padding:22px 20px}
  .module-desc{font-size:14.5px;line-height:1.72}
  .feature{padding:20px}
  .feature p{font-size:14px}

  .sample-body{padding:20px 18px 22px}
  .sample p,.sample dd{font-size:14.5px}

  .plan{padding:24px 20px}
  .plan .price{font-size:28px;min-height:48px}

  .faq summary{padding:16px 18px;font-size:15px}
  .faq .ans{padding:0 18px 18px;font-size:14.5px;line-height:1.78}

  .cta-band{padding:36px 20px;border-radius:var(--radius-lg)}
  .cta-band p{font-size:15px}

  .footer-v2{padding:40px 0 28px}
  .footer-v2 .foot-grid{grid-template-columns:1fr;gap:28px}
  .footer-v2 .foot-col a{min-height:40px;display:flex;align-items:center}
  .footer-v2 .foot-bottom{margin-top:32px}

  /* 顶栏横向滚动提示 */
  .nav{-webkit-mask-image:linear-gradient(90deg,#000 0,#000 calc(100% - 24px),transparent 100%);
       mask-image:linear-gradient(90deg,#000 0,#000 calc(100% - 24px),transparent 100%)}
  .nav-link{min-height:var(--tap);display:inline-flex;align-items:center}
}
@media (max-width:380px){
  .stats{grid-template-columns:1fr;gap:14px;padding:18px}
  .stat + .stat{border-left:none;border-top:1px solid var(--border);padding-top:14px}
  .hero-title{font-size:25px}
}
@media (min-width:641px){
  .nav{mask-image:none}
}

/* ---------- 17. 无障碍：尊重降低动效（统一声明见上方 §5 块，此处重复声明已移除） ---------- */

/* ---------- 18. 深色模式插画与分隔线可读性 ---------- */
[data-theme="dark"] .hero-art svg [stroke]{opacity:.95}
[data-theme="dark"] .sample-bar{background:#0E1420}
[data-theme="dark"] .stat + .stat{border-left-color:var(--border)}
[data-theme="dark"] .faq details + details{border-top-color:var(--border)}

/* ---------- 19. 隐私政策联系方式 ----------
   .contact-list 在原 CSS 中并无定义（孤儿类），且条目此前以 emoji 充当图标，
   违反「图标一律 SVG，禁止 emoji」的既有约束。此处补样式，图标改内联 SVG。 */
.contact-list{list-style:none;padding:0;margin:14px 0 4px;display:grid;gap:11px}
.contact-list li{display:flex;align-items:flex-start;gap:9px;
  color:var(--text-2);font-size:15px;line-height:1.7}
.contact-list .ico-svg{width:16px;height:16px;margin-top:4px;flex:0 0 auto;
  color:var(--brand-600);stroke-width:1.9}
.contact-list a{color:var(--brand-700);word-break:break-all;
  text-decoration:underline;text-underline-offset:3px}
.contact-list a:hover{color:var(--brand-700)}

/* ---------- 20. 论文页「AI 总结」按钮图标 ----------
   paper.html 里按钮内联了 <svg> 星标，但 app.js 用 textContent 整体重写按钮文字
   （`AI 总结 ${n} 篇论文` / `AI 总结（${n}）`），会把内联图标一并抹掉 ——
   表现为「选中文献后按钮图标消失」。
   改为用 CSS 生成图标（伪元素不受 textContent 影响），两种状态始终一致。
   paper.html 中对应的内联 <svg> 已在 v21 部署包内移除。 */
#summarize-btn,#select-summarize{
  --ico-sparkle:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M12 3l1.9 5.1L19 10l-5.1 1.9L12 17l-1.9-5.1L5 10l5.1-1.9z'/><path d='M18.5 15.5l.8 2.2 2.2.8-2.2.8-.8 2.2-.8-2.2-2.2-.8 2.2-.8z'/></svg>");
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
}
#summarize-btn::before,#select-summarize::before{
  content:"";width:15px;height:15px;flex:0 0 auto;background:currentColor;
  -webkit-mask:var(--ico-sparkle) center/15px 15px no-repeat;
  mask:var(--ico-sparkle) center/15px 15px no-repeat;
}

/* ============================================================
   21. 账户中心：顶栏头像 + 悬停下拉 + 账户详情页
   设计约束：纯色头像主题（--ava-0..7，无渐变）、图标统一 SVG、
   颜色全部走设计 token，禁止 emoji / 紫粉渐变 / 硬编码色。
   ============================================================ */

/* ---- 字母头像（用户可选主题，白字 AA 对比） ---- */
.um-avatar{
  display:inline-flex;align-items:center;justify-content:center;
  width:28px;height:28px;flex:0 0 auto;border-radius:50%;
  background:var(--ava-0);color:#fff;font-weight:600;font-size:13px;
  line-height:1;letter-spacing:.3px;text-transform:uppercase;user-select:none;
}
.um-avatar.sm{width:22px;height:22px;font-size:11px;}
.um-avatar.lg{width:64px;height:64px;font-size:26px;}

/* ---- 顶栏账户容器（定位基准；下拉菜单为 button 的兄弟节点） ---- */
.um-wrap{position:relative;display:inline-flex;align-items:center;}
/* 未登录（#user-name 带 hidden）时整体隐藏，无需改动内联脚本 */
.um-wrap:has(> .um-trigger > #user-name.hidden){display:none;}

/* ---- 顶栏账户按钮（包裹头像 + 用户名） ---- */
.um-trigger{
  display:inline-flex;align-items:center;gap:8px;
  padding:3px 10px 3px 3px;border:1px solid var(--border);
  background:var(--surface);border-radius:999px;cursor:pointer;
  color:var(--text-2);font-size:14px;line-height:1;
  transition:border-color .15s ease,background .15s ease,box-shadow .15s ease;
  position:relative;
}
.um-trigger:hover{border-color:var(--border-strong);background:var(--surface-2);}
.um-trigger:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px;}
/* 未登录（#user-name 带 hidden）时整体隐藏，无需改动内联脚本 */
.um-trigger:has(> #user-name.hidden){display:none;}
.um-trigger .user-name{
  color:var(--text-2);font-size:14px;max-width:120px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.um-caret{width:14px;height:14px;color:var(--text-3);flex:0 0 auto;}

/* ---- 悬停下拉（简略额度 / 积分 / 签到） ---- */
.um-menu{
  position:absolute;top:calc(100% + 8px);right:0;z-index:70;
  min-width:244px;background:var(--surface);border:1px solid var(--border);
  border-radius:var(--radius);box-shadow:var(--shadow);padding:12px;
  display:none;
}
.um-wrap.open .um-menu{display:block;}
.um-menu-head{display:flex;align-items:center;gap:10px;padding-bottom:10px;margin-bottom:10px;border-bottom:1px solid var(--border);}
.um-menu-name{font-weight:600;color:var(--text);font-size:14px;line-height:1.3;}
.um-menu-tier{font-size:12px;color:var(--text-3);margin-top:2px;}
.um-menu-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;}
.um-stat{background:var(--surface-2);border-radius:var(--radius-sm);padding:8px 4px;text-align:center;}
.um-stat b{display:block;font-size:15px;font-weight:700;color:var(--text);line-height:1.2;}
.um-stat span{display:block;font-size:11px;color:var(--text-3);margin-top:3px;}
.um-menu-link{
  display:flex;align-items:center;justify-content:space-between;
  margin-top:10px;padding-top:10px;border-top:1px solid var(--border);
  color:var(--brand-700);font-size:13px;font-weight:600;text-decoration:none;
}
.um-menu-link:hover{color:var(--brand-700);}
.um-menu-link .arrow{width:14px;height:14px;}
@media (max-width:420px){
  .um-menu{min-width:204px;}
}

/* ---- 账户详情页（/account.html） ---- */
.account-wrap{max-width:820px;margin:26px auto;padding:0 16px 40px;}
.account-head-row{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin:6px 0 18px;}
.account-page-title{font-size:24px;font-weight:700;color:var(--text);margin:0;}
.account-page-sub{color:var(--text-3);font-size:14px;margin-top:4px;}
.account-card{
  background:var(--surface);border:1px solid var(--border);
  border-radius:var(--radius-lg);padding:22px;margin-bottom:18px;
}
.account-hero{display:flex;align-items:center;gap:16px;margin-bottom:6px;}
.account-hero .um-avatar.lg{box-shadow:var(--shadow-sm);}
.account-hero-name{font-size:18px;font-weight:700;color:var(--text);line-height:1.3;}
.account-hero-tier{
  display:inline-block;margin-top:4px;font-size:12px;font-weight:600;
  color:var(--brand-700);background:var(--brand-50);
  border:1px solid var(--brand-200);border-radius:999px;padding:2px 10px;
}
[data-theme="dark"] .account-hero-tier{background:var(--brand-100);color:var(--brand-800);border-color:var(--brand-200);}
.account-section-title{font-size:15px;font-weight:700;color:var(--text);margin:0 0 14px;display:flex;align-items:center;gap:8px;}
.account-section-title .bar{width:4px;height:16px;border-radius:2px;background:var(--brand-600);}
.account-meta{display:grid;grid-template-columns:repeat(2,1fr);gap:12px 18px;}
.account-meta.full{grid-template-columns:1fr;}
.account-meta-item{display:flex;flex-direction:column;gap:3px;}
.account-meta-item .k{font-size:12px;color:var(--text-3);}
.account-meta-item .v{font-size:15px;color:var(--text);font-weight:600;}
.account-meta-item .v.muted{color:var(--text-3);font-weight:500;}
.account-accent{color:var(--success);font-weight:600;}
.account-warn{color:var(--warning);font-weight:600;}

.account-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;}
.ac-stat{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);padding:14px 10px;text-align:center;}
.ac-stat b{display:block;font-size:22px;font-weight:800;color:var(--text);line-height:1.1;}
.ac-stat span{display:block;font-size:12px;color:var(--text-3);margin-top:6px;}

/* 头像选择器 */
.ava-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(64px,1fr));gap:12px;}
.ava-chip{
  display:flex;flex-direction:column;align-items:center;gap:8px;
  padding:12px 6px;border:2px solid var(--border);border-radius:var(--radius);
  background:var(--surface-2);cursor:pointer;transition:border-color .15s,transform .12s;
}
.ava-chip:hover{transform:translateY(-2px);border-color:var(--border-strong);}
.ava-chip:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px;}
.ava-chip.active{border-color:var(--brand-600);box-shadow:0 0 0 3px var(--brand-100);}
[data-theme="dark"] .ava-chip.active{box-shadow:0 0 0 3px rgba(20,184,166,.35);}
.ava-chip .sw{width:44px;height:44px;border-radius:50%;color:#fff;font-weight:700;font-size:18px;display:flex;align-items:center;justify-content:center;text-transform:uppercase;}
.ava-chip .lbl{font-size:11px;color:var(--text-3);}
.ava-chip.active .lbl{color:var(--brand-700);font-weight:600;}

/* ── F1 句级引用溯源（cite chip + 弹出面板） ── */
.cite-chip{display:inline-flex;align-items:center;gap:2px;margin:0 1px;padding:0 4px;
  border:1px solid var(--line, #e2e8f0);border-radius:6px;background:#f8fafc;
  cursor:pointer;font-size:.86em;color:#0f172a;vertical-align:baseline}
.cite-chip:hover{border-color:var(--brand-500);background:var(--brand-50)}
.cite-chip sup{width:7px;height:7px;border-radius:50%;display:inline-block;margin-left:2px}
.conf-high{background:#16a34a}.conf-med{background:#d97706}.conf-low{background:#dc2626}
.cite-pop{position:fixed;max-width:340px;background:#fff;border:1px solid #e2e8f0;
  border-radius:10px;box-shadow:0 8px 30px rgba(0,0,0,.12);padding:12px 14px;z-index:60;font-size:13px}
.cite-pop-title{font-weight:700;color:#0f172a;margin-bottom:4px}
.cite-pop-meta{color:#64748b;font-size:12px;margin-bottom:6px}
.cite-pop-snippet{color:#334155;font-size:13px;line-height:1.5;margin-bottom:8px;max-height:120px;overflow:auto}
.cite-pop a{color:var(--brand-700);font-weight:600;text-decoration:none}
.cite-pop a:hover{text-decoration:underline}
.cite-pop-why{margin:8px 0 4px;padding-top:8px;border-top:1px dashed #e2e8f0}
.cite-pop-label{font-weight:600;margin-bottom:4px;color:#475569}
.cite-pop-cited{margin:0 0 6px;padding:6px 10px;border-left:3px solid var(--brand-500);background:var(--surface);
  color:#334155;font-size:12.5px;line-height:1.5}
.cite-pop-reason{color:#0f172a;font-size:12.5px;line-height:1.5}

.account-actions{display:flex;align-items:center;gap:12px;margin-top:16px;flex-wrap:wrap;}
.account-tip{font-size:13px;color:var(--text-3);}
.account-empty{
  text-align:center;padding:60px 20px;color:var(--text-3);
}
.account-empty .primary-btn{margin-top:16px;}
.account-loading{padding:40px;text-align:center;color:var(--text-3);}

@media (max-width:640px){
  .account-wrap{margin-top:18px;}
  .account-card{padding:18px;}
  .account-stats{grid-template-columns:repeat(2,1fr);}
  .account-meta{grid-template-columns:1fr;}
  .account-page-title{font-size:21px;}
}


/* ═══════════════════════════════════════════════════════════════
   v24 · 首页模块区 / 跨工具区块 / 锚点滚动 / 全局焦点环
   （追加式，不改动上方既有规则）
   ═══════════════════════════════════════════════════════════════ */
html{scroll-behavior:smooth}
#modules,#search,#summarize,#graph,#step1,#step2,#step4,#interviewCard,#how,#faq,#pricing,#tools{scroll-margin-top:calc(var(--topbar-h) + 24px)}
@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}}

/* 全局键盘焦点环（P1-C：不得用 hover 边框替代） */
:where(a,button,input,select,textarea,summary,[tabindex]):focus-visible{
  outline:2px solid var(--focus-ring);outline-offset:2px;border-radius:6px}

/* 域标签行 + 三列模块网格 */
.domain-row{margin:26px 0 12px}
.domain-row:first-of-type{margin-top:10px}
.domain-tag{display:inline-flex;align-items:center;gap:7px;font-size:13px;font-weight:600;
  color:var(--brand-700);background:var(--brand-50);border:1px solid var(--brand-200);
  padding:5px 12px;border-radius:999px}
.domain-tag .ico-svg{width:15px;height:15px}
.module-grid.modules-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.modules-3 .module-card{transition:transform var(--dur-base,200ms) var(--ease-out,ease),
  box-shadow var(--dur-base,200ms) var(--ease-out,ease),border-color var(--dur-base,200ms)}
.modules-3 .module-card:hover,.modules-3 .module-card:focus-within{
  transform:translateY(-4px);border-color:var(--brand-300);box-shadow:var(--shadow)}
.modules-3 .module-card:active{transform:scale(.98)}
.modules-3 .module-card:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}
.modules-3 .module-card .module-cta .ico-svg{transition:transform var(--dur-base,200ms) var(--ease-out,ease)}
.modules-3 .module-card:hover .module-cta .ico-svg,
.modules-3 .module-card:focus-within .module-cta .ico-svg{transform:translateX(3px)}

/* 能力 chip（不可点、不参与 Tab） */
.chips{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 14px}
.chip{font-size:12px;line-height:1.6;color:var(--text-2);background:var(--surface-2);
  border:1px solid var(--border);padding:2px 9px;border-radius:999px}

/* 跨工具区块（一个账号，两个工具） */
.cross-tool{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:24px;
  background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:32px}
.cross-tool-txt{flex:1 1 380px;min-width:0}
.cross-tool-txt h2{margin:10px 0 8px}
.cross-tool-txt p{color:var(--text-2);margin:0}
.cross-tool-cta{display:flex;flex-wrap:wrap;gap:12px}
.coming-line{text-align:center;color:var(--text-3);font-size:14px;margin:34px 0 6px}

@media (max-width:1024px){.module-grid.modules-3{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:640px){.module-grid.modules-3{grid-template-columns:1fr}.cross-tool{padding:22px}}

/* ═══ v24 · 账户中心：头像上传 + 保持登录 ═══ */
.ava-uploader{margin-top:14px;border:1px dashed var(--border-strong);border-radius:var(--radius);
  padding:16px;background:var(--surface-2)}
.ava-drop{display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;
  padding:16px;border-radius:var(--radius);cursor:pointer;
  transition:background var(--dur-fast,140ms),outline-color var(--dur-fast,140ms)}
.ava-drop .ico-svg{width:26px;height:26px;color:var(--brand-600)}
.ava-drop.dragover{background:var(--brand-50);outline:2px dashed var(--brand-300)}
.ava-drop:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}
.ava-current{display:flex;align-items:center;gap:14px}
.ava-current .um-avatar{width:56px;height:56px;font-size:22px}
.ava-hint{font-size:12.5px;color:var(--text-3)}
.ava-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}
.ava-state{padding:6px 2px;font-size:13px;display:none}
.ava-state.show{display:block}
.ava-state.loading{color:var(--text-2)}
.ava-state.error{color:var(--danger,#dc2626)}
.ava-state.ok{color:var(--brand-700)}
.remember-row{display:flex;align-items:flex-start;gap:10px;margin:14px 0 2px;font-size:14px;color:var(--text-2)}
.remember-row input{margin-top:3px}
.remember-note{font-size:12.5px;color:var(--text-3);margin-left:26px}

/* 移动优先：base 111px（≤640 实测 110.92）→ ≥641 覆盖为 63px（实测 62.92）。只写 min-width，禁用 max-width */
@media (min-width:641px){ :root{ --topbar-h:63px } }
/* 641-767px 治本：让 nav 可横向滚动、topbar-right 不被压缩，避免占宽后把 .topbar 撑到 138px */
@media (min-width:641px) and (max-width:767px){ .nav{min-width:0;overflow-x:auto;scrollbar-width:none} .topbar-right{flex-shrink:0;gap:8px} .topbar{flex-wrap:nowrap} }
/* 「登录 / 注册」按钮不折行（折行后高度 117px，是 641-767 顶栏撑高的主因） */
#login-btn{white-space:nowrap}
/* FE-03 2026-10-04：.cta-band 内主按钮改为「白底 + 深青字」。
   追加到文件末尾而非第 295 行之后：第 907 行所在的媒体查询里还有一条
   .cta-band .primary-btn{background:#fff;color:var(--brand-700)}，放在 295 行后会被它覆盖
   （暗色下 --brand-700 是浅青 #2DD4BF → 白底浅青字 = 1.86:1）。此处追加可稳定胜出：
   暗色 青底(#2DD4BF)+白字 = 8.6:1；浅色 深青(#0F766E)+白字 = 5.47:1。 */
.cta-band .primary-btn{background:#fff;color:var(--brand-solid)}

/* ============================================================
   PaperQ 首页改版 · 2026-10-07（偏 AI 化 · 学术受众 · 彻底）
   新增：显示字体、人群自选择、首屏产品演示、Bento 旗舰卡、社会证明、路线图
   ============================================================ */
:root{
  /* 展示字体（标题 / 数字）：拉丁走 Georgia 衬线，中文回落 PingFang SC / 微软雅黑。
     原先首位是 "Sora"，但它从未渲染过（外链被 CSP 拦），等于标题与正文同一套字、无区隔。
     Georgia / Times New Roman 都不含 CJK 字形，逐字符回落会跳过它们直接命中中文字体，
     所以中文一定不受影响 —— 这是刻意选择：Windows 没有可用的高质量中文衬线（SimSun 大字号发虚）。
     ⚠️ Georgia 默认是旧式数字（3/4/5/7/9 有升降），故价格 / 统计类须另加 lining-nums。 */
  --font-display:"Noto Serif SC",Georgia,"Times New Roman","PingFang SC","Microsoft YaHei","Noto Sans SC",serif;
  --grad-ai:linear-gradient(120deg,#0F766E,#14B8A6 58%,#2DD4BF);
  --violet:#6366F1;
  /* 手稿网格点（研究笔记质感），极淡；深色下用亮青 */
  --grid-dot:rgba(15,118,110,.07);
  /* 等宽体：引用 / DOI / BibTeX —— 参考文献用等宽是「主题真实」的选择，让排印本身成为记忆点 */
  --mono:"JetBrains Mono","SFMono-Regular",ui-monospace,"Cascadia Code",Menlo,Consolas,monospace;
}

/* 标题与数字升级为显示字体：拉丁字走 Georgia 衬线，中文回落系统黑体（见上方 token 注释） */
.hero-title,.hero-title .grad,.page-hero h1,.resume-wrap h1,.section-head h2,.stat b,.plan .price,.domain-tag,.sample h4,.plan h3{
  font-family:var(--font-display); }
.hero-title{font-weight:700;letter-spacing:-.02em;line-height:var(--leading-h1)}
.hero-title .grad{font-weight:700}

/* 模块页 hero 统一 AI 渐变点缀（与首页呼应；首页用 .hero-eyebrow，模块页用此条） */
.page-hero::before,.resume-wrap header::before{content:"";display:block;width:44px;height:4px;
  border-radius:999px;margin:0 auto 14px;background:var(--grad-ai)}

/* 人群自选择（研究者 / 求职者）—— 首屏自归位 */
.persona{display:inline-flex;gap:4px;padding:4px;background:var(--surface);border:1px solid var(--border);
  border-radius:999px;margin-bottom:18px}
.persona button{font-family:inherit;font-size:14px;font-weight:500;color:var(--text-2);background:transparent;
  border:none;padding:8px 16px;border-radius:999px;cursor:pointer;transition:background .18s,color .18s,box-shadow .18s}
.persona button.active{background:var(--grad-ai);color:#fff;box-shadow:var(--shadow-sm)}
.persona button:not(.active):hover{color:var(--text)}

/* 首屏产品演示卡（关键词 → 结构化报告），取代原装饰 SVG。
   #40 增量④：demo 卡自 #demo-showcase 迁回 hero 右列（原区段外壳已删，对应区段规则随之移除） */
.hero-demo{position:relative;width:100%;max-width:520px;margin:0 auto;overflow:clip}
/* #40 增量④：tool-link 竖排机制性修复保留（红线1） */
.tool-link{white-space:nowrap}
.tool-link .tool-desc{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* #40 增量④：研究方向 tab 行——复用 .persona 按钮视觉词汇（零新 :root token）；行高 ~36 计入 §2 预算；
   6 tab 溢出走横向滚动（隐藏滚动条）；active/roving tabindex 由页面脚本置定 */
.demo-stage{position:relative}   /* demo-tag 锚点随卡：tab 行加入后 tag 仍贴卡右上角 */
.demo-tabs{display:flex;gap:4px;padding:3px 4px;margin:0 0 8px;
  background:var(--surface);border:1px solid var(--border);border-radius:999px;
  overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.demo-tabs::-webkit-scrollbar{display:none}
.demo-tabs [role="tab"]{font-family:inherit;font-size:13px;line-height:1.5;font-weight:500;flex:0 0 auto;
  color:var(--text-2);background:transparent;border:none;padding:4px 12px;border-radius:999px;cursor:pointer;
  transition:background .18s,color .18s,box-shadow .18s}
.demo-tabs [role="tab"].active{background:var(--grad-ai);color:#fff;box-shadow:var(--shadow-sm)}
.demo-tabs [role="tab"]:not(.active):hover{color:var(--text)}
.hero-demo .demo-glow{position:absolute;inset:-16% -8% -8% -8%;z-index:0;border-radius:34px;pointer-events:none;
  background:radial-gradient(58% 58% at 28% 18%,rgba(20,184,166,.30),transparent 70%),
             radial-gradient(52% 52% at 88% 92%,rgba(99,102,241,.18),transparent 70%)}
[data-theme="dark"] .hero-demo .demo-glow{opacity:.92}
[data-theme="dark"]{--grid-dot:rgba(45,212,191,.10)}
.demo{position:relative;z-index:1;background:var(--bg);border:1px solid var(--border);
  border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);overflow:hidden}
.demo-query{display:flex;align-items:center;gap:10px;padding:12px 14px;border-bottom:1px solid var(--border);background:var(--surface)}
.demo-query .q{font-size:14px;color:var(--text-2);flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.demo-query .spark{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:9px;
  background:var(--grad-ai);color:#fff;flex:0 0 auto}
.demo-query .spark svg{width:17px;height:17px}
.demo-body{padding:16px}
.demo-row{display:flex;gap:10px;align-items:flex-start;margin-bottom:11px}
.demo-row .dt{font-size:10.5px;font-weight:600;letter-spacing:.06em;color:var(--brand-700);
  text-transform:uppercase;margin-top:3px;flex:0 0 auto;width:40px}
.demo-row .dd{font-size:13px;color:var(--text);line-height:1.55;min-width:0}
.demo-ref{font-family:var(--mono);font-size:11px;color:var(--text-3);border-top:1px dashed var(--border);padding-top:10px}
.demo-ref b{color:var(--brand-700);font-weight:600}
.demo-tag{position:absolute;top:12px;right:12px;z-index:2;font-size:11px;color:#fff;background:var(--violet);
  padding:3px 9px;border-radius:999px;animation:tagPulse 2.6s ease-out infinite}
/* 窄屏：demo-tag 从绝对定位改为卡上方独立一行，避免压住「回填: …」查询行（390px 实测文字被盖） */
@media (max-width:640px){
  .demo-stage{position:static}
  .demo-tag{position:static;display:inline-block;margin:0 0 8px}
}
/* 手稿网格底纹（研究笔记质感）+ 引用星座签名元素 */
.hero{background-image:radial-gradient(var(--grid-dot) 1.4px,transparent 1.4px);
  background-size:26px 26px;background-position:-13px -13px}
.hero-art{position:relative}
.hero-demo{z-index:1}
.hero-constellation{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  z-index:0;color:var(--brand-500);opacity:.6;pointer-events:none}
.hero-constellation svg{width:min(118%,560px);height:auto}
/* 引用星座分隔（签名元素在章节间的复现） */
.lit-divider{display:flex;align-items:center;justify-content:center;gap:16px;margin:2px auto;color:var(--brand-400);opacity:.7}
.lit-divider .ld-line{flex:0 1 130px;height:1px;background:linear-gradient(90deg,transparent,var(--border-strong),transparent)}
.lit-divider .ld-node{width:56px;height:22px}
@keyframes tagPulse{0%{box-shadow:0 0 0 0 rgba(99,102,241,.5)}
  70%{box-shadow:0 0 0 8px rgba(99,102,241,0)}100%{box-shadow:0 0 0 0 rgba(99,102,241,0)}}

/* 功能直达 → Bento（桌面 6 列；旗舰宽卡 span 4 带小图，普通卡 span 2） */
.module-grid.modules-3{grid-template-columns:repeat(6,minmax(0,1fr));align-items:start}
.modules-3 .module-card{grid-column:span 3}
.modules-3 .module-card.flag{grid-column:span 6;background:linear-gradient(180deg,var(--brand-50),var(--bg));border-color:var(--brand-300)}
.modules-3 .module-card.flag .m-vis{margin:16px -4px -8px;color:var(--brand-500)}
.modules-3 .module-card.flag .m-vis svg{width:100%;height:auto;max-height:160px;display:block}
@media (min-width:641px) and (max-width:900px){
  .module-grid.modules-3{grid-template-columns:repeat(4,minmax(0,1fr))}
  .modules-3 .module-card{grid-column:span 2}
  .modules-3 .module-card.flag{grid-column:span 4}
}
@media (max-width:640px){
  .module-grid.modules-3{grid-template-columns:1fr}
  .modules-3 .module-card,.modules-3 .module-card.flag{grid-column:auto}
}

/* 社会证明条（示例证言 + 信任徽标；上线前替换为真实用户证言） */
.proof{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:20px 28px;
  padding:24px 18px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg)}
.proof-quote{font-size:15px;color:var(--text-2);max-width:600px;margin:0;line-height:1.6}
.proof-quote .who{display:block;margin-top:8px;font-size:13px;color:var(--text-3)}
.proof-badges{display:flex;flex-wrap:wrap;gap:10px}
.proof-badge{font-size:13px;font-weight:500;color:var(--text-2);background:var(--bg);
  border:1px solid var(--border);border-radius:999px;padding:7px 14px;white-space:nowrap}

/* 路线图中：裸文本改药丸行 */
.coming-line{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:10px;
  color:var(--text-2);font-size:14px;margin:34px 0 6px;text-align:center}
.coming-line .lb{font-weight:600;color:var(--text-3)}
.coming-line .pill{font-size:12.5px;color:var(--text-2);background:var(--surface);border:1px solid var(--border);
  border-radius:999px;padding:5px 12px}

/* ============================================================
   PaperQ 设计基座 · 2026-10-07（二次升级）
   方向：等宽引用排版 · 引用星座系统升级（载入编排 / 加载·空态母题）
         · 编辑式样例 · 出版源标识条 · 错位入场
   ============================================================ */

/* 等宽体应用：引用 / DOI / BibTeX / 编号 —— 参考文献用等宽是「主题真实」的选择 */
.cite,.doi,.bibtex{font-family:var(--mono);font-feature-settings:"tnum" 1}
.cite{font-size:.85em;color:var(--brand-700)}
.doi{font-size:.82em;color:var(--text-3);letter-spacing:.01em}
.bibtex{display:block;white-space:pre-wrap;font-size:12px;line-height:1.6;color:var(--text-2);
  background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:12px 14px;overflow:auto}
[data-theme="dark"] .bibtex{background:#0E1420}

/* 错位入场：容器加 .stagger，子项设 --i（0,1,2…）实现依次浮现，沿用 .reveal-ready 机制 */
.stagger>[data-reveal]{transition-delay:calc(var(--i,0)*80ms)}

/* 引用星座 · 载入编排（一次性）：节点依次点亮、连线渐显
   —— reduced-motion 下由全局规则（line 325）把动画瞬时定格为终态，无位移/循环 */
.hero-constellation .c-node{transform-box:fill-box;transform-origin:center;
  animation:nodeLit 1s var(--ease-out) both;animation-delay:var(--d,0s)}
.hero-constellation .c-edge{stroke-dasharray:1;stroke-dashoffset:1;animation:edgeDraw 1.2s var(--ease-out) both;animation-delay:var(--d,0s)}
@keyframes nodeLit{0%{opacity:0;transform:scale(.35)}55%{opacity:1;transform:scale(1.14)}100%{opacity:1;transform:scale(1)}}
@keyframes edgeDraw{to{stroke-dashoffset:0}}

/* 星座母题 · 加载骨架（工具页 .loading 复用） */
.constellation-spinner{display:inline-flex;align-items:center;gap:9px;color:var(--text-2);font-size:13px}
.constellation-spinner svg{width:32px;height:32px;animation:spinConst 2.6s linear infinite}
@keyframes spinConst{to{transform:rotate(360deg)}}

/* 星座母题 · 空状态（工具页复用） */
.empty-graph{display:flex;flex-direction:column;align-items:center;gap:10px;padding:36px 18px;
  color:var(--text-3);text-align:center}
.empty-graph svg{width:62px;height:62px;color:var(--brand-300);opacity:.7}
.empty-graph .eg-tip{font-size:13px;max-width:320px;line-height:1.6}
.empty-graph .eg-cta{margin-top:4px}

/* 编辑式样例：首字下沉 + 页边引用 + 结论 pull-quote */
.excerpt .ex-body{font-size:15px;line-height:1.9;color:var(--text)}
.excerpt .ex-body>p:first-of-type::first-letter{float:left;font-family:var(--font-display);
  font-size:3.1em;line-height:.8;font-weight:700;color:var(--brand-700);margin:.04em .14em 0 0}
.excerpt .ex-cite{font-family:var(--mono);font-size:12px;color:var(--brand-700);
  border-left:2px solid var(--violet);padding:2px 0 2px 10px;margin:14px 0;display:inline-block;background:none}
.excerpt .ex-pull{font-family:var(--font-display);font-size:18px;line-height:1.5;font-weight:600;color:var(--text);
  border-left:3px solid var(--brand-700);padding-left:16px;margin:18px 0}

/* 出版源标识条：诚实的出版源文字标识（无外部 logo 依赖） */
.source-strip{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:10px 14px;margin-top:10px}
.source-logo{font-family:var(--font-display);font-weight:600;font-size:13.5px;letter-spacing:-.01em;color:var(--text-2);
  background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:8px 14px;
  display:inline-flex;align-items:center;gap:8px}
.source-logo .sl-dot{width:7px;height:7px;border-radius:50%;background:var(--grad-ai)}

/* 编辑式样例 · 元信息行 */
.excerpt .ex-meta{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 12px;margin-bottom:14px}
.excerpt .ex-title{font-family:var(--font-display);font-weight:600;font-size:16px;color:var(--text)}
.excerpt .ex-meta .cite{font-size:12px}

/* 社会证明 → 学术信任卡（垂直卡片：标题 / 导出样例 / 出版源条） */
.proof{display:flex;flex-direction:column;gap:20px;padding:28px 22px;background:var(--surface);
  border:1px solid var(--border);border-radius:var(--radius-lg);text-align:left}
.proof-head{text-align:center}
.proof-head .eyebrow{display:inline-block;font-size:12px;font-weight:600;letter-spacing:.08em;
  text-transform:uppercase;color:var(--brand-700);margin-bottom:8px}
.proof-head h2{font-family:var(--font-display);font-size:var(--text-h2);font-weight:700;color:var(--text);line-height:var(--leading-h2);margin:0 0 8px}
.proof-head p{font-size:14px;color:var(--text-2);line-height:1.65;max-width:560px;margin:0 auto}
.proof-export{display:flex;flex-direction:column;gap:10px}
.pe-label{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.pe-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:2px}
.pe-actions .proof-badge{cursor:default}

/* ============================================================
   PaperQ 工具页深打磨 · 2026-10-07（二次升级 · Phase 3）
   把 AI 化设计语言下沉到工具页组件：
   手稿网格底纹 · 显示字体标题 · 载入星座母题 · 焦点态强化 · 卡片悬浮 · 评分环渐变
   纯增量，不改任何 JS / API 字段，不动既有功能类
   ============================================================ */

/* —— 检索卡 / 面板 / 简历卡：统一手稿网格底纹（叠加在 --bg 上，不改底色变量） —— */
.search-card,.panel,.rcard{
  background-image:radial-gradient(var(--grid-dot) 1.3px,transparent 1.3px);
  background-size:24px 24px;background-position:-12px -12px}
/* 顶部 AI 渐变点缀条（与首页 / 模块页 hero 呼应） */
.search-card::before,.panel::before,.rcard::before{
  content:"";display:block;width:38px;height:3px;border-radius:999px;
  margin:0 0 14px;background:var(--grad-ai)}

/* —— 组件标题走显示字体（拉丁字 Georgia 衬线，中文回落系统黑体） —— */
.panel-header h2,.rcard h3{font-family:var(--font-display)}

/* —— 焦点态强化：在既有 outline 之外补一层品牌柔光 —— */
.search-input:focus,.rinput:focus,.opt select:focus{
  box-shadow:0 0 0 3px var(--brand-100)}

/* —— 文献卡片悬浮：品牌描边 + 轻抬升 + 微光，强化「可勾选」暗示 —— */
.paper-card:hover{box-shadow:0 8px 22px -12px rgba(15,118,110,.45)}
.paper-card.selected{box-shadow:0 0 0 1px var(--brand-500) inset}

/* —— 搜索按钮：保留渐变，加悬浮微光 —— */
.search-btn{box-shadow:0 6px 18px -10px rgba(20,184,166,.85)}
.search-btn:hover{box-shadow:0 10px 24px -10px rgba(20,184,166,.95)}

/* —— 载入星座母题：把 .spinner 改为 AI 渐变环（沿用 #loading 结构，不动 JS） —— */
.loading{color:var(--text-2);font-family:var(--mono);font-size:13px;letter-spacing:.01em}
.spinner{width:22px;height:22px;border-radius:50%;
  background:conic-gradient(from 0deg,var(--brand-500),var(--violet),var(--brand-500));
  -webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 3px),#000 calc(100% - 3px));
          mask:radial-gradient(farthest-side,transparent calc(100% - 3px),#000 calc(100% - 3px));
  animation:spin 1s linear infinite}

/* —— 评分环 / ATS 环：进度段改用 AI 渐变（保留 --p 逻辑，不动 JS） —— */
.ring{background:conic-gradient(from 0deg,var(--brand-500),var(--violet) calc(var(--p)*1%),var(--border) 0)}

/* —— 空状态图标染品牌青 —— */
.empty-state svg{color:var(--brand-400)}

/* —— Job-fit 雷达：把硬编码蓝 (#2d6cdf) 收敛到品牌青（增强一致性，不改 JS；
     仅命中数据多边形与圆点，网格 / 轴用 currentColor 不受影响） —— */
.dims svg polygon[fill="#2d6cdf"]{fill:var(--brand-600)}
.dims svg circle[fill="#2d6cdf"]{fill:var(--brand-600)}
.dims svg polygon[stroke="#2d6cdf"]{stroke:var(--brand-600)}
.dims svg circle[stroke="#2d6cdf"]{stroke:var(--brand-600)}

/* ============================================================
   全站一致性补全 · 2026-10-07（Phase 4）
   —— .resume-wrap header（更多 / 面试 / 简历 页 hero）补手稿网格，
      与 .page-hero 对齐；纯增量，不动功能类。
   ============================================================ */
.resume-wrap header{background-image:radial-gradient(var(--grid-dot) 1.3px,transparent 1.3px);
  background-size:24px 24px;background-position:-12px -12px}

/* ============================================================
   UI/UX 细节再打磨 · 2026-10-07（Phase 5 · ui-ux-pro-max）
   聚焦：键盘焦点可见性 · 按钮体系一致性 · 触控目标 · 空状态质感 · 减少动态兜底
   纯增量 CSS，不改 JS / API / 功能类，不破坏既有契约
   ============================================================ */

/* —— 键盘焦点：按钮家族统一品牌柔光环（替代默认 outline，WCAG AA 可见、与输入态呼应） —— */
.primary-btn:focus-visible,.ghost-btn:focus-visible,.icon-btn:focus-visible,
.search-btn:focus-visible,.btn:focus-visible,.ghost:focus-visible{
  outline:none;
  box-shadow:0 0 0 3px var(--brand-100),0 0 0 1px var(--brand-500)}
.primary-btn:focus-visible,.search-btn:focus-visible{
  box-shadow:0 0 0 3px var(--brand-100),0 0 0 1px var(--brand-500),var(--shadow)}

/* —— 按钮体系一致性：.btn / .ghost（简历页词汇）对齐 .primary-btn / .ghost-btn 的悬浮语义 —— */
.btn:hover{transform:translateY(-1px);filter:brightness(1.05)}
.ghost:hover{transform:translateY(-1px);background:var(--surface);color:var(--text);border-color:var(--brand-500)}

/* —— 统一触控目标 ≥44px（移动端可达性），与简历页 .btn 对齐 —— */
.primary-btn,.ghost-btn,.search-btn,.ghost{min-height:var(--tap)}

/* —— 空状态质感：图标入品牌青圆底，弱化描边，留白更克制 —— */
.empty-state{display:flex;flex-direction:column;align-items:center;gap:10px}
.empty-state svg{width:46px;height:46px;color:var(--brand-500);
  background:var(--brand-50);border-radius:50%;padding:11px;box-sizing:content-box}
.empty-state .hint{color:var(--text-2)}

/* —— 减少动态兜底：星座节点 / 连线 / 加载环在 reduced-motion 下瞬时定格终态（无位移·循环） —— */
@media (prefers-reduced-motion:reduce){
  .hero-constellation .c-node{animation-duration:.001ms!important;animation-iteration-count:1!important}
  .hero-constellation .c-edge{animation-duration:.001ms!important;animation-iteration-count:1!important}
  .constellation-spinner svg{animation-duration:.001ms!important;animation-iteration-count:1!important}
}

/* ============================================================
   排版 9a（2026-10-11 · 全站衬线排版参数 Phase I）
   参数来源 = 设计 §4 定稿 + WF-QA 裁定（标题阶梯/间距阶梯/--text-body 冻结待设计，本批不注入不触碰）。
   本块纯增量：token 注入不消费（--grad-rule 值为常规两端渐隐分隔线实现，设计未给定义值，回报声明待审）；
   长文作用域只加 max-width/margin-bottom，不改任何组件既有 font-size/line-height。
   部署窗 ?v= 动态认领（46→47），EXPECT_CSS_V 归 WF-QA 同批。
   ============================================================ */
:root{
  --measure:34em;
  /* --grad-rule 封版（9b）：设计已定值（现网 v=47 值即正式值）。使用规范 4 条：
     ①仅用于 1px 水平分隔线 ②禁 border-image ③禁主题覆写（[data-theme] 不重定义）④区块级专用（禁行内/组件微距）。 */
  --grad-rule:linear-gradient(90deg,transparent,var(--border),transparent);
}
/* 长文阅读作用域（裁定 d）：行长 34em + 段距 1em */
.doc-card p,.doc-card ul,.doc-lead,.summary-content p{max-width:var(--measure);margin-bottom:1em}

/* ============================================================
   排版 9b（2026-10-12 · 标题阶梯 token 全量注入 + 组件改绑）
   设计单 §3.1 逐值；G2 表逐组件（docs/plans/WF-QA-TYPO9B-GATE_20261011.md §1）；
   clamp 机制保留仅端点换 token；@media 块零触碰（G9）；--space-7/8/9 零消费（G5）；
   --text-body 为字号 token（非颜色属性，全站禁将其用作颜色值，G8）。
   ============================================================ */
:root{
  --text-h1:40px; --text-h2:28px; --text-h3:20px; --text-h4:17px;
  --leading-h1:1.25; --leading-h2:1.35; --leading-h3:1.5; --leading-h4:1.75;
  --space-7:40px; --space-8:48px; --space-9:64px;
  --text-body:16px;
}
/* G7 正文容器：字号统一 var(--text-body)（16px，与 9a 正文参数对齐） */
.summary-content p,.doc-card p,.faq .ans{font-size:var(--text-body)}
/* H4 层：摘要小节次级标题（G2 H4 行） */
.summary-content h3{font-size:var(--text-h4)}

/* ============================================================
   #42 简历页重设计（2026-10-17 · 方案 A：流程主轴+状态分层+功能归位）
   作用域纪律：全部 res-*/rcard-head/card-body/jd-zone/res-details/res-next-bar 类 = resume.html 专属，
   主页/paper/more 零触碰（append-only）；零新增 :root token（全走既有 var——C7）；
   引用 bump 由 resume.html 承担（v=54）。C2 硬约束：.card-body[hidden] 必须 display:none。
   ============================================================ */
/* —— §3.1 流程指示条（高度 ≤48px 计入 C5 首屏；390 横向滚动不出页） —— */
.res-stepper{display:flex;gap:4px;align-items:center;margin:0 0 14px;padding:4px;max-height:48px;
  background:var(--surface);border:1px solid var(--border);border-radius:999px;
  overflow-x:auto;scrollbar-width:none}
.res-stepper::-webkit-scrollbar{display:none}
.res-step{display:inline-flex;align-items:center;gap:6px;flex:0 0 auto;
  padding:5px 12px;border:0;background:transparent;border-radius:999px;
  color:var(--text-2);font-size:13px;line-height:1.5;cursor:pointer;
  transition:color .15s,background .15s,box-shadow .15s}
.res-step-dot{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;
  width:20px;height:20px;border-radius:50%;border:1.5px solid var(--border-strong);
  font-size:11px;font-weight:600;color:var(--text-2)}
.res-step-txt{white-space:nowrap}
.res-step-ats{font-size:11px;color:var(--muted);white-space:nowrap}
.res-step.current{color:var(--text);background:var(--brand-50);box-shadow:inset 0 -2px 0 var(--brand-600)}
.res-step.current .res-step-dot{background:var(--grad-ai);border-color:transparent;color:#fff}
.res-step.done{color:var(--text)}
.res-step.done .res-step-dot{background:var(--brand-600);border-color:var(--brand-600);color:#fff}
.res-step.locked{opacity:.55;cursor:not-allowed}
.res-step.locked .res-step-dot{border-style:dashed}
.res-step.flash{animation:resflash .55s ease-in-out 3}
@keyframes resflash{0%,100%{background:transparent}50%{background:var(--brand-200)}}
/* —— §3.2 卡状态徽章（三态：待前置/可操作/已完成）+ 卡头 —— */
.rcard-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.rcard-head h3{margin-bottom:0}
.res-badge{flex:0 0 auto;font-size:12px;line-height:1;padding:5px 10px;border-radius:999px;
  border:1px solid var(--border);color:var(--muted);background:var(--surface);white-space:nowrap}
.res-badge-op{border-color:var(--brand-600);color:var(--brand-600);background:var(--brand-50)}
.res-badge-done{border-color:var(--brand-600);color:#fff;background:var(--brand-600)}
/* —— §3.2 空态瘦身：C2 硬约束——隐藏态必须 display:none（visibility/opacity 会占流 → H_empty≈H_active 假阴性） —— */
.card-body[hidden]{display:none!important}
.res-empty{padding:18px 12px;text-align:center;color:var(--text-2);font-size:14px;line-height:1.75}
.res-empty p{margin:0 0 12px}
/* —— §3.3 step4 分层：次级按钮组 + 成果管理折叠区（F8） —— */
.res-ctagroup{display:flex;flex-direction:column;align-items:stretch;gap:10px}
.res-subgroup{display:flex;gap:8px;flex-wrap:wrap}
.res-details{border:1px solid var(--border);border-radius:var(--radius-sm);margin-top:14px;background:var(--surface)}
.res-details>summary{cursor:pointer;padding:10px 14px;font-size:14px;font-weight:600;color:var(--text);
  list-style:none;display:flex;align-items:center;gap:8px;border-radius:var(--radius-sm)}
.res-details>summary::-webkit-details-marker{display:none}
.res-details>summary::after{content:'▾';margin-left:auto;color:var(--muted);transition:transform .15s}
.res-details[open]>summary::after{transform:rotate(180deg)}
.res-details[open]>summary{border-bottom:1px solid var(--border);border-bottom-left-radius:0;border-bottom-right-radius:0}
.res-count{font-size:11px;line-height:1;padding:3px 8px;border-radius:999px;background:var(--brand-600);color:#fff}
/* —— §3.3 面试出口工具条（rgrid 后；诊断前置灰） —— */
.res-next-bar{display:flex;align-items:center;justify-content:flex-end;gap:12px;
  margin:18px 0 8px;padding:12px 16px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}
.res-next-txt{font-size:13px;color:var(--text-2)}
.res-next-link{font-size:14px;font-weight:600;color:var(--brand-600);text-decoration:none}
.res-next-link:hover{text-decoration:underline}
.res-next-link[aria-disabled="true"]{color:var(--muted);cursor:not-allowed;text-decoration:none}
/* —— JD 链接折叠（§3.4；与 origdoc/keepfmt 内联补丁同族语言） —— */
.jd-url-details{margin-top:8px}
.jd-url-details>summary{cursor:pointer;font-size:13px;color:var(--text-2)}
.jd-url-details>summary:hover{color:var(--text)}
/* —— C5 首屏预算回填（1440×900 实测首轮 ezBot=955>900 → 收 ~125px；全部 padding/gap/margin 类，
   仅 .entry-zone 作用域覆盖（resume 专属区），字号零改动） —— */
.entry-zone{padding:16px;margin-bottom:12px}
.resume-wrap header{margin-bottom:10px}   /* C5 回填第二轮：22→10（页头纵距，resume 作用域） */
.entry-zone h3{margin-bottom:8px}
.entry-zone .rlabel{margin:8px 0 4px}
.entry-zone .up{padding:14px}
.entry-zone .raction{margin-top:10px}
/* —— 390/窄档：stepper 收紧不出页；出口条纵排 —— */
@media (max-width:640px){
  .res-step{padding:5px 9px}
  .res-step-ats{display:none}
  .res-next-bar{flex-direction:column;align-items:flex-start;gap:8px}
}

/* PQ-20261027-01：首页移动端首屏主入口（≤640px 显示；桌面端隐藏，避免与 hero 内 .duo 双卡重复）。
   仅新增局部规则与作用域内尺寸，不改既有规则顺序、不改 :root 变量。 */
.hero-cta-mobile{display:none}
@media (max-width:640px){
  .hero-cta-mobile{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:18px}
  .hero-cta-mobile a{width:100%;min-height:46px;display:inline-flex;align-items:center;
    justify-content:center;text-align:center;font-size:15px;font-weight:600}
}
