/* ═══════════════════════════════════════════════════════════════════
   学习路径视图（语言地基）
   ───────────────────────────────────────────────────────────────
   视觉逻辑：这一层的内容密度高、层级多，所以用**明确的卡片语言**
   而不是通篇长文。每张卡片只回答一个问题。
   ═══════════════════════════════════════════════════════════════════ */

/* 页签 —— 横向可滚动的胶囊组 */
.fd-tabs {
  display: flex; gap: calc(4 * var(--u));
  overflow-x: auto; scrollbar-width: none;
  align-items: stretch;
  padding-bottom: calc(2 * var(--u));
  margin-bottom: calc(16 * var(--u));
  border-bottom: 1px solid var(--glass-line);
}
.fd-tab > * , .fd-tab { min-height: calc(44 * var(--u)); }
.fd-tabs::-webkit-scrollbar { display: none; }
.fd-tab {
  flex: 0 0 auto;
  display: inline-flex; flex-direction: column; gap: calc(3 * var(--u));
  padding: calc(8 * var(--u)) calc(13 * var(--u)) calc(9 * var(--u));
  border: none; background: none; cursor: pointer;
  border-bottom: 2px solid transparent;
  font-family: inherit; font-size: calc(12.5 * var(--u)); font-weight: 700;
  color: var(--ink-3);
  transition: color .18s var(--e-out), border-color .18s var(--e-out);
}
.fd-tab em {
  font-style: normal; font-size: calc(9.5 * var(--u)); font-weight: 500;
  color: var(--ink-4); letter-spacing: 0;
  max-width: calc(160 * var(--u));
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.fd-tab:hover { color: var(--ink-1); }
.fd-tab.on { color: var(--acc); border-bottom-color: var(--acc); }
.fd-tab.on em { color: var(--ink-3); }

/* 导语 */
.fd-lede {
  padding: calc(13 * var(--u)) calc(15 * var(--u));
  margin-bottom: calc(16 * var(--u));
  clear: both;
  border-radius: var(--r);
  background: var(--n-800);
  border: 1px solid var(--glass-line);
  border-left: 3px solid var(--acc);
  font-size: calc(13 * var(--u)); line-height: calc(21 * var(--u));
  color: var(--ink-2);
}
.fd-lede b { color: var(--ink); font-weight: 700; }
.fd-lede-warn { border-left-color: var(--c-rose); }
.fd-correct {
  margin-top: calc(9 * var(--u)); padding: calc(9 * var(--u)) calc(11 * var(--u));
  border-radius: calc(10 * var(--u));
  background: var(--acc-soft);
  color: var(--ink-1); font-weight: 600;
  font-size: calc(12.5 * var(--u)); line-height: calc(20 * var(--u));
}
.fd-why { margin-top: calc(9 * var(--u)); font-size: calc(12 * var(--u)); }
.fd-evi {
  font-size: calc(10.5 * var(--u)); color: var(--ink-4);
  margin-bottom: calc(12 * var(--u));
}
.fd-keyline {
  padding: calc(11 * var(--u)) calc(14 * var(--u));
  margin: calc(14 * var(--u)) 0;
  border-radius: calc(11 * var(--u));
  background: var(--acc-soft);
  border: 1px solid var(--acc-line);
  font-size: calc(12.5 * var(--u)); line-height: calc(20 * var(--u));
  color: var(--ink-1); font-weight: 600;
}
.fd-note {
  margin-top: calc(9 * var(--u));
  font-size: calc(11.5 * var(--u)); line-height: calc(18 * var(--u));
  color: var(--ink-3);
}
.fd-caution {
  margin-top: calc(9 * var(--u));
  padding: calc(8 * var(--u)) calc(11 * var(--u));
  border-radius: calc(9 * var(--u));
  background: color-mix(in srgb, var(--c-rose) 10%, transparent);
  font-size: calc(11.5 * var(--u)); line-height: calc(18 * var(--u));
  color: var(--ink-2);
}
.fd-caution b { color: var(--c-rose); margin-right: calc(6 * var(--u)); }
.fd-rule {
  margin-top: calc(9 * var(--u));
  padding: calc(9 * var(--u)) calc(11 * var(--u));
  border-radius: calc(9 * var(--u));
  background: var(--n-750);
  font-size: calc(12 * var(--u)); line-height: calc(19 * var(--u));
  color: var(--ink-1);
}

/* 分区标题 */
.fd-sec-h {
  font-size: calc(14 * var(--u)); font-weight: 800; color: var(--ink);
  margin: calc(22 * var(--u)) 0 calc(10 * var(--u));
  padding-bottom: calc(7 * var(--u));
  border-bottom: 1px solid var(--glass-line);
}
.fd-sec-h2 {
  font-size: calc(12 * var(--u)); font-weight: 700; color: var(--ink-2);
  margin: calc(15 * var(--u)) 0 calc(8 * var(--u));
}

/* ── 知识全景：五级 ── */
.fd-levels { display: flex; flex-direction: column; gap: calc(9 * var(--u)); }
.fd-level {
  border-radius: var(--r);
  background: var(--n-800);
  border: 1px solid var(--glass-line);
  overflow: hidden;
}
.fd-level.on { border-color: var(--acc-line); }
.fd-level-h {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) minmax(0, .85fr);
  gap: calc(14 * var(--u));
  align-items: center;
  padding: calc(13 * var(--u)) calc(15 * var(--u));
}
.fd-level-id {
  width: calc(38 * var(--u)); height: calc(38 * var(--u));
  border-radius: calc(11 * var(--u));
  background: var(--n-750);
  display: grid; place-items: center;
  font-size: calc(13 * var(--u)); font-weight: 800; color: var(--ink-2);
}
.fd-level.on .fd-level-id { background: var(--acc); color: var(--acc-ink); }
.fd-level-n {
  font-size: calc(14.5 * var(--u)); font-weight: 800; color: var(--ink);
  display: flex; align-items: baseline; gap: calc(9 * var(--u));
}
.fd-level-n span {
  font-size: calc(10.5 * var(--u)); font-weight: 700; color: var(--acc);
  font-variant-numeric: tabular-nums;
}
.fd-level-d {
  font-size: calc(11.5 * var(--u)); color: var(--ink-3);
  margin-top: calc(3 * var(--u)); line-height: calc(16 * var(--u));
}
.fd-level-exit {
  font-size: calc(11 * var(--u)); line-height: calc(16 * var(--u));
  color: var(--ink-2);
  padding-left: calc(13 * var(--u));
  border-left: 1px solid var(--glass-line);
}
.fd-level-exit b {
  display: block; font-size: calc(9.5 * var(--u)); font-weight: 800;
  color: var(--ink-4); text-transform: uppercase;
  letter-spacing: calc(.8 * var(--u)); margin-bottom: calc(3 * var(--u));
}
.fd-blocks {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(calc(250 * var(--u)), 100%), 1fr));
  gap: calc(8 * var(--u));
  padding: 0 calc(15 * var(--u)) calc(14 * var(--u));
}
.fd-block {
  padding: calc(10 * var(--u)) calc(12 * var(--u));
  border-radius: calc(10 * var(--u));
  background: var(--n-750);
}
.fd-block-l {
  font-size: calc(9 * var(--u)); font-weight: 800;
  color: var(--acc); letter-spacing: calc(.6 * var(--u));
  text-transform: uppercase; margin-bottom: calc(4 * var(--u));
}
.fd-block-n {
  font-size: calc(12.5 * var(--u)); font-weight: 700; color: var(--ink);
  line-height: calc(17 * var(--u));
}
.fd-block-d {
  font-size: calc(11 * var(--u)); color: var(--ink-3);
  margin-top: calc(4 * var(--u)); line-height: calc(16 * var(--u));
}
.fd-block-w {
  margin-top: calc(7 * var(--u));
  font-size: calc(10.5 * var(--u)); line-height: calc(15 * var(--u));
  color: var(--ink-4);
}
.fd-block-w b { color: var(--ink-3); margin-right: calc(5 * var(--u)); }

