/* wenfeng.org v2 · 组件层
   令牌：tokens.css（fonts-front 原件，不改）。
   外壳：照搬 css/shop.css 的 topbar / wordmark / btn / seg / site-foot。
   版式：从已定稿的 home-v4（丁）、source-v2b（乙′）、font-v1b（甲′）、license-v5b（戊′）抽出共用件，
   全站只用这一套：.display  .split  .tasks/.task  .aside  .kv-rows  .stats  .index  .label
   规则（tokens.css 头注）：黑白灰；黑只给主按钮/选中/字标；不画边框不加投影，分隔只用 --rule 细线；字重只用 400/700。 */

*, *::before, *::after { box-sizing: border-box; }
[hidden] { display: none !important; }
html { font-size: 16px; -webkit-text-size-adjust: 100%; }
html[data-scale="lg"] { zoom: 1.5; }
body { margin: 0; min-height: 100vh; display: flex; flex-direction: column; font-family: var(--font-ui); font-size: var(--fs-14); line-height: var(--lh-body); color: var(--ink); background: var(--page); -webkit-font-smoothing: antialiased; }
a { color: inherit; text-decoration: none; }
a:hover { text-decoration: underline; text-underline-offset: 0.18em; }
button, input, select, textarea { font: inherit; color: inherit; }
button { cursor: pointer; background: none; border: 0; padding: 0; }
h1, h2, h3, p, ul, ol, pre, figure, dl, dd { margin: 0; }
ul, ol { padding: 0; list-style: none; }
code, pre { font-family: var(--font-mono); }
::selection { background: var(--ink); color: var(--on-ink); }
:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; border-radius: var(--radius-sm); }
.container { width: 100%; max-width: var(--container); margin: 0 auto; padding: 0 var(--gutter); }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.mono { font-family: var(--font-mono); font-size: 0.92em; letter-spacing: 0.01em; }
.icon { width: 1.1em; height: 1.1em; flex: 0 0 auto; fill: currentColor; vertical-align: -0.2em; display: inline-block; }
html:not([data-view="dev"]) .for-dev { display: none; }
html[data-view="dev"] .for-design { display: none; }
main { flex: 1; }

/* —— 外壳（= shop.css） —— */
.topbar { position: sticky; top: 0; z-index: 40; height: var(--topbar-h); background: var(--page); }
.topbar-inner { height: 100%; display: flex; align-items: center; gap: var(--s-8); }
.wordmark { display: inline-flex; align-items: center; gap: var(--s-2); font-size: var(--fs-16); font-weight: 700; white-space: nowrap; }
/* 字标与 APP 同套：icon.webp 方标 + 寒蝉宽黑 Medium「文风开源」连写 */
.wordmark .wm-name { font-family: "wenfeng-hckht", "Chill K Sans Medium", var(--font-ui); font-weight: 500; letter-spacing: 0.01em; }
.wordmark .wm-alt { color: var(--gray); }
.wordmark:hover { text-decoration: none; }
.wordmark .wm-ico { display: block; width: 24px; height: 24px; border-radius: 6px; }
[data-theme="dark"] .wordmark .wm-ico { filter: invert(1); }
.topnav { display: flex; gap: var(--s-1); min-width: 0; overflow-x: auto; scrollbar-width: none; }
.topnav a { padding: 0.4rem 1.5rem; border-radius: var(--radius-pill); color: var(--gray); white-space: nowrap; transition: background var(--dur) var(--ease), color var(--dur) var(--ease); }
.topnav a:hover { color: var(--ink); text-decoration: none; background: var(--fill); }
.topnav a.is-active { color: var(--ink); background: var(--fill); font-weight: var(--fw-title); }
.topbar-end { margin-left: auto; display: flex; align-items: center; gap: var(--s-2); }
.topbar-end > a { color: var(--gray); font-size: var(--fs-12); padding: 0.4rem 0.7rem; border-radius: var(--radius-pill); }
.topbar-end > a:hover { text-decoration: none; background: var(--fill); color: var(--ink); }
.icon-btn { display: inline-grid; place-items: center; width: 2.25rem; height: 2.25rem; border-radius: 50%; color: var(--ink-2); transition: background var(--dur) var(--ease); }
.icon-btn:hover { background: var(--fill); color: var(--ink); }
.icon-btn[aria-pressed="true"] { background: var(--fill); color: var(--ink); }
.topbar-end .view-switch { font-size: var(--fs-12); flex: none; }
.icon-btn .icon { width: 1.15rem; height: 1.15rem; }
.icon-btn .ico-sun { display: none; }
[data-theme="dark"] .icon-btn .ico-moon { display: none; }
[data-theme="dark"] .icon-btn .ico-sun { display: block; }
.seg { display: inline-flex; gap: 0.15rem; padding: 0.2rem; background: var(--fill); border-radius: var(--radius-pill); font-size: var(--fs-12); }
.seg button { padding: 0.28rem 0.7rem; line-height: 1.35; border-radius: var(--radius-pill); color: var(--gray); }
.seg button:hover { color: var(--ink); }
.seg .is-on { color: var(--ink); background: var(--paper); }

.site-foot { margin-top: var(--s-16); padding: var(--s-12) 0 0; border-top: 1px solid var(--rule); }
.site-foot-inner {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--s-6) var(--s-10);
  padding-bottom: var(--s-8);
}
.site-foot-brand {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--s-3);
}
.site-foot-brand .wordmark { margin-bottom: 0; }
.site-foot-brand .foot-tagline {
  margin: 0;
  max-width: 22em;
  font-size: var(--fs-13);
  line-height: 1.55;
  color: var(--gray);
  letter-spacing: 0;
}
@media (hover: hover) {
  .site-foot-brand .foot-tagline {
    opacity: 0;
    visibility: hidden;
    transition: opacity var(--dur) var(--ease), visibility 0s linear var(--dur);
  }
  .site-foot-brand:hover .foot-tagline,
  .site-foot-brand:focus-within .foot-tagline {
    opacity: 1;
    visibility: visible;
    transition: opacity var(--dur) var(--ease);
  }
}
.site-foot-brand p { max-width: 22em; font-size: var(--fs-13); color: var(--gray); }
.foot-src-k {
  margin: var(--s-5) 0 var(--s-3);
  font-size: var(--fs-12);
  color: var(--gray-2);
  letter-spacing: 0.04em;
}
/* 源码与镜像：图标+字，无底（C 稿）；FeiCode 源码在前，GitHub 镜像在后 */
.foot-marks {
  display: flex;
  flex-wrap: wrap;
  gap: var(--s-1) var(--s-4);
  margin-top: 0;
}
.foot-marks a {
  display: inline-flex;
  align-items: center;
  gap: 0.35em;
  font-size: var(--fs-13);
  color: var(--ink-2);
  text-decoration: none;
}
.foot-marks a:hover { text-decoration: underline; text-underline-offset: 0.2em; }
.foot-marks img { display: block; height: 1.05rem; width: auto; }
.foot-marks .icon { width: 1.1rem; height: 1.1rem; color: var(--ink); }
.foot-marks .x { font-family: var(--font-mono); font-size: 0.8em; color: var(--gray-2); }
.foot-rest {
  display: grid;
  grid-template-columns: repeat(3, auto);
  column-gap: var(--s-10);
  row-gap: var(--s-2);
}
.foot-rest a {
  display: flex;
  flex-direction: column;
  gap: 0.1rem;
  min-width: 6.5em;
  padding: 0;
  color: inherit;
}
.foot-rest .t { font-size: var(--fs-14); color: var(--gray); }
.foot-rest .t::after {
  content: " →";
  font-family: var(--font-mono);
  font-size: 0.85em;
  color: var(--gray-2);
  visibility: hidden;
}
.foot-rest a.is-ext .t::after { content: " ↗"; }
/* 描述悬停才显（D-11）：空间常留不跳版，只淡入淡出 */
.foot-rest .d {
  font-size: var(--fs-12);
  line-height: 1.3;
  color: var(--gray-2);
  min-width: 0;
  overflow-wrap: anywhere;
  opacity: 0;
  visibility: hidden;
  transition: opacity var(--dur) var(--ease), visibility 0s linear var(--dur);
}
html[data-view="dev"] .foot-rest .d {
  opacity: 1;
  visibility: visible;
}
.foot-rest a:hover { text-decoration: none; }
@media (hover: hover) {
  .foot-rest a:hover .t,
  .foot-rest a:focus-visible .t { color: var(--ink); }
  .foot-rest a:hover .t::after,
  .foot-rest a:focus-visible .t::after { visibility: visible; }
  .foot-rest a:hover .d,
  .foot-rest a:focus-visible .d {
    opacity: 1;
    visibility: visible;
    transition: opacity var(--dur) var(--ease);
  }
}
.site-foot-bottom {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: var(--s-3) var(--s-6);
  padding: var(--s-5) 0 var(--s-6);
  border-top: 1px solid var(--rule);
  font-size: var(--fs-12);
  color: var(--gray-2);
}
.site-foot-bottom a { color: var(--gray); }
.site-foot-bottom .tm { font-size: 0.72em; vertical-align: super; line-height: 0; }
.reg { font-size: 0.72em; vertical-align: super; line-height: 0; }
.foot-bottom-links {
  display: flex;
  flex-wrap: wrap;
  gap: var(--s-2) var(--s-5);
}
.foot-bottom-links a { color: var(--ink-2); }
.foot-bottom-links a:hover { color: var(--ink); text-decoration: none; }

/* 页脚左侧对照：横排 / 同行。活页仍是直叠。 */
.site-foot-brand.is-row {
  flex-direction: row;
  align-items: flex-start;
  gap: var(--s-5) var(--s-8);
  max-width: none;
}
.site-foot-brand.is-row .foot-brand-copy {
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
  padding-top: 0.15em;
}
.site-foot-brand.is-row .foot-tagline,
.site-foot-brand.is-row p { max-width: 18em; }
.site-foot-brand.is-line {
  flex-direction: column;
  align-items: flex-start;
  gap: var(--s-6);
  max-width: none;
}
.site-foot-brand.is-line .foot-brand-head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--s-3) var(--s-4);
}
.site-foot-brand.is-line .foot-tagline {
  max-width: none;
  line-height: 1.4;
}
.site-foot-brand.is-line .foot-marks {
  flex: none;
}

/* —— 按钮 / 芯片 / 搜索（= shop.css） —— */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 0.4em; height: 2.25rem; padding: 0 1.1rem; border-radius: var(--radius-pill); background: var(--fill); color: var(--ink); font-size: var(--fs-13); line-height: 1; white-space: nowrap; transition: background var(--dur) var(--ease); }
.btn:hover { background: var(--surface-2); text-decoration: none; }
.btn-ink { background: var(--ink); color: var(--on-ink); font-weight: var(--fw-title); }
.btn-ink:hover { background: var(--ink-hover); }
.btn-text { background: transparent; padding: 0 0.25rem; color: var(--ink-2); height: auto; }
.btn-text:hover { color: var(--ink); background: transparent; text-decoration: underline; text-underline-offset: 0.2em; }
.btn .icon { width: 0.95rem; height: 0.95rem; }
.acts { display: flex; flex-wrap: wrap; align-items: center; gap: var(--s-3) var(--s-4); }
.chips { display: flex; flex-wrap: wrap; gap: var(--s-2); }
.chip { display: inline-flex; align-items: center; gap: 0.35em; height: 2rem; padding: 0 0.95rem; border-radius: var(--radius-pill); background: var(--fill); font-size: var(--fs-13); color: var(--ink-2); transition: background var(--dur) var(--ease); }
.chip:hover { background: var(--surface-2); text-decoration: none; }
.chip.is-on { background: var(--ink); color: var(--on-ink); font-weight: var(--fw-title); }
.chip .icon { width: 0.95rem; height: 0.95rem; }
.search { display: flex; align-items: center; gap: var(--s-3); max-width: 40rem; }
.search .k { flex-shrink: 0; font-size: var(--fs-12); color: var(--gray-2); }
.search input { flex: 1; min-width: 0; height: 2.85rem; padding: 0 1.15rem; border: 0; border-radius: var(--radius-pill); background: var(--fill); font-size: var(--fs-14); }
.search input::placeholder { color: var(--gray-2); }
.search input:focus { background: var(--surface); outline: 2px solid var(--ink); outline-offset: 2px; }

