/* ============================================================
   基础层 —— 版式基线 / 栅格 / 留白节奏 / 竖排工具
   ============================================================ */

*,*::before,*::after{ box-sizing:border-box; }

html{ -webkit-text-size-adjust:100%; scroll-behavior:smooth; }

body{
  margin:0;
  font-family:var(--serif);
  font-size:var(--fs-base);
  line-height:var(--lh-body);
  color:var(--ink);
  background-color:var(--paper);
  /* 宣纸纤维：两层极淡点阵，零位图 */
  background-image:
    radial-gradient(rgba(20,20,20,.030) .5px, transparent .5px),
    radial-gradient(rgba(20,20,20,.018) .5px, transparent .5px);
  background-size:3px 3px, 7px 7px;
  background-position:0 0, 2px 3px;
  text-rendering:optimizeLegibility;
  -webkit-font-smoothing:antialiased;
}

img,svg{ max-width:100%; display:block; }
a{ color:var(--green-deep); text-decoration:none; transition:color var(--t-fast); }
a:hover{ color:var(--green-darker); }

h1,h2,h3,h4{ margin:0; font-weight:500; line-height:var(--lh-tight); letter-spacing:var(--ls-title); }
p{ margin:0; }
ul,ol{ margin:0; padding:0; list-style:none; }

/* —— 中文换行统一规范 ——
   标点禁则（句号逗号不开行首）+ 长串兜底 + 段落避免孤字成行 + 标题两行时均衡。
   渐进增强：不支持 text-wrap 的浏览器按默认断行，无副作用。 */
p, li, td, th, figcaption, blockquote, .capsule, .cta__text, .sec-head__desc, .steps__text, .body-text, .card__text, .area-card__desc{
  line-break: strict;
  overflow-wrap: break-word;
  text-wrap: pretty;
}
h1,h2,h3,h4,h5,h6{ text-wrap: balance; }

::selection{ background:var(--yellow-wash); color:var(--ink); }

:focus-visible{
  outline:2px solid var(--green);
  outline-offset:3px;
  border-radius:var(--r-sm);
}

/* ---------------- 版心 ---------------- */

.wrap{ width:100%; max-width:var(--wrap); margin:0 auto; padding:0 var(--sp-5); }
.wrap--mid{ max-width:var(--wrap-mid); }
.wrap--narrow{ max-width:var(--wrap-narrow); }

/* ---------------- 章节节奏 ---------------- */

.sec{ padding:var(--sp-9) 0; }
.sec--tight{ padding:var(--sp-8) 0; }
.sec--paper2{ background:var(--paper-2); }
.sec--rule{ border-top:1px solid var(--rule-soft); }

/* 章首题：竖排小节标记 + 主标题 + 说明 */
.sec-head{ margin-bottom:var(--sp-7); }
.sec-head__no{
  display:block; font-family:var(--kai); font-size:var(--fs-lg);
  letter-spacing:var(--ls-wide); color:var(--green-deep); margin-bottom:var(--sp-3);
  line-height:1.2;
}
.sec-head__title{ font-size:var(--fs-h2); }
.sec-head__title em{
  font-style:normal;
  background:linear-gradient(transparent 62%, var(--yellow-wash) 62%);
  padding:0 .12em;
}
.sec-head__desc{
  margin-top:var(--sp-4); max-width:46em;
  color:var(--ink-soft); font-size:var(--fs-sm); line-height:var(--lh-mid);
}
/* 放宽版式：整句不需折行时用（仍随容器收窄自动换行，不会溢出） */
.sec-head__desc--wide{ max-width:none; }
/* 整句强制单行（桌面端）：去掉 46em 限宽并禁止折行。
   断点 1000px 按两句实测字宽反推（肆节句 885.1px、陆节句 955.5px）：
   ≥1000px 时版心可用宽 ≥952px，两句均单行；<1000px（含移动端）自动回落到常规换行。
   陆节句在 1000–1019px 视口下最多溢出容器约 3.5px（仍落在版心 24px 内边距里，
   不产生横向滚动），≥1020px 后版心封顶 1020px、可用宽 972px，留 16.5px 余量。 */
@media (min-width: 1000px){
  .sec-head__desc--oneline{ max-width:none; white-space:nowrap; }
}
.sec-head--center{ text-align:center; }
.sec-head--center .sec-head__desc{ margin-left:auto; margin-right:auto; }

/* 细分节标题：左侧石绿短竖线
   全站统一留白（2026-10-21 定）：标题与上文 ≥32px、与下文 24px。
   下文 24px 由本条保证（不依赖容器）；上文 32px 由 .fx-flow > .sub-h 提供，
   标题为容器首元素时不取上距，由容器自身留白负责。 */
.sub-h{
  position:relative; padding-left:var(--sp-4);
  font-size:var(--fs-h3);
  margin-top:var(--sp-6); margin-bottom:var(--sp-6);
}
/* 上下对称 32px（2026-10-21 二次统一）：与上文 32 / 与下文 32。
   作为容器首元素时归零——此时上文留白由容器自身负责（如 .def-block 的 padding-top）；
   折叠块 .acc__body 无顶内边距，由 components.css 的 .fx-flow > .sub-h:first-child 恢复 32px。 */
.sub-h:first-child{ margin-top:0; }
.sub-h::before{
  content:""; position:absolute; left:0; top:.28em;
  width:3px; height:.92em; background:var(--green); border-radius:1px;
}
/* 居中变体：用于通栏网格上方的引导标题 */
.sub-h--center{
  padding-left:0; text-align:center; letter-spacing:.04em;
}
.sub-h--center::before{ display:none; }

/* ---------------- 文本工具 ---------------- */

.lead{ font-size:var(--fs-lg); line-height:var(--lh-mid); color:var(--ink); }
.muted{ color:var(--ink-mute); font-size:var(--fs-sm); }
.mono{
  font-family:var(--mono); font-size:var(--fs-micro);
  letter-spacing:.04em; color:var(--ink-mute);
}
/* 绿色强调：不改字号（随父级正文），用文字态深绿（AA 5.9:1） */
.mono--green{ font-size:inherit; color:var(--green-deep); }
.body-text{ color:var(--ink-soft); font-size:var(--fs-sm); line-height:var(--lh-body); }
.center{ text-align:center; }

/* 竖排题字（标题意象，仅作点缀） */
.vertical{
  writing-mode:vertical-rl; text-orientation:upright;
  letter-spacing:var(--ls-wide); font-family:var(--kai);
}

/* 界格细线分隔 */
.rule{ height:1px; background:var(--rule); border:0; margin:var(--sp-6) 0; }
.rule--short{ width:64px; background:var(--green-line); }

/* 金色/石绿双线（复古书页式分隔） */
.rule-deco{
  height:6px; border:0; margin:var(--sp-7) 0;
  border-top:1px solid var(--rule);
  border-bottom:1px solid var(--rule-soft);
}

/* ---------------- 无障碍 ---------------- */

.sr-only{
  position:absolute; width:1px; height:1px; padding:0; margin:-1px;
  overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0;
}

/* ---------------- 响应式 ---------------- */

@media (max-width:900px){
  .wrap{ padding:0 var(--sp-4); }
  .sec{ padding:var(--sp-8) 0; }
}

/* 尊重降级动效偏好 */
@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior:auto; }
  *,*::before,*::after{ animation-duration:.001ms !important; transition-duration:.001ms !important; }
}