/* 第三级入口 —— 「进入学习单元」按钮
   关键：F 层的 block 以前只是文字，用户不知道里面还有内容。
   现在必须**看起来明确可点**，否则这个能力等于不存在。 */
.fd-block.has-unit {
  background: var(--n-800);
  border: 1px solid var(--glass-line);
  border-left: 3px solid var(--acc);
}
.fd-block-go {
  display: flex; align-items: center; gap: calc(6 * var(--u));
  width: 100%;
  margin-top: calc(9 * var(--u));
  padding: calc(7 * var(--u)) calc(10 * var(--u));
  border-radius: calc(8 * var(--u));
  border: 1px solid var(--acc);
  background: color-mix(in srgb, var(--acc) 12%, transparent);
  color: var(--acc);
  font-size: calc(11 * var(--u)); font-weight: 700; font-family: inherit;
  cursor: pointer; text-align: left;
  transition: background .16s var(--e-out);
}
.fd-block-go:hover { background: color-mix(in srgb, var(--acc) 22%, transparent); }
.fd-block-go svg {
  width: calc(12 * var(--u)); height: calc(12 * var(--u));
  flex: 0 0 auto;
}
.fd-block-go em {
  font-style: normal; margin-left: auto;
  font-size: calc(9.5 * var(--u)); font-weight: 500;
  color: var(--ink-4);
  font-variant-numeric: tabular-nums;
}
.fd-block-go.disabled {
  border-color: var(--glass-line);
  background: none;
  color: var(--ink-4);
  cursor: default;
}

/* 层级图例 */
.fd-order-note { display: flex; flex-direction: column; gap: calc(5 * var(--u)); }
.fd-order-line {
  display: grid; grid-template-columns: calc(56 * var(--u)) minmax(0, 1fr);
  gap: calc(12 * var(--u)); align-items: baseline;
  padding: calc(8 * var(--u)) calc(12 * var(--u));
  border-radius: calc(9 * var(--u));
  background: var(--n-800);
  border: 1px solid var(--glass-line);
}
.fd-on {
  font-size: calc(10 * var(--u)); font-weight: 800; color: var(--acc);
  text-align: center;
}
.fd-ot { font-size: calc(11.5 * var(--u)); color: var(--ink-2); }

/* ── 步骤 ── */
.fd-steps { display: flex; flex-direction: column; gap: calc(7 * var(--u)); }
.fd-step {
  display: grid; grid-template-columns: calc(26 * var(--u)) minmax(0, 1fr);
  gap: calc(12 * var(--u)); align-items: start;
  padding: calc(11 * var(--u)) calc(13 * var(--u));
  border-radius: calc(11 * var(--u));
  background: var(--n-800);
  border: 1px solid var(--glass-line);
}
.fd-step-n {
  width: calc(26 * var(--u)); height: calc(26 * var(--u));
  border-radius: 50%; background: var(--acc); color: var(--acc-ink);
  display: grid; place-items: center;
  font-size: calc(11.5 * var(--u)); font-weight: 800;
}
.fd-step-t {
  font-size: calc(13 * var(--u)); font-weight: 700; color: var(--ink);
  display: flex; align-items: baseline; gap: calc(9 * var(--u));
}
.fd-step-t span {
  font-size: calc(10 * var(--u)); font-weight: 700; color: var(--ink-4);
  font-family: ui-monospace, Menlo, monospace;
}
.fd-step-d {
  font-size: calc(12 * var(--u)); line-height: calc(18 * var(--u));
  color: var(--ink-2); margin-top: calc(4 * var(--u));
}
.fd-step-o {
  font-size: calc(10.5 * var(--u)); color: var(--ink-4);
  margin-top: calc(5 * var(--u));
}