/* —— 页头：丁式大字（hv4-display） —— */
.page { padding-top: var(--s-16); }
.crumb { margin: 0 0 var(--s-8); font-family: var(--font-mono); font-size: var(--fs-12); color: var(--gray-2); letter-spacing: 0.02em; }
.crumb a:hover { color: var(--ink); }
.crumb .sep { margin: 0 0.45em; opacity: 0.7; }
.label { margin: 0 0 var(--s-3); font-size: var(--fs-12); color: var(--gray); letter-spacing: 0.04em; }
.display { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 0.9fr); gap: var(--s-6) var(--s-12); align-items: end; margin-bottom: var(--s-12); padding-bottom: var(--s-10); border-bottom: 1px solid var(--rule); }
.display h1 { font-size: clamp(3.25rem, 9vw, 5.75rem); font-weight: var(--fw-title); line-height: 0.95; letter-spacing: -0.045em; }
.display .lead { max-width: 22em; justify-self: end; padding-bottom: 0.35em; font-size: var(--fs-16); color: var(--ink-2); }
.display.is-mid h1 { font-size: clamp(2.25rem, 5vw, 3.5rem); line-height: 1.1; letter-spacing: -0.03em; }

/* —— 主栏 + 卷宗（hv4-split / font-v1b） —— */
.split { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 0.9fr); gap: var(--s-8) var(--s-12); align-items: start; margin-bottom: var(--s-12); }
.split.is-wide { grid-template-columns: minmax(0, 2fr) minmax(16rem, 0.8fr); }
.aside { align-self: stretch; min-width: 0; padding: var(--s-5) 0 var(--s-2) var(--s-6); border-left: 1px solid var(--ink); }
.aside-label { margin: 0 0 var(--s-3); font-family: var(--font-mono); font-size: var(--fs-11); font-weight: var(--fw-title); letter-spacing: 0.08em; }
.aside .note { margin-top: var(--s-5); font-size: var(--fs-12); color: var(--gray); }
.aside .aside-note { margin: var(--s-4) 0 0; font-size: var(--fs-13); color: var(--gray); }
.aside + .aside { margin-top: var(--s-8); }
.kv-rows > div { display: grid; grid-template-columns: var(--kw, 5.5em) minmax(0, 1fr); gap: var(--s-4); padding: 0.6rem 0; font-size: var(--fs-14); }
.kv-rows > div + div { border-top: 1px solid var(--rule); }
.kv-rows dt { color: var(--gray); }
.kv-rows dd { color: var(--ink); min-width: 0; overflow-wrap: anywhere; }
.kv-rows dd a:not(.btn) { text-decoration: underline; text-underline-offset: 0.2em; text-decoration-thickness: 1px; }
.kv-rows.is-words dt { color: var(--ink); font-weight: var(--fw-title); }
.kv-rows.is-words dd { color: var(--gray); }
.hash { font-family: var(--font-mono); font-size: var(--fs-12); color: var(--ink-2); word-break: break-all; }

/* —— 编号任务行（hv4-task） —— */
.tasks { display: flex; flex-direction: column; }
.task { display: grid; grid-template-columns: 2.25rem auto minmax(0, 1fr) auto; gap: var(--s-3) var(--s-4); align-items: center; padding: var(--s-5) var(--s-4); margin: 0 calc(-1 * var(--s-4)); border-bottom: 1px solid var(--rule); border-radius: var(--radius-sm); transition: background var(--dur) var(--ease); }
.task:first-child { border-top: 1px solid var(--rule); }
a.task:hover { text-decoration: none; background: var(--fill); }
.task .idx { font-family: var(--font-mono); font-size: var(--fs-12); color: var(--gray-2); letter-spacing: 0.04em; }
.task .t-ico { display: inline-grid; place-items: center; width: 2rem; height: 2rem; border-radius: 50%; background: var(--fill); color: var(--ink-2); }
.task .t-ico .icon { width: 1.05rem; height: 1.05rem; }
.task .body { display: flex; flex-direction: column; gap: 0.2rem; min-width: 0; }
.task .t-t { font-size: var(--fs-20); font-weight: var(--fw-title); letter-spacing: -0.02em; line-height: var(--lh-snug); }
.task .t-d { font-size: var(--fs-13); color: var(--gray); }
.task .arrow { color: var(--gray-2); }
@media (hover: hover) { a.task .arrow { visibility: hidden; } a.task:hover .arrow, .task.is-ink .arrow { visibility: visible; } }
.task.is-ink { border-color: transparent; background: var(--ink); color: var(--on-ink); }
.task.is-ink + .task { border-top: 1px solid var(--rule); }
.task.is-ink .idx, .task.is-ink .t-d { color: var(--on-ink-2); }
.task.is-ink .t-ico { background: rgba(255, 255, 255, 0.12); color: var(--on-ink); }
.task.is-ink .arrow { color: var(--on-ink); }
a.task.is-ink:hover { background: var(--ink-hover); }
.task > span:empty { display: none; }
.tasks.is-compact .task { grid-template-columns: 2.25rem minmax(0, 1fr) auto; padding: var(--s-4); }
.tasks.is-compact .body { display: grid; grid-template-columns: minmax(8rem, 0.9fr) minmax(0, 1.1fr); gap: var(--s-4); align-items: baseline; }
.tasks.is-compact .t-t { font-size: var(--fs-16); }

/* —— 大数（hv4-stats） —— */
.stats { display: flex; flex-wrap: wrap; padding: var(--s-6) 0 0; border-top: 1px solid var(--rule); }
.stat { display: flex; flex-direction: column; gap: 0.15rem; padding: var(--s-4) var(--s-6) var(--s-2) 0; }
.stat + .stat { padding-left: var(--s-6); border-left: 1px solid var(--rule); }
.stat b { font-size: clamp(2rem, 3.8vw, 2.75rem); font-weight: var(--fw-title); letter-spacing: -0.04em; line-height: 1; font-variant-numeric: tabular-nums; }
.stat span { font-size: var(--fs-11); color: var(--gray); letter-spacing: 0.04em; }
.stats-cap { flex: 1 0 100%; margin-top: var(--s-3); font-family: var(--font-mono); font-size: var(--fs-11); color: var(--gray-2); }

/* —— 一款页主句（font-v1b 甲′） —— */
.verdict .kicker { font-size: var(--fs-12); color: var(--gray); margin-bottom: var(--s-2); }
.verdict h1 { font-size: clamp(3.25rem, 9vw, 5.75rem); font-weight: var(--fw-title); line-height: 1; letter-spacing: -0.045em; }
.verdict h1.is-stack { line-height: 1.02; }
.verdict .name { margin-top: var(--s-6); font-size: var(--fs-28); font-weight: var(--fw-title); letter-spacing: -0.02em; }
.verdict .meta { margin-top: var(--s-1); font-size: var(--fs-13); color: var(--gray); }
.verdict .say { margin: var(--s-5) 0 var(--s-6); font-size: var(--fs-16); color: var(--ink-2); max-width: 32em; }