/* ── 误区框 ── */
.fd-myths { display: flex; flex-direction: column; gap: calc(7 * var(--u)); margin-bottom: calc(14 * var(--u)); }
.fd-myth {
  padding: calc(10 * var(--u)) calc(13 * var(--u));
  border-radius: calc(10 * var(--u));
  background: color-mix(in srgb, var(--c-rose) 7%, var(--n-800));
  border: 1px solid color-mix(in srgb, var(--c-rose) 22%, transparent);
}
.fd-myth-m {
  font-size: calc(12 * var(--u)); font-weight: 700; color: var(--c-rose);
  text-decoration: line-through; text-decoration-color: color-mix(in srgb, var(--c-rose) 45%, transparent);
  margin-bottom: calc(5 * var(--u));
}
.fd-myth-t {
  font-size: calc(11.5 * var(--u)); line-height: calc(18 * var(--u));
  color: var(--ink-2);
}

/* ── 能力维度卡 ── */
.fd-dims { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(calc(330 * var(--u)), 100%), 1fr)); gap: calc(9 * var(--u)); }
.fd-dim {
  padding: calc(13 * var(--u)) calc(15 * var(--u));
  border-radius: var(--r);
  background: var(--n-800);
  border: 1px solid var(--glass-line);
}
.fd-dim-h {
  display: flex; align-items: baseline; justify-content: space-between;
  gap: calc(10 * var(--u)); margin-bottom: calc(6 * var(--u));
}
.fd-dim-n {
  font-size: calc(14 * var(--u)); font-weight: 800; color: var(--ink);
  display: inline-flex; align-items: baseline; gap: calc(7 * var(--u));
}
.fd-dim-n em {
  font-style: normal; font-size: calc(10 * var(--u)); font-weight: 600;
  color: var(--ink-4);
}
.fd-dim-map {
  font-size: calc(9.5 * var(--u)); font-weight: 800;
  color: var(--acc); white-space: nowrap;
  padding: calc(2 * var(--u)) calc(8 * var(--u));
  border-radius: 999px; background: var(--acc-soft);
}
.fd-dim-band {
  font-size: calc(10.5 * var(--u)); color: var(--ink-4);
  font-family: ui-monospace, Menlo, monospace;
  margin-bottom: calc(7 * var(--u));
}
.fd-dim-q {
  font-size: calc(12 * var(--u)); line-height: calc(18 * var(--u));
  color: var(--ink-1); margin-bottom: calc(9 * var(--u));
}
.fd-dim-rows { display: flex; flex-direction: column; gap: calc(5 * var(--u)); }
.fd-dim-r {
  font-size: calc(11 * var(--u)); line-height: calc(17 * var(--u));
  color: var(--ink-2);
}
.fd-dim-r b {
  display: block; font-size: calc(9.5 * var(--u)); font-weight: 800;
  color: var(--ink-4); text-transform: uppercase;
  letter-spacing: calc(.6 * var(--u)); margin-bottom: calc(2 * var(--u));
}
.fd-dim-drill {
  margin-top: calc(3 * var(--u)); padding: calc(7 * var(--u)) calc(9 * var(--u));
  border-radius: calc(8 * var(--u)); background: var(--n-750);
}
.fd-dim-drill b { display: inline; color: var(--acc); margin-right: calc(5 * var(--u)); text-transform: none; }

/* ── 必会清单 ── */
.fd-must { display: flex; flex-direction: column; gap: calc(4 * var(--u)); margin: calc(9 * var(--u)) 0; }
.fd-must-row {
  display: grid;
  grid-template-columns: minmax(calc(110 * var(--u)), auto) minmax(0, 1fr);
  gap: calc(4 * var(--u)) calc(10 * var(--u));
  align-items: baseline;
  padding: calc(6 * var(--u)) calc(9 * var(--u));
  border-radius: calc(8 * var(--u));
  background: var(--n-750);
}
.fd-must-s {
  font-size: calc(11.5 * var(--u)); font-weight: 700; color: var(--ink-1);
  display: inline-flex; align-items: baseline; gap: calc(6 * var(--u));
}
.fd-must-s em {
  font-style: normal; font-size: calc(9.5 * var(--u)); color: var(--ink-4); font-weight: 500;
}
.fd-must-e {
  font-size: calc(11 * var(--u)); line-height: calc(16 * var(--u)); color: var(--ink-3);
}
.fd-must-l {
  font-size: calc(9 * var(--u)); font-weight: 800; color: var(--acc);
  white-space: nowrap; padding: calc(1 * var(--u)) calc(6 * var(--u));
  border-radius: calc(5 * var(--u)); background: var(--acc-soft);
  grid-column: 1;
}
.fd-must-x {
  grid-column: 2; font-size: calc(11 * var(--u)); line-height: calc(17 * var(--u));
  color: var(--ink-2); font-style: italic;
}

/* 段落分层（band 5/6/7） */
.fd-bands { display: flex; flex-direction: column; gap: calc(4 * var(--u)); margin-top: calc(9 * var(--u)); }
.fd-band-row {
  display: grid; grid-template-columns: calc(56 * var(--u)) minmax(0, 1fr) minmax(0, .8fr);
  gap: calc(10 * var(--u)); align-items: baseline;
  padding: calc(7 * var(--u)) calc(10 * var(--u));
  border-radius: calc(8 * var(--u)); background: var(--n-750);
}
.fd-band-b {
  font-size: calc(11 * var(--u)); font-weight: 800; color: var(--acc);
  font-variant-numeric: tabular-nums;
}
.fd-band-d { font-size: calc(11 * var(--u)); line-height: calc(16 * var(--u)); color: var(--ink-2); }
.fd-band-a { font-size: calc(11 * var(--u)); line-height: calc(16 * var(--u)); color: var(--ink-3); }

/* ── 词族 ── */
.fd-fams { display: flex; flex-direction: column; gap: calc(7 * var(--u)); }
.fd-fam {
  display: grid; grid-template-columns: calc(26 * var(--u)) minmax(0, 1fr);
  gap: calc(12 * var(--u));
  padding: calc(12 * var(--u)) calc(14 * var(--u));
  border-radius: var(--r);
  background: var(--n-800);
  border: 1px solid var(--glass-line);
}
.fd-fam.on { border-color: var(--acc-line); }
.fd-fam-p {
  width: calc(26 * var(--u)); height: calc(26 * var(--u));
  border-radius: 50%; background: var(--n-750); color: var(--ink-3);
  display: grid; place-items: center; font-size: calc(11 * var(--u)); font-weight: 800;
}
.fd-fam.on .fd-fam-p { background: var(--acc); color: var(--acc-ink); }
.fd-fam-n {
  font-size: calc(13 * var(--u)); font-weight: 800; color: var(--ink);
  display: flex; align-items: center; gap: calc(9 * var(--u));
}
.fd-fam-m {
  display: flex; flex-wrap: wrap; gap: calc(7 * var(--u));
  margin-top: calc(5 * var(--u));
}
.fd-fam-m span {
  font-size: calc(10 * var(--u)); color: var(--ink-3);
  padding: calc(2 * var(--u)) calc(8 * var(--u));
  border-radius: calc(6 * var(--u)); background: var(--n-750);
}
.fd-fam-w, .fd-fam-f {
  font-size: calc(11 * var(--u)); line-height: calc(17 * var(--u));
  color: var(--ink-2); margin-top: calc(6 * var(--u));
}
.fd-fam-w b, .fd-fam-f b {
  color: var(--ink-4); font-size: calc(9.5 * var(--u)); font-weight: 800;
  text-transform: uppercase; letter-spacing: calc(.5 * var(--u));
  margin-right: calc(6 * var(--u));
}
.fd-fam-t {
  font-size: calc(10 * var(--u)); color: var(--acc); margin-top: calc(6 * var(--u));
}

/* ── 风险清单 ── */
.fd-risks { display: flex; flex-direction: column; gap: calc(6 * var(--u)); margin-top: calc(9 * var(--u)); }
.fd-risk {
  padding: calc(9 * var(--u)) calc(11 * var(--u));
  border-radius: calc(9 * var(--u)); background: var(--n-750);
}
.fd-risk-p {
  font-size: calc(12 * var(--u)); font-weight: 700; color: var(--c-rose);
  margin-bottom: calc(4 * var(--u));
}
.fd-risk-d {
  font-size: calc(11 * var(--u)); line-height: calc(17 * var(--u)); color: var(--ink-2);
}
.fd-risk-f {
  font-size: calc(11 * var(--u)); line-height: calc(17 * var(--u));
  color: var(--ink-2); margin-top: calc(5 * var(--u));
}
.fd-risk-f b { color: var(--acc); margin-right: calc(5 * var(--u)); }

/* ── 卡片 ── */
.fd-card {
  padding: calc(14 * var(--u)) calc(16 * var(--u));
  border-radius: var(--r);
  background: var(--n-800);
  border: 1px solid var(--glass-line);
}
.fd-card-t {
  font-size: calc(14 * var(--u)); font-weight: 800; color: var(--ink);
  margin-bottom: calc(7 * var(--u));
}
.fd-card-d {
  font-size: calc(12 * var(--u)); line-height: calc(19 * var(--u)); color: var(--ink-2);
}
.fd-card-d b { color: var(--acc); margin-right: calc(6 * var(--u)); }

/* ── 听力段卡 ── */
.fd-sec-cards { display: flex; flex-direction: column; gap: calc(9 * var(--u)); }
.fd-scard {
  padding: calc(14 * var(--u)) calc(16 * var(--u));
  border-radius: var(--r);
  background: var(--n-800);
  border: 1px solid var(--glass-line);
}
.fd-scard-h {
  display: flex; align-items: baseline; gap: calc(10 * var(--u));
  flex-wrap: wrap; margin-bottom: calc(8 * var(--u));
}
.fd-scard-n {
  font-size: calc(14 * var(--u)); font-weight: 800; color: var(--acc);
}
.fd-scard-t { font-size: calc(13 * var(--u)); font-weight: 700; color: var(--ink); }
.fd-scard-q {
  font-size: calc(10 * var(--u)); color: var(--ink-4);
  padding: calc(1 * var(--u)) calc(7 * var(--u));
  border-radius: calc(5 * var(--u)); background: var(--n-750);
}
.fd-scard-d {
  font-size: calc(10 * var(--u)); font-weight: 700; color: var(--ink-3);
  padding: calc(1 * var(--u)) calc(8 * var(--u));
  border-radius: 999px; background: var(--n-750);
}
.fd-scard-d.hard { color: var(--c-rose); }
.fd-scard-d.easy { color: var(--c-teal); }
.fd-scard-nat {
  font-size: calc(11.5 * var(--u)); color: var(--ink-3);
  margin-bottom: calc(8 * var(--u));
}
.fd-scard-why {
  font-size: calc(11.5 * var(--u)); line-height: calc(18 * var(--u));
  color: var(--ink-2);
  padding: calc(8 * var(--u)) calc(11 * var(--u));
  border-radius: calc(9 * var(--u)); background: var(--n-750);
  margin-bottom: calc(9 * var(--u));
}
.fd-scard-why b { color: var(--acc); margin-right: calc(6 * var(--u)); }
.fd-scard-strat { display: flex; flex-direction: column; gap: calc(5 * var(--u)); }
.fd-strat {
  font-size: calc(11.5 * var(--u)); line-height: calc(18 * var(--u]);
  color: var(--ink-2);
  padding-left: calc(13 * var(--u)); position: relative;
}
.fd-strat::before {
  content: ""; position: absolute; left: 0; top: calc(7 * var(--u));
  width: calc(4 * var(--u)); height: calc(4 * var(--u));
  border-radius: 50%; background: var(--acc);
}
.fd-scard-traps {
  display: flex; flex-direction: column; gap: calc(5 * var(--u));
  margin-top: calc(10 * var(--u));
  padding-top: calc(9 * var(--u));
  border-top: 1px dashed var(--glass-line);
}
.fd-trap {
  display: grid;
  grid-template-columns: calc(96 * var(--u)) minmax(0, 1fr);
  gap: calc(4 * var(--u)) calc(10 * var(--u));
  align-items: baseline;
}
.fd-trap-t {
  font-size: calc(11 * var(--u)); font-weight: 700; color: var(--c-rose);
}
.fd-trap-d { font-size: calc(11 * var(--u)); line-height: calc(16 * var(--u)); color: var(--ink-3); }
.fd-trap-f {
  grid-column: 2; font-size: calc(11 * var(--u)); line-height: calc(16 * var(--u));
  color: var(--ink-2);
}
.fd-trap-f b { color: var(--acc); margin-right: calc(5 * var(--u)); }