/* —— 索引表（source-v2b 乙′） —— */
.toolbar { display: flex; flex-direction: column; gap: var(--s-5); margin-bottom: var(--s-5); }
.count { font-family: var(--font-mono); font-size: var(--fs-12); color: var(--gray); margin-bottom: var(--s-2); min-height: 1.4em; }
.index-head, .index li > a { display: grid; grid-template-columns: 9rem minmax(0, 1.2fr) minmax(0, 1.3fr) 4.5rem; gap: var(--s-4); align-items: center; }
.index-head { padding: 0 var(--s-4) var(--s-2); font-size: var(--fs-12); color: var(--gray-2); }
.index-head span:last-child, .index .go { text-align: right; }
.index { border-top: 1px solid var(--rule); }
.index li > a { padding: var(--s-4); margin: 0 calc(-1 * var(--s-4)); border-bottom: 1px solid var(--rule); border-radius: var(--radius-sm); }
.index li > a:hover { background: var(--fill); text-decoration: none; }
.index .norm { font-family: var(--font-mono); font-size: var(--fs-12); color: var(--gray-2); overflow: hidden; text-overflow: ellipsis; }
.index .nm { font-size: var(--fs-16); font-weight: var(--fw-title); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.index .info { font-size: var(--fs-12); color: var(--gray); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.index .go { font-size: var(--fs-12); color: var(--gray-2); }
.index .go.is-ink { color: var(--ink); font-weight: var(--fw-title); }
.index li > a:hover .go { color: var(--ink); }
.index.is-3 li > a, .index-head.is-3 { grid-template-columns: minmax(0, 1.2fr) minmax(0, 1.3fr) 4.5rem; }
.empty {
  display: flex;
  align-items: flex-start;
  gap: 0.45em;
  padding: var(--s-10) 0;
  color: var(--gray);
  font-size: var(--fs-14);
  line-height: 1.55;
  max-width: 28em;
}
.empty .icon { width: 1.05rem; height: 1.05rem; margin-top: 0.15em; color: var(--gray-2); flex: none; }
.empty a { color: var(--ink); text-decoration: underline; text-underline-offset: 0.15em; }
.ledger-skel {
  display: grid;
  gap: 0.55rem;
  width: min(100%, 36rem);
  margin-top: var(--s-4);
}
.ledger-skel > i {
  display: block;
  height: 2.4rem;
  border-radius: var(--radius-sm);
  background:
    linear-gradient(90deg, transparent, rgba(255,255,255,0.45), transparent) 0 0 / 40% 100% no-repeat,
    var(--fill);
  animation: ledger-shimmer 1.15s ease-in-out infinite;
}
.ledger-skel > i:nth-child(2) { opacity: 0.9; width: 92%; }
.ledger-skel > i:nth-child(3) { opacity: 0.8; width: 88%; }
.ledger-skel > i:nth-child(4) { opacity: 0.7; width: 84%; }
.ledger-skel > i:nth-child(5) { opacity: 0.55; width: 78%; }
@keyframes ledger-shimmer {
  0% { background-position: -40% 0, 0 0; }
  100% { background-position: 140% 0, 0 0; }
}
[data-theme="dark"] .ledger-skel > i {
  background:
    linear-gradient(90deg, transparent, rgba(255,255,255,0.08), transparent) 0 0 / 40% 100% no-repeat,
    var(--fill);
}

/* —— 正文 / 代码 / 表单 —— */
.prose { max-width: 40em; font-size: var(--fs-16); color: var(--ink-2); }
.prose p + p { margin-top: var(--s-3); }
.prose a:not(.btn) { color: var(--ink); text-decoration: underline; text-underline-offset: 0.2em; text-decoration-thickness: 1px; }
.sec { padding: var(--s-10) 0; border-top: 1px solid var(--rule); scroll-margin-top: calc(var(--topbar-h) + var(--s-4)); }
.sec-grid { display: grid; grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.2fr); gap: var(--s-6) var(--s-12); }
.sec-grid h2 { font-size: var(--fs-28); font-weight: var(--fw-title); letter-spacing: -0.02em; line-height: var(--lh-snug); }
.sec-grid .idx { display: block; font-family: var(--font-mono); font-size: var(--fs-12); color: var(--gray-2); margin-bottom: var(--s-2); }
/* 代码块：对齐 APP components.css .code（--well 底、右上角复制） */
.code {
  --code-c: #6e7781;
  --code-k: #0969da;
  --code-a: #cf222e;
  --code-s: #1a7f37;
  position: relative;
  margin: var(--s-4) 0;
  padding: var(--s-4) var(--s-5);
  border-radius: var(--radius-sm);
  background: var(--well);
  font-family: var(--font-mono);
  font-size: var(--fs-13);
  line-height: 1.6;
  overflow: auto;
  color: var(--ink);
}
.code:has(.copy),
.code:has(.copy) pre { padding-right: 6rem; }
.code pre {
  margin: 0;
  color: var(--ink-2);
  white-space: pre-wrap;
  overflow-wrap: break-word;
  font: inherit;
}
.code .k { color: var(--code-k); font-weight: var(--fw-title); }
.code .k-a { color: var(--code-a); }
.code .k-s { color: var(--code-s); }
.code .k-c { color: var(--code-c); font-weight: var(--fw-body); }
.code .copy {
  position: absolute;
  top: var(--s-2);
  right: var(--s-3);
  z-index: 1;
  margin: 0;
  border: 0;
  padding: 0.15rem 0.6rem;
  border-radius: var(--radius-pill);
  display: inline-flex;
  align-items: center;
  gap: 0.3em;
  background: var(--paper);
  color: var(--gray);
  font-size: var(--fs-12);
  cursor: pointer;
}
.code .copy:hover { color: var(--ink); background: var(--surface); }
.code-inline { background: var(--well); padding: 0.05em 0.4em; border-radius: 6px; font-size: 0.9em; }
.license-text { padding: var(--s-6); border-radius: var(--radius); background: var(--surface); font-size: var(--fs-13); line-height: 1.7; white-space: pre-wrap; overflow-wrap: anywhere; }
.form { display: grid; gap: var(--s-4); max-width: 40rem; }
.form label { display: grid; gap: var(--s-2); font-size: var(--fs-13); color: var(--gray); }
.form input, .form select, .form textarea { width: 100%; border: 0; border-radius: var(--radius-sm); background: var(--well); padding: 0.7rem 1rem; font-size: var(--fs-14); color: var(--ink); }
.form input, .form select { height: 2.85rem; border-radius: var(--radius-pill); padding: 0 1.15rem; }
.form input:focus, .form select:focus, .form textarea:focus { outline: 2px solid var(--ink); outline-offset: 2px; }
.form .two { display: grid; grid-template-columns: 1fr 1fr; gap: var(--s-4); }
.form fieldset { border: 0; padding: 0; margin: 0; }
.form legend { font-size: var(--fs-13); color: var(--gray); margin-bottom: var(--s-2); }
.checks { display: flex; flex-wrap: wrap; gap: var(--s-2); }
.checks label { display: inline-flex; align-items: center; gap: 0.4em; height: 2rem; padding: 0 0.95rem; border-radius: var(--radius-pill); background: var(--fill); color: var(--ink-2); cursor: pointer; }
.checks input { width: auto; height: auto; accent-color: var(--ink); margin: 0; }
.checks label:has(input:checked) { background: var(--ink); color: var(--on-ink); }
.big-char { font-size: var(--fs-40) !important; height: 5rem !important; width: 6rem !important; text-align: center; border-radius: var(--radius) !important; }
.drop { display: grid; place-items: center; gap: var(--s-1); min-height: 14rem; padding: var(--s-8); border-radius: var(--radius); background: var(--surface); text-align: center; cursor: pointer; transition: background var(--dur) var(--ease); }
.drop:hover, .drop.is-over { background: var(--fill); }
.drop b { font-size: var(--fs-20); }
.drop span { color: var(--gray); font-size: var(--fs-13); }
.result { margin-top: var(--s-5); padding: var(--s-5) var(--s-6); border-radius: var(--radius); background: var(--surface); }
.result h3 {
  display: flex;
  align-items: center;
  gap: 0.4em;
  font-size: var(--fs-16);
  margin-bottom: var(--s-2);
  color: var(--ink);
}
.result h3 .icon { width: 1.05rem; height: 1.05rem; flex: none; }
.quiet { font-size: var(--fs-13); color: var(--gray); }
.toc { display: flex; flex-direction: column; font-size: var(--fs-13); }
.toc a { padding: 0.45rem 0; color: var(--gray); }
.toc a + a { border-top: 1px solid var(--rule); }
.toc a:hover { color: var(--ink); text-decoration: none; }

/* —— 证面：16030 经典正式证面（默认）+ 16031 备用极简版式 —— */
@font-face {
  font-family: "wenfeng-hckht";
  font-weight: 500;
  font-display: swap;
  src: url("/assets/wfhckht/16.woff2") format("woff2");
  unicode-range: U+4E0B, U+5F00, U+6587;
}
@font-face {
  font-family: "wenfeng-hckht";
  font-weight: 500;
  font-display: swap;
  src: url("/assets/wfhckht/18.woff2") format("woff2");
  unicode-range: U+5546, U+6E90, U+98CE;
}
@font-face {
  font-family: "wenfeng-hckht";
  font-weight: 500;
  font-display: swap;
  src: url("/assets/wfhckht/15.woff2") format("woff2");
  unicode-range: U+4F53, U+7528;
}
@font-face {
  font-family: "wenfeng-hckht";
  font-weight: 500;
  font-display: swap;
  src: url("/assets/wfhckht/19.woff2") format("woff2");
  unicode-range: U+5B57;
}
@font-face {
  font-family: "wenfeng-hckht";
  font-weight: 500;
  font-display: swap;
  src: url("/assets/wfhckht/22.woff2") format("woff2");
  unicode-range: U+8F7D;
}

/* 字体本地回退与字形类 */
.t-Xwwk { font-family: "WF-Xwwk", "Kaiti SC", "STKaiti", "KaiTi", "LXGW WenKai", "Songti SC", serif; }
.t-Arkp { font-family: "WF-Arkp", "Ark Pixel 12px", ui-monospace, monospace; letter-spacing: 0.02em; }
.t-Qhddl { font-family: "WF-Qhddl", "DIN Alternate", "PingFang SC", sans-serif; letter-spacing: -0.04em; }
.t-Xxzt { font-family: "WF-Xxzt", "Libian SC", "STLibian", "Songti SC", serif; }
.t-Mkkzh { font-family: "WF-Mkkzh", "Heiti SC", "PingFang SC", sans-serif; font-weight: 900; }
.t-Albbpht { font-family: "WF-Albbpht", var(--font-ui); }
.t-TsangerShuYuanTW01 { font-family: "WF-TsangerShuYuanTW01", "Yuanti SC", "PingFang SC", sans-serif; }
.t-Qzkswjz { font-family: "WF-Qzkswjz", var(--font-ui); font-style: italic; color: var(--gray); }
.t-Dyh { font-family: "WF-Dyh", "PingFang SC", "Noto Sans SC", sans-serif; font-weight: 900; }
.t-Syhtcjk { font-family: "WF-Syhtcjk", "Source Han Sans SC", "Noto Sans SC", "PingFang SC", sans-serif; }

.cert-stage { margin-bottom: var(--s-10); }

/* 证面：屏上固定 A4（794×1123），窄屏用 .cert-fit 缩放，禁止流式重排挤扁版式 */
.cert-sheet {
  --cert-red: #a63a2f;
  --cert-ink: #26200f;
  --cert-paper: #fcf9f1;
  --cert-dim: #6b5b45;
  --cert-gold: #a8843c;
  --cert-gold-light: #d9c07a;
  --cert-line: #ddd4c2;
  --cert-font: "WF-Systsc", "Source Han Serif SC", "思源宋体", "Noto Serif SC", "Songti SC", "SimSun", serif;
  --cert-kai: "WF-Systsc", "Source Han Serif SC", "思源宋体", "Noto Serif SC", "Kaiti SC", serif;
  --cert-sans: "WF-Syhtsc", "Source Han Sans SC", "思源黑体", "PingFang SC", "Microsoft YaHei", sans-serif;
  position: relative;
  width: 794px;
  height: 1123px;
  max-width: none;
  margin: 0 auto;
  padding: 0.75rem;
  color: var(--cert-ink);
  font-family: var(--cert-font);
  background:
    repeating-linear-gradient(45deg, rgba(168, 132, 60, 0.028) 0 1px, transparent 1px 14px),
    repeating-linear-gradient(-45deg, rgba(168, 132, 60, 0.028) 0 1px, transparent 1px 14px),
    var(--cert-paper);
  box-shadow: 0 24px 60px rgba(40, 24, 10, 0.18);
  overflow: hidden;
  box-sizing: border-box;
}
.cert-frame { position: absolute; inset: 0.55rem; border: 1px solid var(--cert-gold-light); pointer-events: none; }
.cert-frame-inner { position: absolute; inset: 1rem; border: 3px double var(--cert-ink); pointer-events: none; }
.cert-inner {
  position: relative; z-index: 1;
  display: flex; flex-direction: column;
  min-height: 1096px;
  /* 相对双线框明显留白：左右约 58px */
  padding: 1.25rem 3.75rem 0.95rem;
  box-sizing: border-box;
}
.cert-header {
  display: flex; align-items: center; justify-content: space-between; gap: 1rem;
  padding-bottom: 0.6rem; margin-bottom: 0.6rem;
  border-bottom: 2px solid;
  border-image: linear-gradient(90deg, transparent, var(--cert-gold) 18%, var(--cert-gold) 82%, transparent) 1;
}
.cert-brand { display: flex; align-items: center; gap: 0.8rem; }
.cert-logo { width: 34px; height: 34px; border-radius: 7px; flex: none; }
.cert-brand-text { display: flex; flex-direction: column; gap: 0.18rem; }
.cert-brand-text b { font-family: "wenfeng-hckht", var(--cert-sans); font-weight: 500; font-size: 1.08rem; letter-spacing: 0.1em; color: var(--cert-ink); }
.cert-brand-text i, .cert-type i { font-style: normal; font-size: 0.58rem; letter-spacing: 0.26em; color: var(--cert-gold); }
.cert-type { text-align: right; }
.cert-type b { display: block; font-size: 0.9rem; letter-spacing: 0.28em; font-weight: 700; color: var(--cert-ink); }
.cert-title-row { text-align: center; margin: 0.5rem 0 1.5rem; }
.cert-flexgap { flex: 1 1 0; min-height: 0; max-height: 0.6rem; }
.cert-title {
  margin: 0; display: inline-block; position: relative;
  font-family: var(--cert-kai);
  font-size: 2.6rem; font-weight: 700;
  letter-spacing: 0.46em; text-indent: 0.46em;
  line-height: 1.15; color: var(--cert-ink);
}
.cert-title::before, .cert-title::after {
  content: ""; position: absolute; top: 55%;
  width: clamp(2.4rem, 7vw, 4.6rem); height: 1px; background: var(--cert-gold);
}
.cert-title::before { right: 100%; margin-right: 0.9rem; }
.cert-title::after { left: 100%; margin-left: 0.9rem; }
.cert-no-strip {
  display: flex; flex-wrap: wrap; justify-content: space-between; gap: 0.35rem 1.4rem;
  padding: 0.36rem 0.3rem; margin-bottom: 0.9rem;
  border-top: 1px solid var(--cert-line); border-bottom: 1px solid var(--cert-line);
  font-size: 0.68rem;
}
.cert-no-strip span { display: inline-flex; align-items: baseline; }
.cert-no-strip i { font-style: normal; font-size: 0.62rem; color: var(--cert-dim); margin-right: 0.5em; letter-spacing: 0.12em; }
.cert-no-strip b { font-weight: 700; letter-spacing: 0.05em; color: var(--cert-ink); }
.cert-no-strip .is-red { color: var(--cert-red); }
.cert-prose { margin: 0 0 0.9rem; font-size: 0.88rem; line-height: 1.85; text-align: justify; text-indent: 2em; color: var(--cert-ink); }
.cert-prose b { font-weight: 700; text-decoration: underline; text-underline-offset: 0.22em; text-decoration-thickness: 1px; }

/* 证书信息矩阵 */
.cert-info {
  display: grid; grid-template-columns: 1fr 1fr;
  border: 1px solid var(--cert-line);
  background: rgba(255, 255, 255, 0.45);
  margin-bottom: 0.9rem;
}
.cert-cell {
  display: flex; flex-direction: column; gap: 0.2rem;
  padding: 0.5rem 1rem; min-width: 0;
  border-bottom: 1px solid var(--cert-line); border-right: 1px solid var(--cert-line);
}
.cert-cell:nth-child(2n) { border-right: 0; }
.cert-cell:nth-last-child(2):nth-child(odd) { border-bottom: 0; }
.cert-cell:last-child { border-bottom: 0; }
.cert-cell:last-child:nth-child(odd) { grid-column: 1 / -1; border-right: 0; }
.cert-cell i { font-style: normal; font-size: 0.56rem; letter-spacing: 0.2em; color: var(--cert-gold); }
.cert-cell b { font-family: var(--cert-sans); font-size: 0.92rem; font-weight: 700; overflow-wrap: anywhere; color: var(--cert-ink); }

/* 授权链溯源 */
.cert-chain {
  position: relative;
  border: 1px solid var(--cert-gold);
  background: linear-gradient(180deg, rgba(168, 132, 60, 0.05), rgba(255, 255, 255, 0.3));
  padding: 0.92rem 1.2rem 0.84rem;
  margin-bottom: 0.9rem;
}
.cert-chain::before {
  content: "授权链溯源 / LICENSE CHAIN";
  position: absolute; top: -0.5rem; left: 1.1rem;
  background: var(--cert-paper);
  padding: 0 0.6rem;
  font-size: 0.64rem; letter-spacing: 0.24em;
  color: var(--cert-gold); font-weight: 700;
}
.chain-flow { display: flex; align-items: stretch; margin-bottom: 0.6rem; }
.chain-node { flex: 1; text-align: center; padding: 0.2rem 0.4rem 0; min-width: 0; }
.chain-icon {
  display: inline-flex; align-items: center; justify-content: center;
  width: 1.7rem; height: 1.7rem; margin-bottom: 0.34rem;
  border: 1.5px solid var(--cert-gold); border-radius: 50%;
  font-size: 0.8rem; font-weight: 700; color: var(--cert-gold);
  background: rgba(255, 255, 255, 0.6);
}
.chain-icon.is-solid { background: var(--cert-gold); color: #fff; }
.chain-icon .ic { width: 0.95rem; height: 0.95rem; }
.chain-role { margin: 0; font-size: 0.56rem; letter-spacing: 0.16em; color: var(--cert-gold); font-weight: 700; }
.chain-name { margin: 0.16rem 0 0; font-size: 0.76rem; font-weight: 700; line-height: 1.4; overflow-wrap: anywhere; color: var(--cert-ink); }
.chain-sub { margin: 0.14rem 0 0; font-size: 0.6rem; color: var(--cert-dim); line-height: 1.45; overflow-wrap: anywhere; }
.chain-arrow {
  display: flex; align-items: center; justify-content: center;
  width: 2rem; flex: none; color: var(--cert-gold);
  padding-bottom: 1.5rem;
}
.chain-arrow .ic { width: 1rem; height: 1rem; }
.chain-detail {
  display: flex; flex-direction: column; gap: 0.26rem;
  border-top: 1px solid rgba(168, 132, 60, 0.3);
  padding-top: 0.7rem;
}
.chain-detail-row { display: flex; align-items: baseline; gap: 0.7em; font-size: 0.72rem; line-height: 1.7; min-width: 0; white-space: nowrap; }
.chain-detail-row i { font-style: normal; font-size: 0.65rem; color: var(--cert-gold); font-weight: 700; flex: 0 0 5.5em; letter-spacing: 0.08em; }
.chain-detail-row b { font-weight: 600; color: var(--cert-ink); overflow: hidden; text-overflow: ellipsis; }
.chain-detail-row b.is-mono { font-family: var(--font-mono); font-size: 0.64rem; color: #4a4234; }
.chain-detail-row.is-link { grid-column: 1 / -1; }
.chain-detail-note { display: inline-block; font-size: 0.54rem; color: var(--cert-dim); margin-left: 0.5em; }

.ic { display: inline-block; width: 1em; height: 1em; fill: currentColor; flex: none; vertical-align: -0.15em; }

/* 授权范围 */
.cert-scope, .cert-sample { position: relative; border: 1px solid var(--cert-gold); }
.cert-scope::before {
  content: "授权范围 / SCOPE";
  position: absolute; top: -0.5rem; left: 1.1rem;
  background: var(--cert-paper);
  padding: 0 0.6rem;
  font-size: 0.64rem; letter-spacing: 0.24em;
  color: var(--cert-gold); font-weight: 700;
}
.cert-scope {
  background: linear-gradient(180deg, rgba(168, 132, 60, 0.05), rgba(255, 255, 255, 0.3));
  padding: 0.64rem 1.2rem 0.72rem;
  margin-bottom: 0.9rem;
}
.cert-scope-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.3rem 2.6rem; }
.cert-scope-item { display: flex; align-items: flex-start; gap: 0.55em; font-size: 0.66rem; line-height: 1.7; color: var(--cert-ink); }
.cert-scope-item i { flex: none; display: inline-flex; align-items: center; justify-content: center; width: 1.25em; height: 1.7em; }
.cert-scope-item i .ic { width: 0.95em; height: 0.95em; }
.cert-scope-item.is-ok i { color: #9c7c33; }
.cert-scope-item.is-no i { color: var(--cert-red); }
.cert-scope-item.is-mid i { color: var(--cert-dim); }

.cert-sample::before {
  content: "字体样本 / SPECIMEN";
  position: absolute; top: -0.5rem; left: 1.1rem;
  background: var(--cert-paper);
  padding: 0 0.6rem;
  font-size: 0.64rem; letter-spacing: 0.24em;
  color: var(--cert-gold); font-weight: 700;
}
.cert-sample {
  background: rgba(255, 255, 255, 0.35);
  padding: 0.8rem 1rem 0.9rem;
  text-align: center;
  position: relative;
}
.cert-sample-text {
  margin: 0;
  font-size: 1.22rem;
  letter-spacing: 0.14em;
  line-height: 1.45;
  white-space: nowrap;
  color: var(--cert-ink);
}

.cert-memo {
  margin: 0.9rem 0 0; padding: 0.42rem 0.75rem;
  border-left: 2px solid var(--cert-gold);
  background: rgba(168, 132, 60, 0.04);
  font-size: 0.54rem; line-height: 1.5; color: var(--cert-dim); text-align: justify;
}
.cert-memo b { color: var(--cert-ink); letter-spacing: 0.2em; }
.cert-mark {
  position: absolute; top: 50%; left: 50%;
  transform: translate(-50%, -50%) rotate(-14deg);
  margin: 0;
  font-family: "wenfeng-hckht", var(--cert-kai); font-weight: 500;
  font-size: 6.5rem; letter-spacing: 1.4rem; white-space: nowrap;
  color: rgba(168, 132, 60, 0.07);
  pointer-events: none; user-select: none; z-index: 0;
}
.cert-hereby {
  margin: 0.55rem 0.4rem 0 0;
  text-align: right;
  font-size: 0.82rem; font-weight: 700;
  letter-spacing: 0.3em;
  color: var(--cert-ink);
}
.cert-sign {
  display: flex; align-items: flex-end; justify-content: space-between;
  gap: 2rem;
  padding-top: 0.6rem; border-top: 1px solid var(--cert-line);
  margin-top: auto;
}
.cert-verify { display: flex; align-items: center; gap: 0.75rem; }
.cert-verify-copy b { display: block; font-size: 0.7rem; font-weight: 700; letter-spacing: 0.26em; color: var(--cert-ink); }
.cert-verify-copy p { margin: 0.25rem 0 0; font-size: 0.56rem; line-height: 1.65; color: var(--cert-dim); }
.cert-qr {
  width: 4.2rem;
  height: 4.2rem;
  flex: none;
  border: 1px solid var(--cert-line);
  background: #fff
    linear-gradient(90deg, #f3f0e8, #ebe6da, #f3f0e8) 0 0 / 200% 100%;
  object-fit: contain;
}
.cert-qr.is-ready { background: #fff; }
.cert-qr-wrap {
  position: relative;
  width: 4.2rem;
  height: 4.2rem;
  flex: none;
}
.cert-qr-wrap.is-wait::after {
  content: "";
  position: absolute;
  inset: 0;
  border: 1px solid var(--cert-line);
  background: linear-gradient(90deg, #f3f0e8, #ebe6da, #f3f0e8) 0 0 / 200% 100%;
  animation: cert-qr-shimmer 1.2s ease-in-out infinite;
  pointer-events: none;
}
@keyframes cert-qr-shimmer {
  0% { background-position: 100% 0; }
  100% { background-position: -100% 0; }
}
.cert-sign-off { position: relative; text-align: right; padding: 0.3rem 0.6rem 0.1rem 0; }
.cert-sign-org { margin: 0.3rem 0 0; font-size: 1.02rem; font-weight: 700; letter-spacing: 0.08em; color: var(--cert-ink); }
.cert-sign-date { margin: 0.22rem 0 0; font-size: 0.88rem; letter-spacing: 0.14em; color: var(--cert-ink); }
.cert-sign-off .cert-chop {
  position: absolute; right: -0.8rem; top: 45%;
  width: 6.4rem; height: 6.4rem;
  transform: translateY(-50%) rotate(-10deg);
}
.cert-chop {
  color: var(--cert-red);
  opacity: 0.9; mix-blend-mode: multiply;
  font-family: var(--cert-kai); font-weight: 700;
}
.chop-ring { font-size: 17px; letter-spacing: 0.5px; }
.cert-proto {
  margin: 0.35rem 0 0; text-align: center;
  font-size: 0.58rem; letter-spacing: 0.28em;
  color: var(--cert-red); opacity: 0.75;
}

/* 极简版式：A4 画幅（794×1123），屏上所见即打印所得；气质回到克制留白 */
.cert-minimal {
  position: relative;
  width: 794px;
  max-width: none;
  min-height: 1123px;
  height: 1123px;
  margin: 0 auto;
  padding: 3rem 3.4rem 2.4rem;
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  border-radius: var(--radius);
  background: var(--surface);
  color: var(--ink);
  font-family: var(--font-ui);
  box-shadow: 0 24px 60px rgba(40, 24, 10, 0.12);
  overflow: hidden;
}
.cert-minimal header {
  text-align: center;
  padding-bottom: 1.4rem;
  margin-bottom: 1.6rem;
  border-bottom: 1px solid var(--rule);
  flex: none;
}
.cert-minimal .cm-kicker {
  margin: 0;
  font-size: var(--fs-11);
  color: var(--gray);
  letter-spacing: 0.22em;
}
.cert-minimal header h2 {
  font-size: 1.85rem;
  letter-spacing: 0.22em;
  margin: 0.55rem 0 0.45rem;
  font-weight: var(--fw-title);
  line-height: 1.25;
}
.cert-minimal .cm-meta {
  margin: 0;
  font-size: var(--fs-12);
  color: var(--gray);
  letter-spacing: 0.04em;
}
.cert-minimal .cm-spdx {
  display: inline-block;
  margin-left: 0.45em;
  padding: 0.1em 0.45em;
  border: 1px solid var(--rule);
  border-radius: var(--radius-sm);
  letter-spacing: 0.02em;
  color: var(--ink-2);
  vertical-align: 0.05em;
}
.cert-minimal .cm-proto {
  margin: 0.55rem 0 0;
  font-size: var(--fs-11);
  letter-spacing: 0.12em;
  color: var(--gray);
}
.cert-minimal .cm-face {
  text-align: center;
  margin: 0 0 1.5rem;
  flex: none;
}
.cert-minimal .fn {
  margin: 0;
  font-size: 1.55rem;
  font-weight: var(--fw-title);
  letter-spacing: 0.04em;
  line-height: 1.35;
  overflow-wrap: anywhere;
}
.cert-minimal .fe {
  margin: 0.4rem 0 0;
  color: var(--gray);
  font-size: var(--fs-14);
  line-height: 1.5;
  overflow-wrap: anywhere;
}
.cert-minimal .kv-rows {
  flex: 1 1 auto;
  min-height: 0;
  margin: 0;
}
.cert-minimal .kv-rows > div {
  grid-template-columns: 6.5em minmax(0, 1fr);
  gap: 1rem;
  padding: 0.72rem 0;
  font-size: var(--fs-14);
  align-items: baseline;
}
.cert-minimal .kv-rows dt { letter-spacing: 0.04em; }
.cert-minimal .kv-rows dd { overflow-wrap: anywhere; line-height: 1.55; }
.cert-minimal .kv-rows code,
.cert-minimal .kv-rows .hash {
  font-size: 0.86em;
  word-break: break-all;
}
.cert-minimal .concl {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 0.7rem;
  margin: 1.5rem 0 1.2rem;
  flex: none;
}
.cert-minimal .concl div {
  padding: 0.95rem 1rem;
  border-radius: var(--radius-sm);
  background: var(--paper);
  font-size: var(--fs-12);
  color: var(--gray);
  letter-spacing: 0.04em;
}
.cert-minimal .concl b {
  display: block;
  margin-top: 0.35rem;
  font-size: 1.1rem;
  color: var(--ink);
  letter-spacing: 0.08em;
}
.cert-minimal .not {
  list-style: disc;
  padding-left: 1.25em;
  margin: 0 0 0.4rem;
  font-size: var(--fs-13);
  color: var(--gray);
  line-height: 1.75;
  flex: none;
}
.cert-minimal footer {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: var(--s-6);
  margin-top: auto;
  padding-top: 1.25rem;
  border-top: 1px solid var(--rule);
  font-size: var(--fs-13);
  color: var(--gray);
  line-height: 1.65;
  flex: none;
}
.cert-minimal footer p { margin: 0; }
.cert-minimal footer .mono { font-size: var(--fs-11); letter-spacing: 0.02em; }
.cert-minimal footer img { width: 5.4rem; height: 5.4rem; flex: none; border: 1px solid var(--rule); background: #fff; }

/* 窄屏：不重排证面内部，由 .cert-fit 等比缩放；打印仍用真实 A4 */
.cert-fit {
  --cert-scale: 1;
  width: 100%;
  display: flex;
  justify-content: center;
  overflow: hidden;
  /* 高度由 JS 按 scale×自然高度写入，避免缩放后留白/裁切 */
}
.cert-fit > .cert-sheet,
.cert-fit > .cert-minimal {
  flex: none;
  transform: scale(var(--cert-scale));
  transform-origin: top center;
  margin: 0;
}

@media print {
  .cert-fit {
    height: auto !important;
    overflow: visible !important;
    display: block !important;
  }
  .cert-fit > .cert-sheet,
  .cert-fit > .cert-minimal {
    transform: none !important;
  }
}

@media print {
  @page { size: A4 portrait; margin: 0; }
  .topbar, .site-foot, .no-print, .crumb { display: none !important; }
  html, body, main { margin: 0 !important; padding: 0 !important; background: #fff !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .page { padding: 0 !important; }
  .cert-stage { padding: 0 !important; margin: 0 !important; }
  .cert-sheet { width: 210mm !important; height: 296.5mm !important; margin: 0 auto !important; box-shadow: none !important; }
  .cert-inner { min-height: 0 !important; height: 100% !important; display: flex !important; flex-direction: column !important; }
  .cert-chop { mix-blend-mode: normal !important; }
  .cert-minimal {
    width: 210mm !important;
    height: 296.5mm !important;
    min-height: 0 !important;
    margin: 0 auto !important;
    padding: 14mm 16mm 12mm !important;
    box-shadow: none !important;
    border-radius: 0 !important;
    background: #fff !important;
  }
}

/* 一款详情整页 · 甲′精修（/source/{norm}） */
.fd-crumb {
  margin: 0 0 var(--s-8);
  font-family: var(--font-mono);
  font-size: var(--fs-12);
  color: var(--gray-2);
  letter-spacing: 0.02em;
}
.fd-crumb a { color: var(--gray-2); text-decoration: none; }
.fd-crumb a:hover { color: var(--ink); }

.fd-footnote {
  margin: var(--s-12) 0 0;
  padding-top: var(--s-5);
  border-top: 1px solid var(--rule);
  font-size: var(--fs-13);
  color: var(--gray);
  max-width: 44em;
  line-height: var(--lh-body);
}
.fd-footnote a { color: var(--ink); }
.fd-footnote.mono { font-family: var(--font-mono); font-size: var(--fs-12); }

.fd1-stage {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(0, 0.9fr);
  gap: var(--s-8) var(--s-12);
  align-items: start;
  margin-bottom: var(--s-10);
  padding-bottom: var(--s-10);
  border-bottom: 1px solid var(--rule);
}
.fd1-verb .kicker {
  margin: 0 0 var(--s-3);
  font-family: var(--font-mono);
  font-size: var(--fs-12);
  color: var(--gray-2);
  letter-spacing: 0.06em;
}
.fd1-verb h1 {
  margin: 0 0 var(--s-6);
  font-size: clamp(3.25rem, 8vw, 5.25rem);
  font-weight: var(--fw-title);
  letter-spacing: -0.045em;
  line-height: 0.95;
}
.fd1-verb h1.mono {
  font-family: var(--font-mono);
  font-size: clamp(1.8rem, 4vw, 2.75rem);
  letter-spacing: -0.03em;
}
.fd1-verb .fname {
  margin: 0 0 var(--s-2);
  font-size: clamp(1.35rem, 2.4vw, 1.75rem);
  font-weight: var(--fw-title);
  letter-spacing: -0.02em;
}
.fd1-verb .meta { margin: 0 0 var(--s-5); font-size: var(--fs-13); color: var(--gray); }
.fd1-verb .meta.mono { font-family: var(--font-mono); font-size: var(--fs-12); }
.fd1-verb .note {
  margin: 0 0 var(--s-6);
  max-width: 28em;
  font-size: var(--fs-16);
  color: var(--ink-2);
  line-height: var(--lh-body);
}
.fd1-verb .note.mono { font-family: var(--font-mono); font-size: var(--fs-13); }
.fd1-acts { display: flex; flex-wrap: wrap; align-items: center; gap: var(--s-4) var(--s-5); margin: 0; }
.fd1-acts a { font-size: var(--fs-13); color: var(--ink); text-decoration: none; }
.fd1-acts a.is-strong {
  font-weight: var(--fw-title);
  padding: 0.45rem 1.05rem;
  border-radius: var(--radius-pill);
  background: var(--ink);
  color: var(--on-ink);
}
.fd1-acts a.is-strong:hover { background: var(--ink-hover); text-decoration: none; }
@media (hover: hover) {
  .fd1-acts a:not(.is-strong):hover,
  .fd1-acts a:not(.is-strong):focus-visible { text-decoration: underline; text-underline-offset: 0.2em; }
}
.fd1-dossier { min-width: 0; padding: var(--s-5) 0 var(--s-2) var(--s-6); border-left: 1px solid var(--ink); }
.fd1-dossier .label {
  margin: 0 0 var(--s-4);
  font-family: var(--font-mono);
  font-size: var(--fs-11, 0.6875rem);
  font-weight: var(--fw-title);
  letter-spacing: 0.08em;
}
.fd1-kv div {
  display: grid;
  grid-template-columns: 4.75em minmax(0, 1fr);
  gap: var(--s-4);
  align-items: baseline;
  padding: 0.6rem 0;
  border-top: 1px solid var(--rule);
  font-size: var(--fs-14);
}
.fd1-kv div:first-child { border-top: 0; padding-top: 0; }
.fd1-kv .k { color: var(--gray); }
.fd1-kv .v { color: var(--ink); letter-spacing: -0.01em; line-height: var(--lh-body); }
.fd1-kv .v.mono { font-family: var(--font-mono); font-size: var(--fs-13); }
.fd1-more-label {
  margin: 0 0 var(--s-3);
  font-family: var(--font-mono);
  font-size: var(--fs-11, 0.6875rem);
  color: var(--gray-2);
  letter-spacing: 0.02em;
}
.fd1-rows { display: flex; flex-direction: column; }
.fd1-row {
  display: grid;
  grid-template-columns: 2.25rem minmax(0, 0.9fr) minmax(0, 1.2fr) auto;
  gap: var(--s-3) var(--s-4);
  align-items: baseline;
  padding: var(--s-4);
  margin: 0 calc(-1 * var(--s-4));
  border-top: 1px solid var(--rule);
  border-radius: var(--radius-sm);
  color: inherit;
  text-decoration: none;
  transition: background var(--dur) var(--ease);
}
.fd1-row:last-child { border-bottom: 1px solid var(--rule); }
.fd1-row:hover { background: var(--fill); text-decoration: none; }
.fd1-row .idx { font-family: var(--font-mono); font-size: var(--fs-12); color: var(--gray-2); letter-spacing: 0.04em; }
.fd1-row .t { font-size: var(--fs-16); font-weight: var(--fw-title); letter-spacing: -0.02em; }
.fd1-row .d { font-size: var(--fs-13); color: var(--gray); }
.fd1-row .d.mono { font-family: var(--font-mono); font-size: var(--fs-12); }
.fd1-row .go { font-size: var(--fs-13); color: var(--gray-2); white-space: nowrap; }
@media (hover: hover) {
  .fd1-row .go { visibility: hidden; }
  .fd1-row:hover .go,
  .fd1-row:focus-visible .go { visibility: visible; color: var(--ink); }
}

@media (max-width: 900px) {
  .fd1-stage { grid-template-columns: 1fr; }
  .fd1-dossier {
    padding-left: 0;
    padding-top: var(--s-6);
    border-left: 0;
    border-top: 1px solid var(--ink);
  }
  .fd1-row { grid-template-columns: 2.25rem minmax(0, 1fr); }
  .fd1-row .d,
  .fd1-row .go { grid-column: 2; visibility: visible; }
}

body.fd-v1b .fd1-verb h1 {
  font-size: clamp(3.25rem, 9vw, 5.75rem);
  line-height: 0.95;
  letter-spacing: -0.045em;
}
body.fd-v1b .fd1-verb h1.mono {
  font-size: clamp(2.1rem, 5vw, 3.25rem);
  letter-spacing: -0.03em;
}
body.fd-v1b .fd1-verb .fname { line-height: var(--lh-snug); }
body.fd-v1b .fd1-dossier {
  align-self: stretch;
  background: transparent;
  padding-top: var(--s-3);
  border-left: 1px solid var(--ink);
}
body.fd-v1b .fd1-dossier .label { color: var(--ink); }
body.fd-v1b .fd1-kv .v { line-height: var(--lh-body); }
body.fd-v1b .fd1-kv .v.mono { letter-spacing: 0.01em; }
body.fd-v1b .fd1-more-label { letter-spacing: 0.06em; }
body.fd-v1b .fd1-acts a {
  font-size: var(--fs-13);
  letter-spacing: 0.01em;
  text-underline-offset: 0.2em;
  text-decoration-thickness: 1px;
  transition: color var(--dur) var(--ease), background var(--dur) var(--ease);
}
body.fd-v1b .fd1-row,
body.fd-v1b .fd1-row:hover,
body.fd-v1b .fd1-row:focus-visible {
  border-radius: var(--radius-sm);
  text-decoration: none;
}
body.fd-v1b .fd1-row:hover,
body.fd-v1b .fd1-row:focus-visible { background: var(--fill); }
body.fd-v1b .fd1-row .t { text-decoration: none; }

/* 查授权 · 戊′ · license-v5b */
.lq-v5b .lq5b-hero {
  padding: var(--s-16) 0 var(--s-12);
}

.lq5b-crumb {
  margin: 0 0 var(--s-8);
  font-family: var(--font-mono);
  font-size: var(--fs-12);
  color: var(--gray-2);
  letter-spacing: 0.02em;
}

.lq5b-display {
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(0, 0.9fr);
  gap: var(--s-6) var(--s-12);
  align-items: end;
  margin-bottom: var(--s-10);
  padding-bottom: var(--s-10);
  border-bottom: 1px solid var(--rule);
}
.lq5b-display h1 {
  margin: 0;
  font-size: clamp(3.25rem, 9vw, 5.75rem);
  font-weight: var(--fw-title);
  line-height: 0.95;
  letter-spacing: -0.045em;
  color: var(--ink);
}
.lq5b-display h1.mono {
  font-family: var(--font-mono);
  font-size: clamp(2.25rem, 5.5vw, 3.5rem);
  letter-spacing: -0.03em;
}
.lq5b-lead {
  margin: 0;
  max-width: 22em;
  justify-self: end;
  padding-bottom: 0.35em;
  font-size: var(--fs-16);
  line-height: var(--lh-body);
  color: var(--ink-2);
}
.lq5b-lead.mono {
  font-family: var(--font-mono);
  font-size: var(--fs-14);
  letter-spacing: 0.01em;
}
.lq5b-br { display: none; }

.lq5b-search {
  display: flex;
  align-items: center;
  gap: var(--s-3);
  margin: 0 0 var(--s-10);
  max-width: 40rem;
}
.lq5b-search-kicker {
  flex-shrink: 0;
  font-family: var(--font-mono);
  font-size: var(--fs-12);
  color: var(--gray-2);
  letter-spacing: 0.06em;
  margin-right: var(--s-1);
}
.lq5b-search input {
  flex: 1;
  min-width: 0;
  height: 2.85rem;
  padding: 0 1.15rem;
  border: 0;
  border-radius: var(--radius-pill);
  background: var(--fill);
  font-size: var(--fs-14);
  color: var(--ink);
}
.lq5b-search input::placeholder { color: var(--gray-2); }
.lq5b-search input:hover,
.lq5b-search input:focus { background: var(--surface); }
.lq5b-search input:focus {
  outline: 2px solid var(--ink);
  outline-offset: 2px;
}

/* 主舞台：非对称 — 左结论大数 / 右卷宗细线 */
.lq5b-stage {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(0, 0.95fr);
  gap: var(--s-8) var(--s-12);
  align-items: start;
  margin-bottom: var(--s-10);
  padding-bottom: var(--s-10);
  border-bottom: 1px solid var(--rule);
}
.lq5b-verdict { min-width: 0; }
.lq5b-verdict .kicker {
  margin: 0 0 var(--s-3);
  font-family: var(--font-mono);
  font-size: var(--fs-12);
  color: var(--gray-2);
  letter-spacing: 0.06em;
}
.lq5b-verdict .state {
  margin: 0 0 var(--s-6);
  font-size: clamp(2.25rem, 6vw, 3.75rem);
  font-weight: var(--fw-title);
  letter-spacing: -0.045em;
  line-height: 1.02;
  color: var(--ink);
}
.lq5b-verdict .fname {
  margin: 0 0 var(--s-2);
  font-size: clamp(1.35rem, 2.5vw, 1.75rem);
  font-weight: var(--fw-title);
  letter-spacing: -0.02em;
  line-height: var(--lh-snug);
}
.lq5b-verdict .meta {
  margin: 0 0 var(--s-5);
  font-size: var(--fs-13);
  color: var(--gray);
  line-height: var(--lh-body);
}
.lq5b-verdict .meta.mono {
  font-family: var(--font-mono);
  font-size: var(--fs-12);
  letter-spacing: 0.01em;
}
.lq5b-verdict .note {
  margin: 0 0 var(--s-6);
  max-width: 28em;
  font-size: var(--fs-16);
  color: var(--ink-2);
  line-height: var(--lh-body);
}
.lq5b-verdict .note.mono {
  font-family: var(--font-mono);
  font-size: var(--fs-13);
  letter-spacing: 0.01em;
}

.lq5b-verdict .acts {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--s-4) var(--s-5);
}
.lq5b-verdict .acts a {
  font-size: var(--fs-13);
  color: var(--ink);
  text-decoration: none;
  text-underline-offset: 0.2em;
  text-decoration-thickness: 1px;
  transition: color var(--dur) var(--ease), background var(--dur) var(--ease);
}
@media (hover: hover) {
  .lq5b-verdict .acts a:not(.is-strong) { text-decoration: none; }
  .lq5b-verdict .acts a:not(.is-strong):hover,
  .lq5b-verdict .acts a:not(.is-strong):focus-visible {
    text-decoration: underline;
  }
}
.lq5b-verdict .acts a.is-strong {
  font-weight: var(--fw-title);
  text-decoration: none;
  padding: 0.45rem 1.05rem;
  border-radius: var(--radius-pill);
  background: var(--ink);
  color: var(--on-ink);
}
.lq5b-verdict .acts a.is-strong:hover {
  background: var(--ink-hover);
  text-decoration: none;
}

.lq5b-dossier {
  align-self: stretch;
  padding: var(--s-5) 0 var(--s-2) var(--s-6);
  border-left: 1px solid var(--ink);
  background: transparent;
  min-width: 0;
}
.lq5b-dossier .label {
  margin: 0 0 var(--s-4);
  font-family: var(--font-mono);
  font-size: var(--fs-11, 0.6875rem);
  font-weight: var(--fw-title);
  letter-spacing: 0.08em;
  color: var(--ink);
}
.lq5b-kv { display: grid; gap: 0; }
.lq5b-kv div {
  display: grid;
  grid-template-columns: 4.75em minmax(0, 1fr);
  gap: var(--s-4);
  align-items: baseline;
  padding: 0.6rem 0;
  border-top: 1px solid var(--rule);
  font-size: var(--fs-14);
}
.lq5b-kv div:first-child { border-top: 0; padding-top: 0; }
.lq5b-kv .k { color: var(--gray); }
.lq5b-kv .v { color: var(--ink); letter-spacing: -0.01em; }
.lq5b-kv .v.mono {
  font-family: var(--font-mono);
  font-size: var(--fs-13);
  letter-spacing: 0.01em;
}

.lq5b-foils-label {
  margin: 0 0 var(--s-3);
  font-family: var(--font-mono);
  font-size: var(--fs-11, 0.6875rem);
  color: var(--gray-2);
  letter-spacing: 0.02em;
}

.lq5b-foils {
  display: flex;
  flex-direction: column;
  gap: 0;
}
.lq5b-foil {
  display: grid;
  grid-template-columns: 2.25rem minmax(0, 1.1fr) minmax(0, 1fr) auto;
  gap: var(--s-3) var(--s-4);
  align-items: baseline;
  padding: var(--s-4) var(--s-4);
  margin: 0 calc(-1 * var(--s-4));
  border-top: 1px solid var(--rule);
  border-radius: var(--radius-sm);
  color: inherit;
  text-decoration: none;
  transition: background var(--dur) var(--ease);
}
.lq5b-foil:first-child { border-top: 1px solid var(--rule); }
.lq5b-foil:last-child { border-bottom: 1px solid var(--rule); }
.lq5b-foil:hover { text-decoration: none; background: var(--fill); }
.lq5b-foil .idx {
  font-family: var(--font-mono);
  font-size: var(--fs-12);
  color: var(--gray-2);
  letter-spacing: 0.04em;
}
.lq5b-foil .state {
  font-size: var(--fs-16);
  font-weight: var(--fw-title);
  letter-spacing: -0.015em;
  line-height: var(--lh-snug);
}
.lq5b-foil .body {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
  min-width: 0;
}
.lq5b-foil .fname {
  font-size: var(--fs-14);
  color: var(--ink-2);
  letter-spacing: -0.01em;
}
.lq5b-foil .meta {
  font-size: var(--fs-12);
  color: var(--gray);
  line-height: var(--lh-body);
}
.lq5b-foil .meta.mono {
  font-family: var(--font-mono);
  letter-spacing: 0.01em;
}
.lq5b-foil .go {
  font-size: var(--fs-13);
  color: var(--gray-2);
  white-space: nowrap;
  justify-self: end;
}
@media (hover: hover) {
  .lq5b-foil .go { visibility: hidden; }
  .lq5b-foil:hover .go,
  .lq5b-foil:focus-visible .go { visibility: visible; color: var(--ink); }
}
.lq5b-foil.is-mute .state,
.lq5b-foil.is-mute .fname { color: var(--gray); }
.lq5b-foil.is-mute .go { color: var(--gray-2); }

.lq5b-footnote {
  margin: var(--s-12) 0 0;
  padding-top: var(--s-5);
  border-top: 1px solid var(--rule);
  font-size: var(--fs-13);
  color: var(--gray);
  max-width: 42em;
  line-height: var(--lh-body);
}
.lq5b-footnote a { color: var(--ink); }
.lq5b-footnote.mono {
  font-family: var(--font-mono);
  font-size: var(--fs-12);
}

@media (max-width: 900px) {
  .lq-v5b .lq5b-hero { padding: var(--s-10) 0 var(--s-8); }
  .lq5b-display { grid-template-columns: 1fr; }
  .lq5b-lead { justify-self: start; max-width: 32em; }
  .lq5b-br { display: inline; }
  .lq5b-stage { grid-template-columns: 1fr; }
  .lq5b-dossier {
    padding-left: 0;
    padding-top: var(--s-6);
    border-left: 0;
    border-top: 1px solid var(--ink);
  }
  .lq5b-foil {
    grid-template-columns: 2.25rem minmax(0, 1fr);
    gap: var(--s-2) var(--s-3);
  }
  .lq5b-foil .state { grid-column: 2; }
  .lq5b-foil .body { grid-column: 2; }
}

/* 许可原文页定稿 · 甲 lp-v10 文书（原文通栏主角） */
.lp10-hero {
  padding: var(--s-12) 0 var(--s-16);
}
.lp10-crumb {
  margin: 0 0 var(--s-4);
  font-family: var(--font-mono);
  font-size: var(--fs-11, 0.6875rem);
  color: var(--gray-2);
}
.lp10-crumb a { color: inherit; }
.lp10-crumb .sep { margin: 0 var(--s-2); color: var(--rule-2, var(--rule)); }
.lp10-head { padding: var(--s-4) 0 var(--s-5); border-top: 1px solid var(--rule); }
.lp10-flag {
  margin: 0 0 var(--s-2);
  font-family: var(--font-mono);
  font-size: var(--fs-11, 0.6875rem);
  font-weight: var(--fw-title);
  color: var(--ink);
  letter-spacing: 0.08em;
}
.lp10-head h1 {
  margin: 0 0 var(--s-2);
  font-size: clamp(1.6rem, 2.6vw, 2.1rem);
  font-weight: var(--fw-title);
  letter-spacing: -0.02em;
  line-height: 1.2;
  color: var(--ink);
}
.lp10-sub { margin: 0 0 var(--s-2); font-size: var(--fs-14); color: var(--ink-2); }
.lp10-state { margin: 0; font-size: var(--fs-13, 0.8125rem); color: var(--gray); }
.lp10-state.for-dev.mono { font-family: var(--font-mono); font-size: var(--fs-11, 0.6875rem); }

.lp10-sheet { padding: var(--s-5) 0 0; }
.lp10-doc {
  margin: 0 auto;
  max-width: 44em;
  font-size: var(--fs-14);
  line-height: 1.75;
  color: var(--ink-2);
  white-space: pre-wrap;
  overflow-wrap: break-word;
}
.lp10-evidence {
  margin: var(--s-6) auto 0;
  max-width: 44em;
  padding-top: var(--s-4);
  border-top: 1px solid var(--rule);
}
.lp10-evidence .label {
  margin: 0 0 var(--s-3);
  font-family: var(--font-mono);
  font-size: var(--fs-11, 0.6875rem);
  font-weight: var(--fw-title);
  color: var(--ink);
  letter-spacing: 0.08em;
}
.lp10-kv div {
  display: flex;
  align-items: baseline;
  gap: var(--s-3);
  padding: 0.45rem 0;
  min-width: 0;
}
.lp10-kv div + div { border-top: 1px solid var(--rule-2, var(--rule)); }
.lp10-kv .k { flex: 0 0 4.5em; font-size: var(--fs-13, 0.8125rem); color: var(--gray); }
.lp10-kv .k.for-dev { font-family: var(--font-mono); font-size: var(--fs-11, 0.6875rem); }
.lp10-kv .v { flex: 1 1 auto; min-width: 0; font-size: var(--fs-13, 0.8125rem); color: var(--ink); overflow-wrap: break-word; }
.lp10-kv .v.mono { font-family: var(--font-mono); font-size: var(--fs-11, 0.6875rem); color: var(--ink-2); }
.lp10-kv .v a { color: var(--ink); text-decoration: underline; text-underline-offset: 0.2em; text-decoration-thickness: 1px; }
.lp10-note { margin: var(--s-3) 0 0; font-size: var(--fs-13, 0.8125rem); color: var(--gray); }
.lp10-acts {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--s-3);
  margin: var(--s-5) auto 0;
  max-width: 44em;
}
.lp10-acts a { color: var(--ink); text-decoration: none; font-size: var(--fs-14); }
.lp10-acts a.is-strong {
  display: inline-block;
  padding: 0.5rem 1.1rem;
  border-radius: var(--radius-pill, 999px);
  background: var(--ink);
  color: var(--paper);
}
.lp10-footnote {
  margin: var(--s-6) 0 0;
  padding: var(--s-3) 0 var(--s-6);
  border-top: 1px solid var(--rule);
  font-size: var(--fs-12, 0.75rem);
  color: var(--gray-2);
}
.lp10-footnote a { color: inherit; }

/* 授权证明核验页组件样式（对齐 16030） */
.lic-index { display: grid; }
.lic-row {
  display: grid;
  grid-template-columns: minmax(7rem, 1.1fr) minmax(10rem, 1.6fr) auto auto;
  gap: var(--s-3) var(--s-4);
  align-items: center;
  padding: 0.85rem 0;
  border-bottom: 1px solid var(--rule);
  font-size: var(--fs-14);
}
.lic-row .name { font-weight: var(--fw-title); }
.lic-row .name:hover { text-decoration: underline; text-underline-offset: 0.18em; }
.lic-row .proto { color: var(--gray); min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.lic-row .go { font-size: var(--fs-13); color: var(--ink); text-decoration: underline; text-underline-offset: 0.18em; }

.ways {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--s-4);
  margin: 0 0 var(--s-10);
}
.way {
  background: var(--surface);
  border-radius: var(--radius);
  padding: var(--s-6);
  min-height: 11rem;
}
.way .idx { font-size: var(--fs-12); color: var(--gray-2); margin-bottom: var(--s-3); letter-spacing: 0.04em; }
.way h2 { font-size: var(--fs-20); font-weight: var(--fw-title); letter-spacing: -0.02em; margin-bottom: var(--s-3); }
.way p { color: var(--gray); font-size: var(--fs-13); line-height: 1.65; }
.way-go { margin-top: var(--s-5); }
.way-go a { color: var(--ink); font-size: var(--fs-13); text-decoration: underline; text-underline-offset: 0.18em; }

.gen-form,
.verify-form {
  display: grid;
  gap: var(--s-4);
  max-width: 40rem;
  margin: var(--s-8) 0;
  padding: var(--s-6);
  background: var(--surface);
  border-radius: var(--radius);
}
.gen-form .kicker { margin: 0; }
.gen-form label,
.verify-form label {
  display: grid;
  gap: var(--s-2);
  font-size: var(--fs-13);
  color: var(--gray);
}
.gen-form select,
.gen-form input,
.verify-form textarea {
  width: 100%;
  border: 0;
  border-radius: var(--radius-sm);
  background: var(--page);
  color: var(--ink);
  font: inherit;
}
.gen-form select,
.gen-form input {
  height: 3rem;
  padding: 0 1rem;
}
.verify-form textarea {
  min-height: 16rem;
  padding: 1rem;
  font-family: var(--font-mono);
  font-size: var(--fs-13);
  line-height: 1.55;
  resize: vertical;
}
.gen-form .acts { display: flex; flex-wrap: wrap; gap: var(--s-3); margin: 0; }
.verify-out {
  max-width: 40rem;
  margin: 0 0 var(--s-10);
  padding: var(--s-6);
  background: var(--surface);
  border-radius: var(--radius);
}
.verify-out.is-ok { outline: 2px solid var(--ink); outline-offset: 0; }
.verify-out h2 { font-size: var(--fs-20); font-weight: var(--fw-title); margin: var(--s-2) 0 var(--s-3); }
.verify-out p { color: var(--ink-2); }

.usage-check { border: 0; padding: 0; margin: 0 0 var(--s-4); }
.usage-check legend { font-size: var(--fs-13); color: var(--gray); padding: 0; margin-bottom: 0.45rem; }
.usage-check .opts { display: flex; flex-wrap: wrap; gap: 0.6rem 1.35rem; }
.usage-check label { display: inline-flex; align-items: center; gap: 0.4em; font-size: var(--fs-14); padding: 0.15rem 0; }

@media (max-width: 900px) {
  .ways { grid-template-columns: 1fr; }
}

/* —— 领取切片包（/slice，/slice/{norm}） —— */
.count-line { font-size: var(--fs-13); color: var(--gray); padding: var(--s-2) 0 var(--s-4); }
.count-line strong { color: var(--ink); font-weight: var(--fw-title); }

.tool-page {
  max-width: 40rem;
  padding: var(--s-8) 0 var(--s-16);
}
.tool-bar {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s-4);
  margin-bottom: 0.85rem;
}
.tool-bar .kicker {
  margin: 0;
  font-size: var(--fs-12);
  letter-spacing: 0.12em;
}
.tool-bar-meta { font-size: var(--fs-13); color: var(--gray); }
.tool-page > h1 {
  font-size: clamp(1.75rem, 3.2vw, 2.25rem);
  font-weight: var(--fw-title);
  letter-spacing: -0.025em;
  line-height: 1.18;
}
.tool-lead {
  margin-top: 0.5rem;
  font-size: var(--fs-16);
  color: var(--ink-2);
  line-height: 1.55;
  max-width: 36em;
}
.tool-face {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  justify-content: space-between;
  gap: 0.75rem 1.5rem;
  margin-top: 1.6rem;
  padding: 1.05rem 0 1.1rem;
  border-top: 1px solid var(--rule);
  border-bottom: 1px solid var(--rule);
}
.tool-face-name { font-weight: var(--fw-title); font-size: var(--fs-16); }
.tool-face-meta { margin-top: 0.25rem; font-size: var(--fs-13); color: var(--gray); }
.tool-pick {
  display: grid;
  gap: 0.28rem;
  font-size: var(--fs-12);
  letter-spacing: 0.12em;
  color: var(--gray);
}
.tool-pick select {
  height: 2.35rem;
  min-width: 12rem;
  padding: 0 0.55rem;
  border: 0;
  border-bottom: 1px solid var(--rule);
  border-radius: 0;
  background: transparent;
  color: var(--ink);
  font-size: var(--fs-14);
  letter-spacing: 0;
}
.tool-pick select:hover,
.tool-pick select:focus { border-bottom-color: var(--ink); outline: none; }
.tool-board { margin-top: 0; }
.tool-stage {
  display: grid;
  grid-template-columns: 2.15rem minmax(0, 1fr);
  gap: 0.2rem 1.05rem;
  padding: 1.45rem 0;
  border-bottom: 1px solid var(--rule);
}
.tool-idx {
  margin: 0.2rem 0 0;
  font-size: var(--fs-12);
  letter-spacing: 0.08em;
  font-variant-numeric: tabular-nums;
  color: var(--gray-2);
}
.tool-slot h2 {
  margin: 0 0 0.55rem;
  font-size: var(--fs-16);
  font-weight: var(--fw-title);
  letter-spacing: -0.01em;
}
.tool-note {
  font-size: var(--fs-14);
  color: var(--ink-2);
  line-height: 1.7;
  max-width: 38em;
}
.tool-stage.is-lock .tool-slot,
.tool-stage.is-wait .tool-slot { color: var(--gray); }
.tool-stage.is-lock .tool-note,
.tool-stage.is-wait .tool-note { color: var(--gray); }
.tool-stage.is-lock .tool-pack-name { color: var(--gray); font-weight: var(--fw-body); }
.tool-intake {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 0.22rem;
  width: auto;
  min-height: 5.6rem;
  padding: 1rem 1.25rem;
  margin: 0 0 0.6rem;
  border: 1.5px dashed var(--rule);
  border-radius: 10px;
  cursor: pointer;
}
.tool-intake:hover,
.tool-intake.is-over {
  border-color: var(--ink);
  background: var(--fill);
}
.tool-intake:focus-within { outline: none; border-color: var(--ink); background: var(--fill); }
.tool-intake-kicker {
  font-size: var(--fs-12);
  letter-spacing: 0.12em;
  color: var(--gray);
}
.tool-intake-title { display: inline-flex; align-items: center; gap: 0.4em; font-size: var(--fs-16); font-weight: var(--fw-title); }
.tool-intake-title .icon { width: 1.05rem; height: 1.05rem; }
.tool-intake-meta { font-size: var(--fs-13); color: var(--gray); }
.tool-origin {
  padding: 0.45rem 0 0;
  font-size: var(--fs-13);
  color: var(--gray);
}
.tool-origin a {
  color: var(--ink);
  text-decoration-color: var(--rule);
  text-underline-offset: 0.18em;
}
.tool-origin a:hover { text-decoration-color: var(--ink); }
.tool-held {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.4rem 1rem;
  width: 100%;
  min-height: 2.6rem;
  padding: 0.15rem 0 0.1rem;
  cursor: pointer;
}
.tool-held-main { display: flex; flex-wrap: wrap; gap: 0.3rem 0.85rem; align-items: baseline; }
.tool-held-name { font-size: var(--fs-14); font-weight: var(--fw-title); }
.tool-held-meta { font-size: var(--fs-13); color: var(--gray); font-variant-numeric: tabular-nums; }
.tool-held-act { font-size: var(--fs-13); color: var(--gray); }
.tool-held:hover .tool-held-act { color: var(--ink); text-decoration: underline; text-underline-offset: 0.18em; }
.tool-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.65rem 1rem;
  margin-top: 0.9rem;
}
.tool-verdict { display: flex; align-items: center; gap: 0.4em; font-size: var(--fs-16); font-weight: var(--fw-title); margin: 0 0 0.35rem; }
.tool-verdict .icon { width: 1.05rem; height: 1.05rem; flex: none; }
.tool-kvlist { margin-top: 0.85rem; border-top: 1px solid var(--rule); }
.tool-kv {
  display: grid;
  grid-template-columns: 6.2em minmax(0, 1fr);
  gap: 0.65rem 1rem;
  align-items: baseline;
  padding: 0.5rem 0;
  border-bottom: 1px solid var(--rule);
  font-size: var(--fs-14);
}
.tool-kv-k { color: var(--gray); font-size: var(--fs-13); }
.tool-kv-v { overflow-wrap: anywhere; }
.tool-kv-v.is-hash {
  font-family: var(--font-mono);
  font-size: var(--fs-13);
  color: var(--ink-2);
  line-height: 1.55;
}
.tool-quiet {
  color: var(--gray-2);
  font-size: var(--fs-13);
  font-family: var(--font-ui);
}
.tool-pack-name { font-size: var(--fs-16); font-weight: var(--fw-title); letter-spacing: -0.015em; }
.tool-addr {
  margin-top: 0.85rem;
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.45rem 1rem;
  font-size: var(--fs-13);
  color: var(--ink-2);
}
.tool-legal {
  margin-top: var(--s-6);
  font-size: var(--fs-13);
  color: var(--gray-2);
  line-height: 1.7;
  max-width: 40em;
}
.tool-links {
  display: flex;
  flex-wrap: wrap;
  gap: 0.15rem 1.15rem;
  margin-top: var(--s-4);
  font-size: var(--fs-13);
}
.tool-links a { color: var(--ink); }
.tool-how {
  margin-top: 1.7rem;
  border-top: 1px solid var(--rule);
}
.tool-how li {
  display: grid;
  grid-template-columns: 2.15rem minmax(0, 1fr);
  gap: 0.2rem 1.05rem;
  padding: 0.95rem 0;
  border-bottom: 1px solid var(--rule);
}
.tool-how span {
  margin: 0.2rem 0 0;
  font-size: var(--fs-12);
  letter-spacing: 0.08em;
  color: var(--gray-2);
  font-variant-numeric: tabular-nums;
}
.tool-how strong { font-size: var(--fs-16); font-weight: var(--fw-title); }
.tool-how p { margin-top: 0.2rem; font-size: var(--fs-13); color: var(--gray); }
.tool-aside {
  margin-top: var(--s-6);
  font-size: var(--fs-13);
  color: var(--gray);
  line-height: 1.7;
}
.tool-aside a { color: var(--ink); }
.tool-page .count-line { padding: 1.15rem 0 0.15rem; }
.tool-index { margin-top: 0; }
.tool-index li { border-top: 1px solid var(--rule); }
.tool-index-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  gap: 0.75rem 1.25rem;
  align-items: center;
  min-height: 3.25rem;
  padding: 0.55rem 0.45rem 0.55rem 0.05rem;
  margin: 0 -0.45rem 0 -0.05rem;
  border-radius: 6px;
}
.tool-index-row:hover { text-decoration: none; background: var(--fill); }
.tool-index-name { font-weight: var(--fw-title); }
.tool-index-meta { color: var(--gray); font-size: var(--fs-13); }
.tool-index-go { font-weight: var(--fw-title); justify-self: end; font-size: var(--fs-14); }
.tool-index.is-quiet .tool-index-name { font-weight: var(--fw-body); }
.tool-index.is-quiet .tool-index-go { color: var(--gray); font-weight: var(--fw-body); }


@media (max-width: 40rem) {
  .tool-index-row { grid-template-columns: 1fr auto; }
  .tool-index-meta { grid-column: 1; }
  .tool-pick { width: 100%; }
  .tool-pick select { width: 100%; }
  .tool-page .btn-take { width: 100%; }
  .tool-actions { flex-direction: column; align-items: stretch; }
  .tool-kv { grid-template-columns: 1fr; gap: 0.15rem; padding: 0.55rem 0; }
}

/* —— 厂商页与样本卡（/foundry，/foundry/{slug}） —— */
.page-pad { padding-bottom: var(--s-16); }
.page-head { padding: var(--s-12) 0 var(--s-8); }
.page-head h1 { font-size: var(--fs-40); font-weight: var(--fw-title); line-height: var(--lh-tight); letter-spacing: -0.015em; }
.page-head .lead { margin-top: var(--s-3); color: var(--gray); font-size: var(--fs-16); max-width: 40em; }
.page-head.is-compact { padding: var(--s-8) 0 var(--s-4); }
.page-head.is-compact h1 { font-size: var(--fs-28); }
.page-head .crumb { font-size: var(--fs-13); color: var(--gray); display: flex; gap: var(--s-2); margin-bottom: var(--s-3); }
.page-head .crumb a:hover { color: var(--ink); }

.foundry-cards {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--s-4);
}
.foundry-card {
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
  background: var(--surface);
  border-radius: var(--radius);
  padding: var(--s-6);
  min-height: 10rem;
}
.foundry-card .name { font-size: var(--fs-20); font-weight: var(--fw-title); letter-spacing: -0.02em; }
.foundry-card .name:hover { text-decoration: underline; text-underline-offset: 0.18em; }
.foundry-card .count { font-size: var(--fs-13); color: var(--gray); }
.foundry-card .faces { margin-top: auto; padding-top: var(--s-4); font-size: var(--fs-13); color: var(--ink-2); line-height: 1.6; }
.foundry-card .faces a:hover { color: var(--ink); }

.specimens { display: grid; gap: var(--s-4); }
.specimen {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: baseline;
  gap: var(--s-2) var(--s-6);
  padding: var(--s-5) var(--s-6) var(--s-6);
  background: var(--surface);
  border-radius: var(--radius);
}
.specimen:hover { background: var(--surface-2); }
.specimen .head { min-width: 0; }
.specimen .name {
  font-size: var(--fs-14);
  font-weight: var(--fw-title);
  font-family: var(--font-ui);
  letter-spacing: 0;
  line-height: var(--lh-snug);
  text-decoration: none;
}
.specimen .name:hover { text-decoration: underline; text-underline-offset: 0.2em; }
.specimen .meta {
  font-size: var(--fs-12);
  color: var(--gray);
  margin-top: 0.2rem;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.35em 0.45em;
}
.specimen .meta .meta-lic {
  min-width: 0;
  max-width: 24em;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.specimen .status { white-space: nowrap; }
.specimen .act {
  font-size: var(--fs-12);
  color: var(--ink);
  white-space: nowrap;
  padding: 0.35rem 0.9rem;
  background: var(--fill);
  border-radius: var(--radius-pill);
  align-self: start;
  display: inline-flex;
  align-items: center;
}
.specimen .act:hover { color: var(--on-ink); background: var(--ink); text-decoration: none; }
.specimen .act.is-take { background: var(--ink); color: var(--on-ink); }
.specimen .act.is-take:hover { background: var(--ink-hover); }
.specimen .preview {
  grid-column: 1 / -1;
  display: block;
  margin-top: var(--s-4);
  font-size: clamp(1.85rem, 3.4vw, 2.6rem);
  line-height: 1.2;
  letter-spacing: -0.01em;
  overflow-wrap: anywhere;
  color: var(--ink);
}
.specimen .preview:hover { text-decoration: none; }
.meta-sep { color: var(--gray-2); }

.status {
  display: inline-flex;
  align-items: center;
  height: 1.4rem;
  padding: 0 0.55rem;
  border-radius: var(--radius-pill);
  background: var(--fill);
  font-size: var(--fs-12);
  color: var(--gray);
}
.status.is-source { background: var(--ink); color: var(--on-ink); }
.status.is-missing, .status.is-pending { color: var(--gray-2); }

body.page-foundries > main.page {
  padding-top: 0;
}

/* —— 报缺字整页（/gap · gp-v1b 短笺精修） —— */
.gp-footnote {
  margin: var(--s-12) 0 0;
  padding-top: var(--s-5);
  border-top: 1px solid var(--rule);
  font-size: var(--fs-13);
  color: var(--gray);
  max-width: 46em;
  line-height: var(--lh-body);
}
.gp-footnote a { color: var(--ink); }
.gp-footnote.mono { font-family: var(--font-mono); font-size: var(--fs-12); }

.gp1-stage {
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(0, 0.8fr);
  gap: var(--s-8) var(--s-12);
  align-items: start;
}
.gp1-kicker {
  margin: 0 0 var(--s-4);
  font-family: var(--font-mono);
  font-size: var(--fs-12);
  color: var(--gray-2);
  letter-spacing: 0.06em;
}
.gp1-kinds {
  display: flex;
  flex-wrap: wrap;
  gap: var(--s-2);
  margin: 0 0 var(--s-6);
}
.gp1-kinds button {
  border: 0;
  background: transparent;
  color: var(--ink-2);
  font-size: var(--fs-13);
  padding: 0.35rem 0.85rem;
  border-radius: var(--radius-pill);
  cursor: pointer;
}
.gp1-kinds button.is-on {
  background: var(--ink);
  color: var(--on-ink);
  font-weight: var(--fw-title);
}
.gp1-kinds button:not(.is-on):hover { background: var(--fill); }
.gp1-fields { display: flex; flex-direction: column; }
.gp1-fields[hidden] { display: none; }
.gp-field {
  display: grid;
  grid-template-columns: 6.5em minmax(0, 1fr);
  gap: var(--s-4);
  align-items: baseline;
  padding: var(--s-4) 0;
  border-top: 1px solid var(--rule);
}
.gp-field:last-child { border-bottom: 1px solid var(--rule); }
.gp-field .k {
  font-size: var(--fs-13);
  color: var(--gray);
}
.gp-field .k.mono { font-family: var(--font-mono); font-size: var(--fs-12); }
.gp-field input,
.gp-field textarea {
  width: 100%;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  font-size: var(--fs-20);
  letter-spacing: -0.02em;
  line-height: 1.35;
  resize: vertical;
  border-radius: 0;
}
.gp-field textarea { min-height: 2.6em; resize: none; }
.gp-field input::placeholder,
.gp-field textarea::placeholder { color: var(--gray-2); }
.gp-field input:focus,
.gp-field textarea:focus { outline: none; }
.gp-field:focus-within .k { color: var(--ink); }
.gp-field.is-char { align-items: center; padding: var(--s-5) 0; }
.gp-field.is-char input {
  font-size: clamp(2.75rem, 6vw, 4.25rem);
  font-weight: var(--fw-title);
  line-height: 1;
  letter-spacing: -0.04em;
}
.gp1-acts {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--s-4) var(--s-5);
  margin: var(--s-6) 0 0;
}
.gp1-acts button,
.gp1-acts a.is-strong {
  font: inherit;
  font-size: var(--fs-13);
  font-weight: var(--fw-title);
  padding: 0.45rem 1.05rem;
  border: 0;
  border-radius: var(--radius-pill);
  background: var(--ink);
  color: var(--on-ink);
  cursor: pointer;
  text-decoration: none;
}
.gp1-acts button:hover,
.gp1-acts a:hover { background: var(--ink-hover); }
.gp1-acts a:not(.is-strong) {
  font-size: var(--fs-13);
  color: var(--ink);
  text-decoration: none;
}
.gp1-acts a:not(.is-strong):hover { background: transparent; text-decoration: underline; text-underline-offset: 0.2em; }
.gp1-quiet {
  margin: var(--s-4) 0 0;
  font-size: var(--fs-13);
  color: var(--gray);
  max-width: 36em;
  line-height: var(--lh-body);
}
.gp1-quiet.mono { font-family: var(--font-mono); font-size: var(--fs-12); }

.gp1-dossier {
  min-width: 0;
  padding: var(--s-5) 0 var(--s-2) var(--s-6);
  border-left: 1px solid var(--ink);
}
.gp1-dossier .label {
  margin: 0 0 var(--s-4);
  font-family: var(--font-mono);
  font-size: 0.6875rem;
  font-weight: var(--fw-title);
  letter-spacing: 0.08em;
}
.gp1-kv div {
  display: grid;
  grid-template-columns: 5.5em minmax(0, 1fr);
  gap: var(--s-4);
  align-items: baseline;
  padding: 0.7rem 0;
  border-top: 1px solid var(--rule);
  font-size: var(--fs-14);
}
.gp1-kv div:first-child { border-top: 0; padding-top: 0; }
.gp1-kv .k { color: var(--gray); }
.gp1-kv .v { color: var(--ink); line-height: var(--lh-body); }
.gp1-kv .v.mono { font-family: var(--font-mono); font-size: var(--fs-13); }
.gp1-kv a { color: var(--ink); }

body.page-gap .gp1-kicker { letter-spacing: 0.06em; }
body.page-gap .gp1-dossier {
  align-self: stretch;
  background: transparent;
}
body.page-gap .gp1-dossier .label {
  color: var(--ink);
  font-weight: 400;
}
body.page-gap .gp1-kv .k { font-weight: 400; }
body.page-gap .gp1-kv .v { line-height: var(--lh-body); }
body.page-gap .gp-field {
  margin: 0;
  border-radius: 0;
}
body.page-gap .gp-field:hover { background: transparent; }
body.page-gap .gp-field .k { font-weight: 400; }
body.page-gap .gp-field input,
body.page-gap .gp-field textarea { text-decoration: none; }
body.page-gap .gp1-acts a {
  text-underline-offset: 0.2em;
  text-decoration-thickness: 1px;
  transition: color var(--dur) var(--ease);
}
body.page-gap .gp1-acts a:not(.is-strong):hover {
  background: transparent;
  text-decoration: underline;
}
body.page-gap .gp1-kinds button {
  transition: background var(--dur) var(--ease), color var(--dur) var(--ease);
}

@media (max-width: 900px) {
  .gp1-stage { grid-template-columns: 1fr; }
  .gp1-dossier { padding: var(--s-5) 0 0; border-left: 0; border-top: 1px solid var(--rule); }
  .gp-field { grid-template-columns: 1fr; gap: var(--s-2); }
}

@media (max-width: 768px) {
  :root { --gutter: 1rem; }
  /* 参 APP：页眉单行 56px；主导航行滚过首屏后收起（顶部仍双行，保留五项直达） */
  .topbar { height: auto; }
  .topbar + main { scroll-margin-top: 64px; }
}
@media (max-width: 720px) {
  /* 人定：手机端版权行不显示备案号（DOM 保留，桌面照旧） */
  .site-foot-bottom .icp { display: none; }
  /* 参 APP 菜单：触控目标 ≥44px、14px 字、项间 4px，行底规则线与内容分界 */
  .topnav { gap: var(--s-1); padding: 0 var(--gutter) 0.3rem; margin: 0 calc(-1 * var(--gutter)); border-bottom: 1px solid var(--rule); }
  .topnav a { padding: 0.55rem 0.7rem; font-size: var(--fs-14); }
  .topnav a.is-active { background: var(--fill); }
  /* 索引表四列在窄屏会挤成碎块：改成名主、其余折行 */
  .index-head { display: none; }
  .index li > a,
  .index.is-3 li > a {
    grid-template-columns: minmax(0, 1fr) auto;
    gap: var(--s-2) var(--s-3);
  }
  .index .norm,
  .index .info {
    grid-column: 1;
    white-space: normal;
  }
  .index .go { grid-column: 2; grid-row: 1 / span 3; align-self: center; }
  .stats { gap: var(--s-2) 0; }
  .stat { padding-right: var(--s-4); }
  .stat + .stat { padding-left: var(--s-4); }
  .foundry-cards { grid-template-columns: 1fr; }
}
@media (max-width: 720px) {
  /* 顶栏两行：字标 | 放大/主题 一行，主导航独占一行。五项导航加右区在窄屏塞不进一行，
     .topnav 会被挤成 0 宽滚动盒，链接等于整个消失——所以视图切换与店面在移动端收起 */
  .topbar { height: auto; }
  .topbar-inner { height: auto; flex-wrap: wrap; gap: 0.3rem 0.5rem; }
  .topbar-end .view-switch, .topbar-end > a { display: none; }
  .topnav { order: 9; flex: 1 0 100%; margin: 0 calc(-1 * var(--gutter)); padding: 0 var(--gutter) 0.3rem; gap: 0; }
  .topnav a { padding: 0.4rem 0.5rem; }
  .split, .split.is-wide { grid-template-columns: 1fr; }
  .site-foot-inner { gap: var(--s-6); }
  .foot-rest { grid-template-columns: repeat(3, minmax(0, 1fr)); column-gap: var(--s-4); row-gap: var(--s-2); }
  .foot-rest a { min-width: 0; }
}


/* 目录分页 — 同 chip 视觉 */
.pager { display: flex; flex-wrap: wrap; gap: var(--s-1) var(--s-3); align-items: center; margin: var(--s-5) 0 0; }
.pager .pg { border: 0; background: transparent; padding: 0.2rem 0.15rem; font-family: inherit; font-size: var(--fs-13); color: var(--gray); cursor: pointer; font-variant-numeric: tabular-nums; }
.pager .pg.nav { color: var(--ink-2); }
.pager .pg:hover:not(:disabled) { color: var(--ink); text-decoration: underline; text-underline-offset: 0.25em; }
.pager .pg.is-on { color: var(--ink); font-weight: var(--fw-title); text-decoration: underline; text-underline-offset: 0.3em; text-decoration-thickness: 1px; }
.pager .pg:disabled { color: var(--gray-2); opacity: 0.55; cursor: default; text-decoration: none; }
.pager .dots { color: var(--gray-2); font-size: var(--fs-13); }
.pager .pg-info { font-size: var(--fs-12, 0.75rem); color: var(--gray-2); margin-left: var(--s-2); }

/* 目录列表 — 谱系行风格（app detail .lin-row 同款）：名字即主角、悬停灰底、meta 悬停才现 */
.lin-list { display: grid; gap: 2px; }
.lrow {
  display: flex; align-items: center; gap: var(--s-4);
  min-width: 0;
  padding: var(--s-3);
  border-radius: var(--radius-sm);
  color: var(--ink); text-decoration: none;
}
.lrow:hover { background: var(--fill); text-decoration: none; }
.lrow .lnm {
  flex: 1; min-width: 0;
  font-size: var(--fs-22); line-height: 1.25;
  overflow: hidden;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  line-clamp: 2;
  white-space: normal;
  word-break: break-word;
}
.lrow .lrel { flex: none; font-size: var(--fs-12); color: var(--gray); }
.lrow .lmeta {
  margin-left: auto; visibility: hidden; flex: none;
  font-size: var(--fs-12); color: var(--gray); line-height: 1.2;
  white-space: nowrap; text-align: right;
}
.lrow:hover .lmeta, [data-view="dev"] .lrow .lmeta { visibility: visible; }
.lrow .lgo { flex: none; font-size: var(--fs-13); color: var(--ink); }
.lrow .lgo.is-ink { font-weight: var(--fw-title); }
.lrow.is-miss { color: var(--gray); }
.lrow.is-miss .lnm { color: var(--gray); }

/* —— 移动端菜单抽屉（照 fonts-front topmenu 同套） —— */
.menu-btn { display: none !important; }
.menu-btn .ico-close { display: none; }
.menu-btn[aria-expanded="true"] .ico-menu { display: none; }
.menu-btn[aria-expanded="true"] .ico-close { display: block; }
.topmenu { position: absolute; left: 0; right: 0; top: 100%; display: grid; gap: var(--s-1); padding: var(--s-3) var(--gutter) var(--s-4); background: var(--page); border-bottom: 1px solid var(--rule); z-index: 39; }
.topmenu[hidden] { display: none; }
.topmenu-search { position: relative; margin-bottom: var(--s-2); }
.topmenu-search .icon { position: absolute; left: 0.9rem; top: 50%; transform: translateY(-50%); width: 1rem; height: 1rem; color: var(--gray-2); }
.topmenu-search input { width: 100%; height: 2.75rem; padding: 0 1rem 0 2.5rem; border: 0; border-radius: var(--radius-pill); background: var(--fill); font-size: var(--fs-14); color: var(--ink); }
.topmenu-links { display: grid; gap: var(--s-1); }
.topmenu-links a { padding: 0.6rem 0.9rem; border-radius: var(--radius-sm); color: var(--ink-2); font-weight: var(--fw-label); }
.topmenu-links a.is-active { background: var(--fill); color: var(--ink); }
.topmenu .view-switch { width: 100%; margin-top: var(--s-2); }
.topmenu .view-switch button { flex: 1; text-align: center; }
@media (max-width: 960px) {
  .topnav { display: none; }
  .topbar-end > a { display: none; }
  .topbar-end .view-switch { display: none; }
  .menu-btn { display: inline-grid !important; }
  /* 抽屉模式=单行页眉：高 56px、垂直居中（抹掉两行版式残留的偏移） */
  .topbar { height: 3.5rem; }
  .topbar-inner { height: 3.5rem; flex-wrap: nowrap; align-items: center; gap: var(--s-2); }
  .topbar-end { margin-left: auto; align-items: center; }
}