/* ── 核心技能 ── */
.fd-core { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(calc(240 * var(--u)), 100%), 1fr)); gap: calc(8 * var(--u)); }
.fd-core-c {
  padding: calc(11 * var(--u)) calc(13 * var(--u));
  border-radius: calc(11 * var(--u));
  background: var(--n-800); border: 1px solid var(--glass-line);
}
.fd-core-n {
  font-size: calc(12.5 * var(--u)); font-weight: 800; color: var(--ink);
  display: flex; align-items: baseline; gap: calc(7 * var(--u));
  margin-bottom: calc(5 * var(--u));
}
.fd-core-n em {
  font-style: normal; font-size: calc(9.5 * var(--u)); color: var(--ink-4); font-weight: 500;
}
.fd-core-d {
  font-size: calc(11 * var(--u)); line-height: calc(17 * var(--u)); color: var(--ink-2);
}
.fd-core-e {
  margin-top: calc(6 * var(--u));
  font-size: calc(11 * var(--u)); line-height: calc(17 * var(--u));
  color: var(--ink-2); font-style: italic;
}
.fd-core-w {
  margin-top: calc(6 * var(--u));
  font-size: calc(10 * var(--u)); color: var(--acc); font-weight: 700;
}

/* ── 分数换算 ── */
.fd-score {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(calc(90 * var(--u)), 1fr));
  gap: calc(2 * var(--u));
  margin-bottom: calc(14 * var(--u));
  border-radius: var(--r-sm); overflow: hidden;
  border: 1px solid var(--glass-line); background: var(--n-800);
}
.fd-score-cell {
  padding: calc(10 * var(--u)) calc(12 * var(--u));
  border-right: 1px solid var(--glass-line);
  display: flex; align-items: baseline; gap: calc(7 * var(--u));
}
.fd-score-cell:last-child { border-right: none; }
.fd-score-cell b {
  font-size: calc(17 * var(--u)); font-weight: 800; color: var(--acc);
  font-variant-numeric: tabular-nums;
}
.fd-score-cell span {
  font-size: calc(11 * var(--u)); color: var(--ink-3);
  font-variant-numeric: tabular-nums;
}
.fd-score2 {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)) minmax(0, 1.1fr);
  gap: calc(9 * var(--u)); margin-bottom: calc(14 * var(--u));
}
.fd-score2-col {
  padding: calc(11 * var(--u)) calc(13 * var(--u));
  border-radius: var(--r); background: var(--n-800);
  border: 1px solid var(--glass-line);
}
.fd-score2-h {
  font-size: calc(11 * var(--u)); font-weight: 800; color: var(--ink-2);
  margin-bottom: calc(8 * var(--u));
}
.fd-score2-r {
  display: flex; justify-content: space-between; gap: calc(10 * var(--u));
  padding: calc(4 * var(--u)) 0;
  border-bottom: 1px dashed var(--glass-line);
  font-size: calc(11 * var(--u));
}
.fd-score2-r:last-child { border-bottom: none; }
.fd-score2-r b { color: var(--ink-2); font-weight: 700; }
.fd-score2-r span { color: var(--ink-1); font-variant-numeric: tabular-nums; font-weight: 700; }
.fd-score2-note {
  padding: calc(12 * var(--u)) calc(14 * var(--u));
  border-radius: var(--r);
  background: var(--acc-soft); border: 1px solid var(--acc-line);
  font-size: calc(12 * var(--u)); line-height: calc(19 * var(--u)); color: var(--ink-1);
}
.fd-score2-note b { color: var(--acc); }

/* ── 做题顺序 ── */
.fd-order-list { display: flex; flex-direction: column; gap: calc(6 * var(--u)); }
.fd-order-i {
  display: grid; grid-template-columns: calc(24 * var(--u)) minmax(0, 1fr);
  gap: calc(11 * var(--u)); align-items: baseline;
  padding: calc(9 * var(--u)) calc(12 * var(--u));
  border-radius: calc(10 * var(--u)); background: var(--n-800);
  border: 1px solid var(--glass-line);
}
.fd-order-n {
  width: calc(24 * var(--u)); height: calc(24 * var(--u));
  border-radius: 50%; background: var(--n-750); color: var(--ink-2);
  display: grid; place-items: center; font-size: calc(10.5 * var(--u)); font-weight: 800;
}
.fd-order-i b { font-size: calc(12.5 * var(--u)); color: var(--ink); margin-right: calc(8 * var(--u)); }
.fd-order-i span { font-size: calc(11.5 * var(--u)); color: var(--ink-3); line-height: calc(17 * var(--u)); }

/* ── 题型卡 ── */
.fd-qtypes { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(calc(340 * var(--u)), 100%), 1fr)); gap: calc(9 * var(--u)); }
.fd-qt {
  padding: calc(13 * var(--u)) calc(15 * var(--u));
  border-radius: var(--r); background: var(--n-800);
  border: 1px solid var(--glass-line);
}
.fd-qt-h {
  display: flex; align-items: baseline; gap: calc(9 * var(--u));
  flex-wrap: wrap; margin-bottom: calc(7 * var(--u));
}
.fd-qt-n { font-size: calc(13.5 * var(--u)); font-weight: 800; color: var(--ink); }
.fd-qt-c {
  font-size: calc(10 * var(--u)); color: var(--ink-4);
  padding: calc(1 * var(--u)) calc(7 * var(--u));
  border-radius: calc(5 * var(--u)); background: var(--n-750);
}
.fd-qt-d {
  font-size: calc(10 * var(--u)); font-weight: 700; color: var(--ink-3);
  padding: calc(1 * var(--u)) calc(8 * var(--u));
  border-radius: 999px; background: var(--n-750);
}
.fd-qt-d.hard { color: var(--c-rose); }
.fd-qt-d.easy { color: var(--c-teal); }
.fd-qt-why {
  font-size: calc(11.5 * var(--u)); line-height: calc(18 * var(--u));
  color: var(--ink-2); margin-bottom: calc(9 * var(--u));
}
.fd-qt-why b { color: var(--ink-4); font-size: calc(9.5 * var(--u)); text-transform: uppercase; margin-right: calc(5 * var(--u)); }
.fd-qt-rules { display: flex; flex-direction: column; gap: calc(4 * var(--u)); }
.fd-qt-rule {
  padding: calc(7 * var(--u)) calc(9 * var(--u));
  border-radius: calc(8 * var(--u)); background: var(--n-750);
}
.fd-qt-rn {
  font-size: calc(11 * var(--u)); font-weight: 800; color: var(--acc);
  display: block; margin-bottom: calc(3 * var(--u));
}
.fd-qt-rd {
  font-size: calc(11 * var(--u)); line-height: calc(17 * var(--u)); color: var(--ink-2);
  display: block;
}
.fd-qt-re {
  display: block; margin-top: calc(4 * var(--u));
  font-size: calc(10.5 * var(--u)); line-height: calc(16 * var(--u));
  color: var(--ink-4); font-style: italic;
}

/* ── 写作 ── */
.fd-moves { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(calc(280 * var(--u)), 100%), 1fr)); gap: calc(8 * var(--u)); margin-top: calc(9 * var(--u)); }
.fd-move {
  padding: calc(10 * var(--u)) calc(12 * var(--u));
  border-radius: calc(10 * var(--u)); background: var(--n-750);
}
.fd-move-n {
  font-size: calc(12 * var(--u)); font-weight: 800; color: var(--acc);
  margin-bottom: calc(4 * var(--u));
}
.fd-move-d {
  font-size: calc(11 * var(--u)); line-height: calc(17 * var(--u)); color: var(--ink-2);
}
.fd-move-e {
  margin-top: calc(6 * var(--u));
  font-size: calc(10.5 * var(--u)); line-height: calc(16 * var(--u));
  color: var(--ink-3); font-style: italic;
}
.fd-move-bad {
  margin-top: calc(6 * var(--u));
  font-size: calc(10.5 * var(--u)); line-height: calc(16 * var(--u));
  color: var(--c-rose);
}

.fd-mistakes { display: flex; flex-direction: column; gap: calc(5 * var(--u)); margin-top: calc(8 * var(--u)); }
.fd-mistake {
  display: grid;
  grid-template-columns: minmax(calc(120 * var(--u)), auto) minmax(0, 1fr);
  gap: calc(3 * var(--u)) calc(11 * var(--u));
  align-items: baseline;
  padding: calc(8 * var(--u)) calc(11 * var(--u));
  border-radius: calc(9 * var(--u)); background: var(--n-750);
}
.fd-mistake-p {
  font-size: calc(9.5 * var(--u)); font-weight: 800; color: var(--ink-4);
  text-transform: uppercase; letter-spacing: calc(.5 * var(--u));
  grid-column: 1;
}
.fd-mistake-m {
  font-size: calc(11.5 * var(--u)); font-weight: 700; color: var(--c-rose);
  grid-column: 1;
}
.fd-mistake-d {
  grid-column: 2; font-size: calc(11 * var(--u)); line-height: calc(17 * var(--u));
  color: var(--ink-2);
}
.fd-mistake-f {
  grid-column: 2; font-size: calc(11 * var(--u)); line-height: calc(17 * var(--u));
  color: var(--ink-2);
}
.fd-mistake-f b { color: var(--acc); margin-right: calc(5 * var(--u)); }

.fd-blueprint { display: flex; flex-direction: column; gap: calc(5 * var(--u)); margin-top: calc(8 * var(--u)); }
.fd-bp {
  display: grid; grid-template-columns: calc(56 * var(--u)) minmax(0, 1fr) auto;
  gap: calc(11 * var(--u)); align-items: baseline;
  padding: calc(8 * var(--u)) calc(11 * var(--u));
  border-radius: calc(9 * var(--u)); background: var(--n-750);
}
.fd-bp-n { font-size: calc(11.5 * var(--u)); font-weight: 800; color: var(--acc); }
.fd-bp-d { font-size: calc(11.5 * var(--u)); line-height: calc(17 * var(--u)); color: var(--ink-2); }
.fd-bp-l {
  font-size: calc(10 * var(--u)); color: var(--ink-4);
  font-variant-numeric: tabular-nums; white-space: nowrap;
}

.fd-time { display: flex; flex-direction: column; gap: calc(4 * var(--u)); margin-top: calc(8 * var(--u)); }
.fd-time-row {
  display: grid; grid-template-columns: calc(80 * var(--u)) minmax(0, 1fr);
  gap: calc(11 * var(--u)); align-items: baseline;
  padding: calc(6 * var(--u)) calc(10 * var(--u));
  border-radius: calc(8 * var(--u)); background: var(--n-750);
}
.fd-time-t {
  font-size: calc(11 * var(--u)); font-weight: 800; color: var(--acc);
  font-variant-numeric: tabular-nums;
}
.fd-time-d { font-size: calc(11 * var(--u)); line-height: calc(17 * var(--u)); color: var(--ink-2); }

.fd-comps { display: flex; flex-direction: column; gap: calc(7 * var(--u)); }
.fd-comp {
  display: grid;
  grid-template-columns: calc(130 * var(--u)) minmax(0, 1fr) minmax(0, 1fr);
  gap: calc(4 * var(--u)) calc(13 * var(--u));
  padding: calc(11 * var(--u)) calc(13 * var(--u));
  border-radius: var(--r); background: var(--n-800);
  border: 1px solid var(--glass-line);
}
.fd-comp-d {
  grid-column: 1 / -1;
  font-size: calc(12 * var(--u)); font-weight: 800; color: var(--ink);
}
.fd-comp-b6, .fd-comp-b7 {
  font-size: calc(11 * var(--u)); line-height: calc(17 * var(--u)); color: var(--ink-3);
}
.fd-comp-b7 { color: var(--ink-2); }
.fd-comp-b6 b, .fd-comp-b7 b {
  display: block; font-size: calc(9.5 * var(--u)); font-weight: 800;
  text-transform: uppercase; letter-spacing: calc(.5 * var(--u));
  margin-bottom: calc(3 * var(--u));
}
.fd-comp-b6 b { color: var(--ink-4); }
.fd-comp-b7 b { color: var(--acc); }
.fd-comp-x {
  grid-column: 1 / -1;
  font-size: calc(11 * var(--u)); line-height: calc(17 * var(--u)); color: var(--ink-2);
  padding-top: calc(6 * var(--u));
  border-top: 1px dashed var(--glass-line);
}
.fd-comp-x b { color: var(--ink-4); margin-right: calc(5 * var(--u)); }

.fd-checklist { display: flex; flex-direction: column; gap: calc(4 * var(--u)); }
.fd-check {
  font-size: calc(11.5 * var(--u)); line-height: calc(18 * var(--u));
  color: var(--ink-2);
  padding: calc(6 * var(--u)) calc(10 * var(--u));
  border-radius: calc(8 * var(--u)); background: var(--n-750);
}

/* ── 词表网格 ── */
.fd-vocabgrid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(calc(240 * var(--u)), 100%), 1fr)); gap: calc(7 * var(--u)); margin-top: calc(9 * var(--u)); }
.fd-vg {
  padding: calc(9 * var(--u)) calc(11 * var(--u));
  border-radius: calc(9 * var(--u)); background: var(--n-750);
}
.fd-vg-h {
  font-size: calc(10 * var(--u)); font-weight: 800; color: var(--acc);
  margin-bottom: calc(4 * var(--u));
}
.fd-vg-w {
  font-size: calc(11 * var(--u)); color: var(--ink-4);
  text-decoration: line-through; margin-bottom: calc(3 * var(--u));
}
.fd-vg-words {
  font-size: calc(11 * var(--u)); line-height: calc(17 * var(--u)); color: var(--ink-2);
}

/* ── 口语部分 ── */
.fd-parts { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(calc(300 * var(--u)), 100%), 1fr)); gap: calc(9 * var(--u)); }
.fd-part {
  padding: calc(13 * var(--u)) calc(15 * var(--u));
  border-radius: var(--r); background: var(--n-800);
  border: 1px solid var(--glass-line);
}
.fd-part-h {
  display: flex; align-items: baseline; gap: calc(9 * var(--u));
  margin-bottom: calc(9 * var(--u)); flex-wrap: wrap;
}
.fd-part-p {
  font-size: calc(11 * var(--u)); font-weight: 800; color: var(--acc);
  padding: calc(2 * var(--u)) calc(9 * var(--u));
  border-radius: 999px; background: var(--acc-soft);
}
.fd-part-n { font-size: calc(13.5 * var(--u)); font-weight: 800; color: var(--ink); }
.fd-part-t {
  font-size: calc(10 * var(--u)); color: var(--ink-4);
  padding: calc(1 * var(--u)) calc(7 * var(--u));
  border-radius: calc(5 * var(--u)); background: var(--n-750);
}
.fd-part-d {
  font-size: calc(11 * var(--u)); line-height: calc(17 * var(--u));
  color: var(--ink-2); margin-bottom: calc(6 * var(--u));
}
.fd-part-d b { color: var(--ink-4); margin-right: calc(5 * var(--u)); font-size: calc(9.5 * var(--u)); text-transform: uppercase; }
.fd-formula {
  margin-top: calc(8 * var(--u));
  padding: calc(8 * var(--u)) calc(10 * var(--u));
  border-radius: calc(8 * var(--u));
  background: var(--n-750);
  border-left: 2px solid var(--acc);
  font-size: calc(11 * var(--u)); line-height: calc(17 * var(--u));
  color: var(--ink-1);
}

/* ── 子能力 ── */
.fd-sub { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(calc(270 * var(--u)), 100%), 1fr)); gap: calc(8 * var(--u)); margin-top: calc(10 * var(--u)); }
.fd-subc {
  padding: calc(11 * var(--u)) calc(13 * var(--u));
  border-radius: calc(11 * var(--u)); background: var(--n-750);
}
.fd-subc-n {
  font-size: calc(12.5 * var(--u)); font-weight: 800; color: var(--ink);
  display: flex; align-items: baseline; gap: calc(7 * var(--u));
  margin-bottom: calc(5 * var(--u));
}
.fd-subc-n em {
  font-style: normal; font-size: calc(9.5 * var(--u)); color: var(--ink-4); font-weight: 500;
}
.fd-subc-d { font-size: calc(11 * var(--u)); line-height: calc(17 * var(--u)); color: var(--ink-2); }
.fd-subc-h {
  font-size: calc(11 * var(--u)); line-height: calc(17 * var(--u));
  color: var(--ink-2); margin-top: calc(6 * var(--u));
}
.fd-subc-h b { color: var(--acc); margin-right: calc(5 * var(--u)); }

/* ── 论证 好/坏对照 ── */
.fd-ba {
  display: grid; grid-template-columns: auto minmax(0, 1fr);
  gap: calc(8 * var(--u)); align-items: baseline;
  font-size: calc(11 * var(--u)); line-height: calc(17 * var(--u));
  padding: calc(7 * var(--u)) calc(10 * var(--u));
  border-radius: calc(8 * var(--u));
  background: var(--n-750); margin-bottom: calc(4 * var(--u));
}
.fd-ba-l { font-weight: 800; color: var(--c-rose); }
.fd-ba-good { background: color-mix(in srgb, var(--acc) 9%, var(--n-750)); }
.fd-ba-good .fd-ba-l { color: var(--acc); }
.fd-ba-good span:last-child { color: var(--ink-1); }

/* ── hedging 光谱 ── */
.fd-spectrum { display: flex; flex-direction: column; gap: calc(5 * var(--u)); margin-top: calc(10 * var(--u)); }
.fd-spec {
  display: grid; grid-template-columns: calc(60 * var(--u)) minmax(0, 1fr);
  gap: calc(3 * var(--u)) calc(12 * var(--u));
  padding: calc(9 * var(--u)) calc(11 * var(--u));
  border-radius: calc(9 * var(--u)); background: var(--n-750);
}
.fd-spec-l {
  font-size: calc(11 * var(--u)); font-weight: 800; color: var(--acc);
  grid-column: 1;
}
.fd-spec-e {
  grid-column: 2; font-size: calc(11.5 * var(--u)); font-style: italic;
  color: var(--ink-1); line-height: calc(17 * var(--u));
}
.fd-spec-w {
  grid-column: 2; font-size: calc(10.5 * var(--u)); line-height: calc(16 * var(--u));
  color: var(--ink-3); margin-top: calc(3 * var(--u));
}
.fd-spec-u {
  grid-column: 2; font-size: calc(10 * var(--u)); color: var(--ink-4);
  margin-top: calc(3 * var(--u));
}

/* ── 研究议题 ── */
.fd-res { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(calc(320 * var(--u)), 100%), 1fr)); gap: calc(8 * var(--u)); margin-top: calc(9 * var(--u)); }
.fd-resc {
  padding: calc(11 * var(--u)) calc(13 * var(--u));
  border-radius: calc(11 * var(--u)); background: var(--n-750);
}
.fd-resc-h {
  font-size: calc(12.5 * var(--u)); font-weight: 800; color: var(--ink);
  display: flex; align-items: center; gap: calc(8 * var(--u));
  margin-bottom: calc(5 * var(--u));
}
.fd-resc-d {
  font-size: calc(11 * var(--u)); line-height: calc(17 * var(--u)); color: var(--ink-2);
}
.fd-resc-t {
  font-size: calc(11 * var(--u)); line-height: calc(17 * var(--u));
  color: var(--ink-3); margin-top: calc(6 * var(--u));
}
.fd-resc-t b { color: var(--acc); margin-right: calc(5 * var(--u)); }

/* ── 诊断卡 ── */
.fd-diag { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(calc(300 * var(--u)), 100%), 1fr)); gap: calc(8 * var(--u)); }
.fd-diag-c {
  padding: calc(12 * var(--u)) calc(14 * var(--u));
  border-radius: var(--r); background: var(--n-800);
  border: 1px solid var(--glass-line);
}
.fd-diag-h {
  display: flex; align-items: center; justify-content: space-between;
  gap: calc(10 * var(--u)); margin-bottom: calc(9 * var(--u));
}
.fd-diag-n { font-size: calc(13 * var(--u)); font-weight: 800; color: var(--ink); }
.fd-diag-r {
  font-size: calc(11 * var(--u)); line-height: calc(17 * var(--u));
  color: var(--ink-2); margin-bottom: calc(6 * var(--u));
}
.fd-diag-r b {
  display: inline-block; min-width: calc(42 * var(--u));
  font-size: calc(9.5 * var(--u)); font-weight: 800; color: var(--ink-4);
  text-transform: uppercase; margin-right: calc(6 * var(--u));
}
.g-f-sm { padding: calc(3 * var(--u)) calc(9 * var(--u)) !important; font-size: calc(10.5 * var(--u)) !important; }

@media (max-width: 820px) {
  .fd-level-h { grid-template-columns: auto minmax(0, 1fr); }
  .fd-level-exit { grid-column: 1 / -1; border-left: none; padding-left: 0; border-top: 1px solid var(--glass-line); padding-top: calc(7 * var(--u)); }
  .fd-score2 { grid-template-columns: minmax(0, 1fr); }
  .fd-comp { grid-template-columns: minmax(0, 1fr); }
  .fd-comp-b6, .fd-comp-b7 { grid-column: 1; }
  .fd-mistake { grid-template-columns: minmax(0, 1fr); }
  .fd-mistake-m, .fd-mistake-p, .fd-mistake-d, .fd-mistake-f { grid-column: 1; }
  .fd-trap { grid-template-columns: minmax(0, 1fr); }
  .fd-trap-d, .fd-trap-f { grid-column: 1; }
  .fd-must-row { grid-template-columns: minmax(0, 1fr); }
  .fd-must-l, .fd-must-x { grid-column: 1; }
}

