/* 其一 · 医易同源页（tcm.html）新增区块样式 —— 2026-09-21 内容加厚
 *
 * 只放 tcm.html 独有的类，命名统一 tcm- 前缀，避免污染全站样式。
 * 颜色走 var() 并带兜底值，与 styles.css / enhance.css 的浅色锁定一致。
 *
 * 2026-09-27 T14：本页色板与「脊柱层」（此刻 hero + 十二时辰轴 + 派生降级）加在本文件末尾。
 */

/* ═════════ 脊柱层（T14 · 2026-09-27）═════════
 * 主张：子午流注从「页中的一个方块」升为全页主结构——紧贴此刻 hero 之下横贯内容宽度，
 * 当前时辰那一格向上凸起、填赭蜜、并垂一条线连回 hero；其余区块挂在轴的下游（.tcm-derived）。
 * 视觉权威：ui-design-runs/…-c018/site/tcm.html（只读）。类名不抄参考稿，一律 tcm- 前缀。
 *
 * 色板：赭蜜是本页唯一彩色（土色，顺时养脾），挂到全站已有的 --color-accent 命名空间上，
 * 作用域只有 body[data-page="tcm"]——不改 :root、不碰 header-v2.css（它走自己的 --nav-accent）。
 * 页面本体（body[data-page=tcm]）与 hero/轴同处一个上下文，故只需在这一处取值。
 */
body[data-page="tcm"] {
  --color-accent: #8a5a2b;          /* 赭蜜：当前时辰、宜、强调 */
  --color-accent-strong: #a8763e;   /* 赭蜜（亮）：轴线、连线、下划线 */
  --tcm-honey-soft: rgba(138, 90, 43, .08);
  --tcm-seal: #9e3b2c;              /* 朱印：全页仅 hero 一枚，不扩散 */
  --tcm-ink: var(--color-text-primary, #2a2723);
  --tcm-ink-2: var(--color-text-secondary, #565048);
  --tcm-muted: var(--color-text-tertiary, #928a7b);
  --tcm-line: var(--color-border-secondary, #d9d1c0);
  --tcm-paper: var(--color-background-primary, #fbf8f1); /* 抬起的格子底/印章字 */
  --tcm-display: var(--serif);      /* 宋体声部：沿用全站字体栈，不引新字体 */
  --tcm-ease: cubic-bezier(.22, .61, .36, 1);
}

.tcm-spine {
  position: relative;
  /* 轴可以比阅读列宽：12 格 × 60px（720px 列宽）放不下「地支 + 9–11 + 脾」三行，
     凸起的当前格还会压到邻格。派生区块的 .tcm-section 720px 一律不动。 */
  max-width: 1120px;
  margin: 0 auto 1.6rem;
  padding: 0 1rem;
  animation: tcm-rise .85s var(--tcm-ease) both;
}
@keyframes tcm-rise { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }

/* ── 此刻 hero：先给答案 ── */
.tcm-hero { text-align: center; display: flex; flex-direction: column; align-items: center; position: relative; z-index: 2; padding-top: .6rem; }
.tcm-kicker { display: flex; align-items: center; gap: 14px; margin: 0; font-size: .76rem; letter-spacing: .5em; text-indent: .5em; color: var(--color-accent, #8a5a2b); }
.tcm-kicker::before, .tcm-kicker::after { content: ""; width: 42px; height: 1px; background: var(--color-accent-strong, #a8763e); }
.tcm-archive-line {
  display: flex; align-items: baseline; justify-content: center; gap: 1.2rem; flex-wrap: wrap;
  width: 100%; margin: .9rem 0 0; padding-bottom: .7rem; border-bottom: 1px solid var(--tcm-line);
  font-size: .78rem; letter-spacing: .12em; color: var(--tcm-muted); font-variant-numeric: tabular-nums;
}
.tcm-archive-line b { font-weight: 600; color: var(--color-accent, #8a5a2b); }
.tcm-shichen { display: flex; align-items: flex-start; justify-content: center; gap: 1.3rem; margin: 1rem 0 .1rem; }
.tcm-big { font-family: var(--tcm-display); font-weight: 900; font-size: clamp(3.4rem, 9vw, 6.4rem); line-height: .95; letter-spacing: .2em; text-indent: .2em; color: var(--tcm-ink); }
.tcm-seal {
  flex: none; width: 2.7rem; height: 2.7rem; margin-top: .45rem; transform: rotate(-7deg);
  display: flex; align-items: center; justify-content: center; text-align: center;
  background: var(--tcm-seal); color: var(--tcm-paper); box-shadow: 0 2px 10px rgba(158, 59, 44, .28);
  font-family: var(--tcm-display); font-weight: 600; font-size: .8rem; line-height: 1.05; letter-spacing: .05em;
}
.tcm-dangling { margin: .7rem 0 0; font-family: var(--tcm-display); font-weight: 600; font-size: clamp(1.1rem, 2.2vw, 1.4rem); letter-spacing: .28em; text-indent: .28em; color: var(--color-accent, #8a5a2b); }
.tcm-dangling small { display: block; margin-top: .3rem; font-family: var(--tcm-display); font-weight: 400; font-size: .72rem; letter-spacing: .24em; text-indent: .24em; color: var(--tcm-muted); font-variant-numeric: tabular-nums; }
.tcm-keys { max-width: 34em; margin: 1rem auto 0; font-size: .9rem; line-height: 1.95; color: var(--tcm-ink-2); }
.tcm-hero .tcm-dim { max-width: 34em; margin: .4rem auto 0; }
.tcm-hero .tcm-src { display: block; margin-top: .8rem; font-size: .72rem; color: var(--tcm-muted); }

/* ── 签名连线：从凸起那一格垂向 hero 的「此刻」（WO-1b 教训：i 必须 nowrap） ── */
.tcm-now-link { position: absolute; z-index: 1; width: 1px; background: var(--color-accent-strong, #a8763e); opacity: 0; transition: opacity .5s var(--tcm-ease) .35s; }
.tcm-spine.is-laid .tcm-now-link { opacity: 1; }
.tcm-now-link i {
  position: absolute; left: 50%; top: 0; transform: translateX(-50%);
  font-style: normal; font-family: var(--tcm-display); font-size: .62rem; letter-spacing: .3em; text-indent: .3em;
  color: var(--color-accent, #8a5a2b); padding: 2px 4px 12px; white-space: nowrap;
}
.tcm-now-link.is-tight i { display: none; }

/* ── 十二时辰轴 ── */
.tcm-axis-band { margin-top: clamp(1.4rem, 4vh, 2.4rem); }
.tcm-axis-head { display: flex; align-items: baseline; justify-content: space-between; gap: 1.2rem; flex-wrap: wrap; }
.tcm-sec-title { display: flex; align-items: baseline; gap: .8rem; margin: 0; font-family: var(--tcm-display); font-weight: 600; font-size: 1rem; letter-spacing: .3em; color: var(--tcm-ink); }
.tcm-sec-title small { font-family: var(--sans); font-weight: 300; font-size: .68rem; letter-spacing: .1em; color: var(--tcm-muted); }
.tcm-sec-note { max-width: 36em; margin: 0; font-size: .76rem; line-height: 1.7; text-align: right; color: var(--tcm-muted); }
.tcm-axis-stage { position: relative; padding-top: 2.1rem; margin-top: .9rem; }
.tcm-axis-rail { position: absolute; left: 0; right: 0; top: 0; height: 1px; background: var(--color-accent-strong, #a8763e); transform: scaleX(0); transform-origin: left center; transition: transform 600ms var(--tcm-ease); }
.tcm-axis-band.is-inview .tcm-axis-rail { transform: scaleX(1); }
.tcm-axis { list-style: none; display: grid; grid-template-columns: repeat(12, 1fr); align-items: end; margin: 0; padding: 0; }
.tcm-hour { position: relative; padding: 1rem .1rem 0; text-align: center; }
.tcm-hour::before { content: ""; position: absolute; left: 50%; top: 0; width: 1px; height: 9px; background: var(--tcm-line); }
.tcm-hz { font-family: var(--tcm-display); font-weight: 600; font-size: 1.02rem; letter-spacing: .1em; text-indent: .1em; color: var(--tcm-ink-2); }
/* 时辰轴的小字原先是 rem 分数（.6/.64/.68/.72/.74rem ≈ 9.6~11.8px），低于工单
   V10 的 11px 地板；这里改绝对 px 并把五处一次抬到 11/12px（T51 D4，2026-10-21）。
   留 rem 会让地板跟着 html font-size 漂，判据无法固定。 */
.tcm-ht { margin-top: .15rem; font-size: 11px; letter-spacing: .02em; color: var(--tcm-muted); font-variant-numeric: tabular-nums; }
.tcm-hj { margin-top: .1rem; font-size: 11px; letter-spacing: .08em; color: var(--tcm-muted); }
/* 签名元素：唯一凸起的一格，别处保持安静 */
.tcm-hour.is-now { padding: 0 .2rem; }
.tcm-hour.is-now::before { height: 1.2rem; background: var(--color-accent, #8a5a2b); }
.tcm-hour-card {
  position: relative; z-index: 2; padding: 1.1rem .15rem .95rem; border-radius: var(--radius-2xs);
  background: var(--color-accent, #8a5a2b); color: var(--tcm-paper);
  box-shadow: 0 6px 18px rgba(138, 90, 43, .28); transform: translateY(-1rem);
}
.tcm-hour.is-now .tcm-hz { font-size: 2rem; font-weight: 900; line-height: 1.1; letter-spacing: .06em; text-indent: .06em; color: var(--tcm-paper); }
.tcm-hour.is-now .tcm-ht { margin-top: .3rem; font-size: 11px; color: rgba(246, 239, 227, .72); }
.tcm-hour.is-now .tcm-hj { margin-top: .2rem; font-size: 12px; font-weight: 500; color: var(--tcm-paper); }
.tcm-axis-foot { margin-top: 1.1rem; font-size: 12px; letter-spacing: .1em; text-align: center; color: var(--tcm-muted); font-variant-numeric: tabular-nums; }
.tcm-axis-foot b { font-family: var(--tcm-display); font-weight: 600; letter-spacing: .2em; color: var(--color-accent, #8a5a2b); }

/* ── 轴的下游：层级递减，去卡片框、缩字号 ── */
.tcm-section.tcm-derived { margin-bottom: clamp(1.8rem, 5vh, 2.6rem); }
.tcm-section.tcm-derived .tcm-card { border: 0; border-radius: 0; padding: 0; background: transparent; }
.tcm-section.tcm-derived .tcm-card > h3 {
  display: flex; align-items: center; gap: .9rem; margin: 0 0 .7rem;
  font-family: var(--tcm-display); font-weight: 600; font-size: .98rem; letter-spacing: .24em; color: var(--tcm-ink);
}
.tcm-section.tcm-derived .tcm-card > h3::after { content: ""; flex: 1; height: 1px; background: var(--tcm-line); }
.tcm-section.tcm-derived .tcm-card > h3 .tcm-badge { letter-spacing: .06em; }
.tcm-section.tcm-derived .tcm-card > p { font-size: .88rem; }
/* 派生区块里的「小卡片」也一并降级：去框、左对齐、只留分隔细线（轴的下游越发轻） */
.tcm-derived .tcm-chip { border: 0; border-left: 1px solid var(--tcm-line); border-radius: 0; background: transparent; padding: .1rem .9rem; text-align: left; }
.tcm-derived .tcm-chip:first-child { border-left: 0; padding-left: 0; }
.tcm-derived .tcm-chip .tc-label { font-size: .68rem; letter-spacing: .2em; }
.tcm-derived .tcm-chip .tc-value { font-family: var(--tcm-display); font-size: 1.15rem; letter-spacing: .1em; }

@media (max-width: 900px) {
  .tcm-hz { font-size: .95rem; }
  .tcm-hour.is-now .tcm-hz { font-size: 1.6rem; }
  .tcm-hj { font-size: .62rem; }
  .tcm-sec-note { text-align: left; }
}

/* ≤620px：轴横滑 + scroll-snap，绝不压成多列；当前格由脚本滚到视野中间 */
@media (max-width: 620px) {
  .tcm-now-link { display: none; }
  .tcm-spine { padding: 0 .6rem; margin-bottom: 1.2rem; }
  .tcm-axis-head { flex-direction: column; align-items: flex-start; gap: .3rem; }
  .tcm-axis-stage { padding-top: 1.5rem; }
  .tcm-axis { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; padding: 0 .25rem .6rem; -webkit-overflow-scrolling: touch; scrollbar-width: thin; }
  .tcm-axis::-webkit-scrollbar { height: 3px; }
  .tcm-axis::-webkit-scrollbar-thumb { background: var(--color-accent-strong, #a8763e); }
  .tcm-hour { flex: 0 0 auto; width: 66px; scroll-snap-align: center; }
  .tcm-hour.is-now { width: 98px; padding: 0 .25rem; }
  .tcm-hour-card { transform: translateY(-.75rem); }
  .tcm-shichen { gap: .9rem; }
  .tcm-big { font-size: clamp(2.9rem, 22vw, 4rem); }
  .tcm-seal { width: 2.2rem; height: 2.2rem; font-size: .68rem; }
  .tcm-keys { font-size: .86rem; }
}

@media (prefers-reduced-motion: reduce) {
  .tcm-spine { animation: none; }
  .tcm-axis-rail { transition: none; transform: scaleX(1); }
  .tcm-hour-card, .tcm-now-link { transition: none; }
}

/* 降级态的十二时辰常识格（无实时推演时用它，不是轴——轴在无数据时不渲染） */
.tcm-fb-hour { border: 1px solid var(--color-border-tertiary, #e8e0cf); border-radius: var(--radius-sm); padding: .45rem .3rem; text-align: center; font-size: .8rem; }
.tcm-fb-hour.now { border-color: var(--color-accent, #8a5a2b); background: var(--color-background-warning, var(--gold-soft)); font-weight: 600; }

/* ---------- 通用小件 ---------- */
.tcm-dim { font-size: .84rem; color: var(--color-text-secondary, #6b6b6b); line-height: 1.75; }
.tcm-dim code { background: var(--color-background-secondary, #f6f2e9); padding: 0 .25em; border-radius: var(--radius-xs); }
.tcm-badge {
  display: inline-block; margin-left: .4rem; padding: .1rem .45rem;
  font-size: .7rem; font-weight: 400; border-radius: 999px;
  border: 1px solid var(--color-border-secondary, var(--line));
  color: var(--color-text-secondary, #6b6b6b);
}
.tcm-btn {
  border: 1px solid var(--color-border-secondary, var(--line)); border-radius: var(--radius-sm);
  background: var(--color-background-primary, #fff); color: inherit;
  padding: .4rem .9rem; font-size: .85rem; cursor: pointer; line-height: 1.4;
  transition: border-color .15s, background .15s;
}
.tcm-btn:hover { border-color: var(--color-accent, #8a5a2b); }
.tcm-btn.primary { background: var(--color-accent, #8a5a2b); border-color: var(--color-accent, #8a5a2b); color: #fff; }
.tcm-btn.primary:hover { opacity: .9; }
.tcm-btn.small { padding: .25rem .6rem; font-size: .78rem; }
.tcm-btn.ghost { background: transparent; }
.tcm-btn.danger { color: #b23c2e; border-color: rgba(178, 60, 46, .35); }

/* ---------- 表格（窄屏横向滚动，不挤压列） ---------- */
.tcm-table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; margin: .6rem 0 .2rem; }
.tcm-table { border-collapse: collapse; width: 100%; min-width: 660px; font-size: .84rem; }
.tcm-table th, .tcm-table td {
  border: 1px solid var(--color-border-tertiary, #e8e0cf);
  padding: .38rem .5rem; text-align: left; white-space: nowrap; line-height: 1.5;
}
.tcm-table thead th {
  background: var(--color-background-secondary, #f7f3ea);
  font-weight: 600; color: var(--color-text-secondary, #5b5347);
}
.tcm-table tbody th { font-weight: 700; }
.tcm-table tbody tr:hover td { background: rgba(138, 90, 43, .05); }
.tcm-table-sm { font-size: .8rem; min-width: 560px; }
.tcm-table tr.is-current td { background: rgba(138, 90, 43, .1); font-weight: 600; }

/* 五行色（低饱和，只用于左列/边框做区分，不做语义强调） */
.tcm-wx-木 { color: #3f7a4a; }
.tcm-wx-火 { color: #b23c2e; }
.tcm-wx-土 { color: #9a7420; }
.tcm-wx-金 { color: #7d7468; }
.tcm-wx-水 { color: #2f5d86; }
.tcm-wx-border-木 { border-left: 3px solid #3f7a4a; }
.tcm-wx-border-火 { border-left: 3px solid #b23c2e; }
.tcm-wx-border-土 { border-left: 3px solid #9a7420; }
.tcm-wx-border-金 { border-left: 3px solid #7d7468; }
.tcm-wx-border-水 { border-left: 3px solid #2f5d86; }

/* ---------- 五行偏颇自检（可展开行） ---------- */
.tcm-bian { display: flex; flex-direction: column; gap: .4rem; margin-top: .5rem; }
.tcm-bian-row { border: 1px solid var(--color-border-tertiary, var(--line)); border-radius: 10px; overflow: hidden; }
.tcm-bian-row.is-open { border-color: var(--color-accent, #8a5a2b); }
.tcm-bian-head {
  display: flex; align-items: center; gap: .6rem; width: 100%;
  padding: .6rem .8rem; background: var(--color-background-secondary, var(--surface));
  border: 0; cursor: pointer; text-align: left; font: inherit; color: inherit;
}
.tcm-bian-head:hover { background: rgba(138, 90, 43, .08); }
.tcm-bian-wx { font-size: 1.15rem; font-weight: 700; min-width: 1.6em; }
.tcm-bian-zang { font-weight: 600; }
.tcm-bian-hint { margin-left: auto; font-size: .76rem; color: var(--color-text-tertiary, #8a8a8a); }
.tcm-bian-row.is-open .tcm-bian-hint::after { content: '（已展开）'; }
.tcm-bian-body { display: grid; grid-template-columns: 1fr 1fr; gap: .8rem; padding: .8rem; }
@media (max-width: 620px) { .tcm-bian-body { grid-template-columns: 1fr; } }
.tcm-bian-side { border: 1px dashed var(--color-border-tertiary, var(--line)); border-radius: var(--radius-sm); padding: .6rem .75rem; }
.tcm-bian-side h5 { margin: 0 0 .35rem; font-size: .92rem; color: var(--color-accent, #8a5a2b); }
.tcm-bian-side ul { margin: .2rem 0 .4rem; padding-left: 1.1rem; font-size: .85rem; line-height: 1.7; }
.tcm-bian-lab, .tcm-bian-org { font-size: .76rem; color: var(--color-text-tertiary, #8a8a8a); margin: .2rem 0; }
.tcm-prep { margin-top: .5rem; border-top: 1px dashed var(--color-border-tertiary, var(--line)); padding-top: .45rem; }
.tcm-prep-dim { margin-bottom: .4rem; }
.tcm-prep-dim b { font-size: .8rem; color: var(--color-text-secondary, #5b5347); }
.tcm-prep-dim ul { margin: .15rem 0 .3rem; padding-left: 1.1rem; font-size: .82rem; line-height: 1.65; }

/* ---------- 四时养生 ---------- */
.tcm-season-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: .8rem; margin-top: .5rem; }
.tcm-season {
  border: 1px solid var(--color-border-tertiary, var(--line)); border-radius: 10px;
  padding: .7rem .85rem; background: var(--color-background-primary, #fff);
}
.tcm-season-head { display: flex; align-items: baseline; gap: .5rem; flex-wrap: wrap; }
.tcm-season-head b { font-size: 1.05rem; }
.tcm-season-head span { font-size: .8rem; color: var(--color-text-secondary, #6b6b6b); }
.tcm-season-head em { margin-left: auto; font-size: .74rem; font-style: normal; color: var(--color-text-tertiary, #8a8a8a); }
.tcm-season dl { margin: .5rem 0 0; font-size: .85rem; line-height: 1.7; }
.tcm-season dt { font-weight: 600; color: var(--color-text-secondary, #5b5347); margin-top: .35rem; font-size: .8rem; }
.tcm-season dd { margin: .1rem 0 0; }

/* ---------- 治未病三层 ---------- */
.tcm-layers { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: .8rem; margin-top: .5rem; }
.tcm-layer { border: 1px solid var(--color-border-tertiary, var(--line)); border-radius: 10px; padding: .7rem .85rem; }
.tcm-layer h4 { margin: 0 0 .35rem; font-size: .95rem; color: var(--color-accent, #8a5a2b); }
.tcm-layer p { margin: .2rem 0 .4rem; font-size: .85rem; line-height: 1.7; }
.tcm-layer ul { margin: .2rem 0 .4rem; padding-left: 1.1rem; font-size: .83rem; line-height: 1.7; }

/* ---------- 五部经典 ---------- */
.tcm-classics { display: flex; flex-direction: column; gap: .45rem; margin-top: .5rem; }
.tcm-classic {
  display: grid; grid-template-columns: 8.5rem 7rem 1fr auto; gap: .6rem;
  align-items: baseline; padding: .5rem .7rem; font-size: .85rem;
  border: 1px solid var(--color-border-tertiary, var(--line)); border-radius: var(--radius-sm);
}
@media (max-width: 700px) {
  .tcm-classic { grid-template-columns: 1fr; gap: .15rem; }
  .tcm-classic-theme { color: var(--color-text-tertiary, #8a8a8a); }
}
.tcm-classic-name { font-weight: 700; }
.tcm-classic-part { font-size: .78rem; color: var(--color-text-tertiary, #8a8a8a); }
.tcm-classic-role { line-height: 1.65; }
.tcm-classic-theme { font-size: .76rem; color: var(--color-accent, #8a5a2b); white-space: nowrap; }

/* ---------- 就医红旗 ---------- */
.tcm-redflag-card { border-color: rgba(178, 60, 46, .35); }
.tcm-redflag { margin: .4rem 0 .5rem; padding-left: 1.15rem; font-size: .85rem; line-height: 1.8; }
.tcm-redflag li::marker { color: #b23c2e; }

/* ---------- 家人健康早备 ---------- */
.tcm-family-login { text-align: center; padding: .8rem 0; }
.tcm-family-list { list-style: none; margin: .5rem 0; padding: 0; }
.tcm-family-item {
  display: flex; align-items: center; gap: .6rem; flex-wrap: wrap;
  padding: .5rem .7rem; border: 1px solid var(--color-border-tertiary, var(--line));
  border-radius: var(--radius-sm); margin-bottom: .4rem;
}
.tcm-family-main { display: flex; align-items: baseline; gap: .5rem; flex-wrap: wrap; }
.tcm-family-rel { font-size: .78rem; color: var(--color-accent, #8a5a2b); }
.tcm-family-birth { font-size: .78rem; color: var(--color-text-tertiary, #8a8a8a); }
.tcm-family-ops { margin-left: auto; display: flex; gap: .35rem; }
.tcm-family-add { margin-top: .6rem; }
.tcm-family-add > summary { cursor: pointer; font-size: .88rem; padding: .3rem 0; color: var(--color-accent, #8a5a2b); }

.tcm-form { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: .6rem; margin-top: .5rem; }
.tcm-field { display: flex; flex-direction: column; gap: .2rem; }
.tcm-field label { font-size: .78rem; color: var(--color-text-secondary, #5b5347); }
.tcm-field label i { font-style: normal; color: #b23c2e; font-size: .72rem; }
.tcm-field input, .tcm-field select {
  padding: .38rem .5rem; font: inherit; font-size: .85rem;
  border: 1px solid var(--color-border-secondary, var(--line)); border-radius: 7px;
  background: var(--color-background-primary, #fff); color: inherit;
}
.tcm-field input:focus, .tcm-field select:focus { outline: 2px solid rgba(138, 90, 43, .35); outline-offset: 1px; }
.tcm-form-actions { grid-column: 1 / -1; display: flex; align-items: center; gap: .6rem; }
.tcm-form-msg { grid-column: 1 / -1; margin: 0; font-size: .82rem; }
.tcm-form-msg.is-error { color: #b23c2e; }
.tcm-form-msg.is-ok { color: #3f7a4a; }

/* ---------- 大运简报 ---------- */
.tcm-brief { margin-top: .8rem; border-top: 2px solid var(--color-accent, #8a5a2b); padding-top: .7rem; }
.tcm-brief-head h4 { margin: 0 0 .15rem; font-size: 1.05rem; }
.tcm-brief-head p { margin: 0 0 .5rem; }
.tcm-brief-cols { display: grid; grid-template-columns: 1fr 1fr; gap: .9rem; }
@media (max-width: 700px) { .tcm-brief-cols { grid-template-columns: 1fr; } }
.tcm-brief-col h5 { margin: .6rem 0 .25rem; font-size: .88rem; color: var(--color-accent, #8a5a2b); }
.tcm-brief-col h5:first-child { margin-top: 0; }
.tcm-brief-col p { margin: .15rem 0; font-size: .85rem; line-height: 1.7; }
.tcm-brief-step {
  border: 1px solid var(--color-border-tertiary, var(--line));
  border-radius: 10px; padding: .6rem .75rem; margin-bottom: .6rem;
}
.tcm-brief-step.is-current { border-color: var(--color-accent, #8a5a2b); background: rgba(138, 90, 43, .06); }
.tcm-brief-step h5 { margin: 0 0 .3rem; font-size: .9rem; display: flex; align-items: baseline; gap: .4rem; flex-wrap: wrap; }
.tcm-brief-step h5 em { font-style: normal; font-size: .74rem; color: var(--color-text-tertiary, #8a8a8a); font-weight: 400; }
.tcm-brief-label { font-weight: 600; font-size: .88rem; margin: .2rem 0; }
.tcm-brief-org { font-size: .8rem; color: var(--color-text-secondary, #5b5347); margin: .15rem 0; }
.tcm-brief-reason { font-size: .82rem; line-height: 1.7; color: var(--color-text-secondary, #6b6b6b); margin: .25rem 0; }
.tcm-brief-h5 { margin: 1rem 0 .2rem; font-size: .88rem; color: var(--color-accent, #8a5a2b); }
.tcm-brief-detail { margin-top: .5rem; }
.tcm-brief-detail > summary { cursor: pointer; font-size: .82rem; color: var(--color-accent, #8a5a2b); }
.tcm-brief-notice {
  margin-top: .7rem; padding: .6rem .8rem; border-radius: var(--radius-sm); font-size: .8rem; line-height: 1.75;
  border: 1px solid var(--color-border-warning, #e5c98f);
  background: var(--color-background-warning, var(--gold-soft, #fdf6e6));
}
.tcm-brief-error {
  padding: .7rem .9rem; border-radius: var(--radius-sm); font-size: .85rem;
  border: 1px solid rgba(178, 60, 46, .35); color: #b23c2e;
}

/* ---------- 降级态 ---------- */
.tcm-fallback-note {
  margin: 0 0 14px; padding: 10px 14px; border: 1px dashed rgba(184, 134, 47, .45);
  border-radius: 10px; font-size: 13px; color: #7a5a12;
}
.tcm-hours-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px; }
.tcm-hours-grid .tcm-fb-hour strong { display: block; }
.tcm-hours-grid .tcm-fb-hour span { display: block; font-size: .72rem; color: var(--color-text-tertiary, #8a8a8a); }
.tcm-hours-grid .tcm-fb-hour em { display: block; font-style: normal; font-weight: 600; }
.tcm-hours-grid .tcm-fb-hour p { margin: .25rem 0 0; font-size: .74rem; line-height: 1.5; color: var(--color-text-secondary, #6b6b6b); }

@media print {
  .tcm-bian-body, .tcm-brief-detail { display: block !important; }
  .tcm-family-ops, .tcm-form { display: none !important; }
}

/* ═════════ T16 · WO-1 去粗糙化（2026-09-27）═════════
 * 规范：specs/T16-中医与风水页去粗糙化.md §2.1 / §2.3 / §4。
 * 作用域只有 body[data-page="tcm"]，且**不碰脊柱层**（.tcm-spine / .tcm-hero / .tcm-axis*，T14 已验收）。
 * 所有选择器以 body[data-page="tcm"] 起头，权重高于 tcm.html 内联 <style>（最晚加载但仅 0,1,1）
 * 与本文件既有规则，故为「叠加覆盖」——不删除任何既有声明与注释。
 *
 * 治三件事：
 *   ① 正文声部救回来：字距 2.2px→0.01em、字号→15.5px、行高→1.9、统一到 --sans 一套字族（令牌化）；
 *   ② 消灭窄栏长文：章节列宽封顶（正文 ≤38em），原先挤成 2 列的文本栅格一律单列铺满；
 *   ③ 章节层级升一级：真实 h2 + 可见分隔装置 + 唯一新增动效（进视口 fade，reduced-motion 全关）。
 */

/* ── 排版令牌（锁定，§2.3；字号字距一律走令牌，不散落硬编码）── */
body[data-page="tcm"] {
  --tcm-body-family: var(--sans, "Microsoft YaHei", "PingFang SC", sans-serif);
  --tcm-body-size: 15.5px;   /* 正文声部 15~16px */
  --tcm-body-ls: 0.01em;     /* 字距归零：0~0.02em（原 2.2px 是标题字距，放长文上摧毁可读性）*/
  --tcm-body-lh: 1.9;        /* 行高 1.85~1.95 */
  --tcm-measure: 50em;       /* 正文最大行宽（T17：38em→50em，主栏不再压窄） */
  --tcm-col: none;           /* T17：章节列宽不再封顶，铺满两栏外壳的正文主栏（1440 视口实测 816px） */
  --tcm-accent-soft: rgba(138, 90, 43, .35);
}

/* ── ① 正文声部：一套字族 + 字距归零 ── */
body[data-page="tcm"] .tcm-chapter,
body[data-page="tcm"] .tcm-section {
  font-family: var(--tcm-body-family);
  font-size: var(--tcm-body-size);
  letter-spacing: var(--tcm-body-ls);
  line-height: var(--tcm-body-lh);
  color: var(--tcm-ink, #2a2723);
}
/* 长文元素统一提到正文声部（覆盖既有 .74~.92rem 的小字与 normal 之外的字距）*/
body[data-page="tcm"] .tcm-section p,
body[data-page="tcm"] .tcm-card p,
body[data-page="tcm"] .tcm-section .tcm-card > p,
body[data-page="tcm"] .tcm-dim,
body[data-page="tcm"] .tcm-lede,
body[data-page="tcm"] .tcm-layer p,
body[data-page="tcm"] .tcm-layer ul,
body[data-page="tcm"] .tcm-season dl,
body[data-page="tcm"] .tcm-season dd,
body[data-page="tcm"] .tcm-classic-role,
body[data-page="tcm"] .tcm-bian-side ul,
body[data-page="tcm"] .tcm-bian-side p,
body[data-page="tcm"] .tcm-prep-dim ul,
body[data-page="tcm"] .tcm-kb,
body[data-page="tcm"] .tcm-redflag,
body[data-page="tcm"] .tizhi-box,
body[data-page="tcm"] .tcm-brief-col p,
body[data-page="tcm"] .tcm-brief-reason,
body[data-page="tcm"] .tcm-brief-org {
  font-family: var(--tcm-body-family);
  font-size: var(--tcm-body-size);
  letter-spacing: var(--tcm-body-ls);
  line-height: var(--tcm-body-lh);
}
/* 正文段落行宽封顶 38em */
body[data-page="tcm"] .tcm-section p,
body[data-page="tcm"] .tcm-dim,
body[data-page="tcm"] .tcm-lede,
body[data-page="tcm"] .tcm-chapter-lede { max-width: var(--tcm-measure); }

/* 免责带是合规文本：只加强可读性（字号↑），文字内容在 HTML 里只增不减。
 * T17：max-width 40rem（640px）→ 与两栏外壳同宽（1168px），消灭主控 width_diag 抓到的 640px 空洞。 */
body[data-page="tcm"] .tcm-disclaimer-band {
  max-width: calc(var(--tcm-shell) - 2rem); margin-inline: auto;
  font-family: var(--tcm-body-family);
  font-size: .95rem; line-height: 1.85; letter-spacing: var(--tcm-body-ls);
}

/* ── ② 章节列宽 + 文本栅格单列（消灭 265~308px 窄栏长文）── */
body[data-page="tcm"] .tcm-section { max-width: var(--tcm-col); }
body[data-page="tcm"] .tcm-chapter .tcm-section { max-width: none; margin: 0 0 1.7rem; padding: 0; }
/* 下列栅格原在 720px 列里挤成 2 列（每列约 300px）装长文 → 一律单列，铺满 568px 阅读宽 */
body[data-page="tcm"] .tcm-layers,
body[data-page="tcm"] .tcm-season-grid,
body[data-page="tcm"] .tcm-grid,
body[data-page="tcm"] .tcm-bian-body,
body[data-page="tcm"] .tcm-brief-cols { grid-template-columns: 1fr; }
/* 五部经典：原 4 列把 role 压到 265px / 19.5 字每行（全页最窄）→ 改竖排，role 铺满整行 */
body[data-page="tcm"] .tcm-classic { display: block; padding: .6rem .75rem; }
body[data-page="tcm"] .tcm-classic-name { display: inline; font-size: 1rem; font-weight: 700; }
body[data-page="tcm"] .tcm-classic-part { display: inline; margin-left: .5rem; font-size: .82rem; color: var(--tcm-muted, #928a7b); }
body[data-page="tcm"] .tcm-classic-role { display: block; margin: .3rem 0; }
body[data-page="tcm"] .tcm-classic-theme { display: inline; font-size: .82rem; white-space: normal; }

/* ── ③ 章节层级：h2 + 可见分隔装置 ── */
body[data-page="tcm"] .tcm-chapter {
  position: relative; max-width: var(--tcm-col);
  margin: 2.6rem auto 0; padding: 2.3rem 1rem 0;
  border-top: 1px solid var(--tcm-line, #d9d1c0);
}
body[data-page="tcm"] .tcm-chapter:first-child { margin-top: 1.6rem; }
/* 分隔装置：骑在分隔线正中的赭蜜小Tab，让近万px 长页有「目录感」*/
body[data-page="tcm"] .tcm-chapter::before {
  content: ""; position: absolute; top: -1px; left: 50%; transform: translateX(-50%);
  width: 46px; height: 3px; background: var(--color-accent, #8a5a2b); border-radius: 0 0 3px 3px;
}
body[data-page="tcm"] .tcm-chapter-title {
  display: flex; align-items: baseline; gap: .7rem; flex-wrap: wrap;
  margin: 0 0 .55rem; font-family: var(--tcm-display, var(--serif));
  font-weight: 700; font-size: 1.5rem; line-height: 1.3; letter-spacing: .04em;
  color: var(--tcm-ink, #2a2723);
}
body[data-page="tcm"] .tcm-chapter-no {
  flex: none; font-size: .92rem; font-weight: 600; letter-spacing: .12em;
  color: var(--color-accent, #8a5a2b);
  border: 1px solid var(--tcm-accent-soft); border-radius: 999px; padding: .05rem .6rem;
}
body[data-page="tcm"] .tcm-chapter-title small {
  font-family: var(--tcm-body-family); font-weight: 400; font-size: .82rem;
  letter-spacing: .06em; color: var(--tcm-muted, #928a7b);
}
body[data-page="tcm"] .tcm-chapter-lede {
  margin: 0 0 1.5rem; padding-left: .85rem;
  border-left: 2px solid var(--tcm-accent-soft);
  font-size: var(--tcm-body-size); line-height: var(--tcm-body-lh); letter-spacing: var(--tcm-body-ls);
  color: var(--tcm-ink-2, #565048);
}
body[data-page="tcm"] .tcm-lede { margin: 0 0 .7rem; color: var(--tcm-ink-2, #565048); }

/* h1 提到 display 声部 ≥32px（原内联 1.7rem≈27.2px，比 hero 102px 弱太多）；hero 大字不动 */
body[data-page="tcm"] .tcm-tool-head h1 {
  font-family: var(--tcm-display, var(--serif));
  font-size: clamp(2rem, 4.5vw, 2.4rem);  /* 下限 32px、桌面 38.4px，恒 ≥32px */
  font-weight: 700; letter-spacing: .1em; text-indent: .1em;
}

/* ── 唯一新增动效：章节区块进视口 fade + translateY(6px)（§2.1）──
 * 反向揭示（默认可见）：区块平时就是 opacity 1，只有当它滚进视口、tcm.js 经 IntersectionObserver
 * 给它加上 .is-inview 时，才播放一次性 fade-in。这样做同时满足两条硬要求——
 *   ① 真实用户滚动时看得到「进视口 fade」；IO 回调在 paint 前触发，不会先闪一下再淡入；
 *   ② 自动化全页截图（full_page 不滚动 → IO 不触发）时区块仍是默认可见态，绝不空白；
 *   ③ 无 JS / 不支持 IO / prefers-reduced-motion → 不加 .tcm-motion，无动画、恒可见。*/
@keyframes tcm-reveal-in { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
body[data-page="tcm"].tcm-motion .tcm-reveal.is-inview { animation: tcm-reveal-in .6s var(--tcm-ease, ease) both; }
@media (prefers-reduced-motion: reduce) {
  body[data-page="tcm"].tcm-motion .tcm-reveal.is-inview { animation: none; }
}

/* ═════════ T17 · 宽屏两栏修正（2026-09-27）═════════
 * 规范：specs/T17-中医页宽屏修正-主控勘误.md §3.2。
 * 病灶：T16 只写了排版与内容量，漏写宽屏多栏布局 → 1240px 的 main 里只有一根 568px 的柱子。
 * 处方：#tcm-result 与 sticky 侧栏并成两栏；外壳 1200px（内容 1168px），
 *       于是 1440 视口下 main 的每一条内容行都在 1136~1240px（对 main 1240 的覆盖率 ≥91%）。
 * 不碰：.tcm-spine / .tcm-hero / .tcm-axis*（T14 已验收，一格不动）。
 * 色板：仍只有赭蜜一支彩色，全部走既有令牌。
 */
body[data-page="tcm"] {
  --tcm-shell: 1200px;   /* 两栏外壳；main 1240 → 顶层块覆盖率 97% */
  --tcm-side-w: 20rem;   /* 侧栏 320px */
  --tcm-gap: 2rem;       /* 主栏与侧栏间距 32px；1440 视口下主栏实测 816px */
}

/* 免责带 / 症状自查 / 两栏外壳统一对齐到 1168px 内容宽，消灭主控抓到的两处 max-width 硬顶空洞。
 * #tcm-checkup 的定义在 tcm-checkup.css（本轮禁改），此处用 body[data-page] 提高权重覆盖其 720px。 */
body[data-page="tcm"] #tcm-checkup { max-width: var(--tcm-shell); }

.tcm-body { max-width: var(--tcm-shell); margin: 0 auto; padding: 0 1rem; }
.tcm-main { min-width: 0; }

/* 章节/小节锚点跳转要避开 sticky 头部 */
body[data-page="tcm"] .tcm-chapter,
body[data-page="tcm"] .tcm-section { scroll-margin-top: calc(var(--header-h, 68px) + 14px); }

/* ── 侧栏 ──
 * 折叠条用 <button> 而不是 <details>：Chromium 的 details 内容盒（::details-content）不吃
 * height:100%，sticky 子元素的包含块只有内容那么高 → 没有行程可走，实测完全不粘。 */
.tcm-side { min-width: 0; }
.tcm-side-fold { margin: 0 0 1.4rem; }
.tcm-side-toggle {
  display: block; width: 100%; cursor: pointer; text-align: left; font: inherit;
  padding: .6rem .85rem; border: 1px solid var(--tcm-line, #d9d1c0); border-radius: 10px;
  font-family: var(--tcm-display, var(--serif)); font-size: .9rem; letter-spacing: .12em;
  color: var(--tcm-ink, #2a2723); background: var(--tcm-honey-soft, rgba(138, 90, 43, .08));
}
.tcm-side-toggle::before { content: "▸ "; color: var(--color-accent, #8a5a2b); }
.tcm-side-toggle[aria-expanded="true"]::before { content: "▾ "; }
.tcm-side-stick { display: flex; flex-direction: column; gap: 1.15rem; padding-top: .2rem; }
.tcm-side-stick[hidden] { display: none; }

/* ① 本页目录 */
.tcm-toc { border-top: 2px solid var(--color-accent, #8a5a2b); padding-top: .7rem; }
.tcm-toc-title {
  margin: 0 0 .55rem; font-family: var(--tcm-display, var(--serif));
  font-weight: 600; font-size: .84rem; letter-spacing: .28em; color: var(--tcm-ink, #2a2723);
}
.tcm-toc ol { list-style: none; margin: 0; padding: 0; }
.tcm-toc li { margin: 0; }
.tcm-toc a {
  display: block; padding: .24rem 0 .24rem .7rem; border-left: 2px solid var(--tcm-line, #d9d1c0);
  font-size: .82rem; line-height: 1.55; letter-spacing: .02em; color: var(--tcm-ink-2, #565048);
  text-decoration: none; transition: color .18s, border-color .18s;
}
.tcm-toc a:hover { color: var(--color-accent, #8a5a2b); border-left-color: var(--tcm-accent-soft, rgba(138, 90, 43, .35)); }
.tcm-toc .tcm-toc-ch > a {
  font-family: var(--tcm-display, var(--serif)); font-weight: 600; font-size: .88rem;
  letter-spacing: .1em; color: var(--tcm-ink, #2a2723); margin-top: .45rem;
}
.tcm-toc .tcm-toc-ch:first-child > a { margin-top: 0; }
.tcm-toc .tcm-toc-sub { padding-left: .55rem; }
.tcm-toc a.is-current {
  color: var(--color-accent, #8a5a2b); border-left-color: var(--color-accent, #8a5a2b); font-weight: 600;
}
.tcm-toc .tcm-toc-ch > a.is-ch { color: var(--color-accent, #8a5a2b); border-left-color: var(--tcm-accent-soft, rgba(138, 90, 43, .35)); }

/* ② 当前时辰要点（数据取自十二时辰轴的 .is-now 那一格，不另算一份） */
.tcm-side-now {
  border: 1px solid var(--tcm-accent-soft, rgba(138, 90, 43, .35)); border-radius: 10px;
  padding: .7rem .8rem; background: var(--tcm-honey-soft, rgba(138, 90, 43, .08));
}
.tcm-side-now-h {
  display: flex; align-items: baseline; justify-content: space-between; gap: .5rem;
  margin: 0 0 .35rem; font-size: .7rem; letter-spacing: .22em; color: var(--tcm-muted, #928a7b);
}
.tcm-side-now-zhi {
  font-family: var(--tcm-display, var(--serif)); font-weight: 700; font-size: 1.5rem;
  letter-spacing: .08em; color: var(--color-accent, #8a5a2b); line-height: 1.2;
}
.tcm-side-now-jing { margin: .1rem 0 .4rem; font-size: .86rem; font-weight: 600; color: var(--tcm-ink, #2a2723); }
.tcm-side-now-note {
  margin: 0; font-size: .78rem; line-height: 1.75; color: var(--tcm-ink-2, #565048);
  display: -webkit-box; -webkit-line-clamp: 6; -webkit-box-orient: vertical; overflow: hidden;
}
.tcm-side-now-span { font-variant-numeric: tabular-nums; letter-spacing: .04em; }

/* ③ 免责速览（一句版；完整免责带仍在正文原位） */
.tcm-side-note {
  margin: 0; padding: .6rem .75rem; border-left: 2px solid var(--tcm-accent-soft, rgba(138, 90, 43, .35));
  font-size: .76rem; line-height: 1.75; color: var(--tcm-muted, #928a7b);
}
.tcm-side-note a { color: var(--color-accent, #8a5a2b); }

/* ── ≥1100px：两栏并排 + 侧栏 sticky ── */
@media (min-width: 1100px) {
  .tcm-body {
    display: grid; grid-template-columns: minmax(0, 1fr) var(--tcm-side-w);
    gap: var(--tcm-gap); align-items: start;
  }
  .tcm-main { grid-column: 1; grid-row: 1; }
  /* stretch 让侧栏撑满整行高度，sticky 才有行程可走 */
  .tcm-side { grid-column: 2; grid-row: 1; align-self: stretch; }
  /* 折叠壳必须跟着撑满整行高度，否则它只有内容那么高，sticky 子元素没有可滑动的余量 */
  .tcm-side-fold { height: 100%; margin-bottom: 0; }
  .tcm-side-toggle { display: none; }
  .tcm-side-stick {
    position: sticky; top: calc(var(--header-h, 68px) + 1.1rem); padding-top: 0;
    max-height: calc(100vh - var(--header-h, 68px) - 2.2rem); overflow-y: auto; overscroll-behavior: contain;
    scrollbar-width: thin;
  }
}

/* ── <1100px：侧栏收成一条折叠按钮，落在正文上方，绝不横向溢出 ── */
@media (max-width: 1099px) {
  .tcm-side-stick { padding-top: .7rem; }
  .tcm-toc { border-top-width: 1px; }
}

@media print {
  .tcm-side { display: none !important; }
  .tcm-body { display: block; max-width: none; }
}

/* ═════════ T20 · W2 移动端版式（≤860px，桌面零变化）═════════
 * 规范：specs/T20-移动端瘦身W1W2.md §3。不删内容、不藏章节、不动 tcm.html / tcm.js。
 * 全部选择器以 body[data-page="tcm"] 起头（与本文件 T16/T17 同法）：tcm.html 内联 <style>
 * 在 tcm.css 之后加载，(0,1,0) 的 .tcm-card / .tcm-section 靠先后压不住，必须抬权重。
 *
 * 真因是「宽度被逐层盒子吃掉」：main 374 → .tcm-body 338 → .tcm-chapter 306 →
 * .tcm-bian-side 252，15.5px 字配 1.9 行高 → 15 字/行。所以三条一起动：
 *   ① 消掉逐层 padding（外壳归零，只留视口 8px 边距与卡片自身留白）
 *   ② 行高 1.9 → 1.65
 *   ③ 列表三级 padding-left 收敛为一级（二三级 marker 走 inside，符号一个不少）
 * 字号 15.5 → 14px 不是第四条审美选择，是「每行 ≥24 字」的算术前提：390 视口扣掉
 * 左右边距后可用宽度 ≤374，15.5px 时 374/15.5 = 24.1，再减去任何盒子留白必然 <24；
 * 14px 才给版心留出达到 24 字/行且仍 ≥340px 的余量（详见回报的顶回项）。
 */
@media (max-width: 860px) {
  body[data-page="tcm"] {
    --tcm-body-lh: 1.65;
    --tcm-body-size: 14px;
  }

  /* ① 外壳：把逐层 padding 收回来 */
  body[data-page="tcm"] main { width: min(100% - 16px, 1220px); padding: 12px 0 40px; }
  body[data-page="tcm"] .tcm-body { padding: 0; }
  body[data-page="tcm"] .tcm-chapter { padding: .8rem 0 0; margin-top: 1rem; }
  /* 必须与 tcm.css 里 body[data-page] .tcm-chapter .tcm-section (0,3,1) 同权重，只在后面压不住：
     实测 margin-bottom 停在 1.7rem=27.2px 就是这个规则赢了单类版本。 */
  body[data-page="tcm"] .tcm-chapter .tcm-section { padding: 0; margin: 0 0 .75rem; }
  body[data-page="tcm"] .tcm-chapter-lede { padding-left: .6rem; margin-bottom: .8rem; }
  body[data-page="tcm"] .tcm-chapter-title { font-size: 1.25rem; margin-bottom: .4rem; }
  body[data-page="tcm"] .tcm-card > h3 { margin: .05rem 0 .4rem; }
  /* 上面这条压不住 T16 的 .tcm-section.tcm-derived .tcm-card > h3 (0,2,0)——它才是实际生效的那条；
     同样压不住的还有区块下间距：不在章节里的 .tcm-section.tcm-derived 走 clamp(1.8rem,5vh,2.6rem)，
     390×844 下实测 42.2px 一段，声明/知识库/早备这几段合计 250px+。两条都按赢家权重重写。 */
  body[data-page="tcm"] .tcm-section.tcm-derived .tcm-card > h3 { margin: 0 0 .4rem; }
  body[data-page="tcm"] .tcm-section.tcm-derived { margin-bottom: .75rem; }
  body[data-page="tcm"] .tcm-lede { margin-bottom: .35rem; }
  body[data-page="tcm"] .tcm-dim { margin-bottom: .35rem; }
  body[data-page="tcm"] .tcm-src { margin-top: .3rem; }

  /* ③ 列表：一级不再逐层加缩进 */
  body[data-page="tcm"] ul,
  body[data-page="tcm"] ol { padding-left: 0; list-style-position: inside; }
  body[data-page="tcm"] .tcm-redflag { padding-left: 0; }

  /* ④ 短句条目改流式排（本轮高度的真正大头）
   * 数出来的事实：main 里 625 个行盒只装了 7351 字 → 平均 11.8 字/行。
   * 原因不是行高，是碎片化——自检线索 123 条平均 18.4 字、五维准备 83 条平均 22 字，
   * 每条独占一个块盒，写满半行就换行；再加每条前面的 <b>/<dt> 标签自成一行。
   * 把「一条一块」改成「一条一句、句间分号」的流式段落，同样的字在 25 字/行下少占约四成行。
   * 一字不减、不折叠、不隐藏；桌面端不进气泡，排版与项目符号语义不变。 */
  body[data-page="tcm"] .tcm-bian-side .tcm-bian-lab { display: inline; margin: 0; }
  body[data-page="tcm"] .tcm-bian-side ul,
  body[data-page="tcm"] .tcm-prep-dim ul { display: inline; margin: 0; padding: 0; }
  body[data-page="tcm"] .tcm-bian-side ul > li,
  body[data-page="tcm"] .tcm-prep-dim ul > li { display: inline; }
  body[data-page="tcm"] .tcm-bian-side ul > li + li::before,
  body[data-page="tcm"] .tcm-prep-dim ul > li + li::before {
    content: "；"; color: var(--color-text-tertiary, var(--tcm-muted));
  }
  /* 五维准备：维度名（<b>）与条目本来分占两行，合成「起居：…」一句 */
  body[data-page="tcm"] .tcm-prep-dim { display: inline; margin: 0; }
  body[data-page="tcm"] .tcm-prep-dim + .tcm-prep-dim { margin-left: .5em; }
  body[data-page="tcm"] .tcm-prep-dim b { font-size: inherit; }
  body[data-page="tcm"] .tcm-prep-dim b::after { content: "："; }
  /* 四时养生 dl 同理：dt 标签行与 dd 内容行合一 */
  body[data-page="tcm"] .tcm-season dt,
  body[data-page="tcm"] .tcm-season dd { display: inline; margin: 0; font-size: inherit; }
  body[data-page="tcm"] .tcm-season dt::after { content: "："; }
  body[data-page="tcm"] .tcm-season dd + dt { margin-left: .5em; font-size: inherit; }

  /* ② 卡片内边距收紧，但边框 / 虚线盒 / 分隔线一律留着（卡片之间仍分得开）。
     竖向节奏统一降一档：10 个 .tcm-bian-side、5 个 .tcm-bian-body、5 个展开条、
     10 个 .tcm-prep、10 个 .tcm-section —— 每处 4~8px，合起来才是能省下的一屏量。 */
  body[data-page="tcm"] .tcm-chapter .tcm-section { margin-bottom: .75rem; }
  body[data-page="tcm"] .tcm-tool-head { padding: .9rem .4rem .6rem; }
  body[data-page="tcm"] .tcm-bian { gap: .3rem; }
  body[data-page="tcm"] .tcm-bian-head { padding: .35rem .6rem; }
  body[data-page="tcm"] .tcm-bian-body { padding: .35rem .3rem; gap: .45rem; }
  body[data-page="tcm"] .tcm-bian-side { padding: .35rem .3rem; }
  body[data-page="tcm"] .tcm-bian-lab,
  body[data-page="tcm"] .tcm-bian-org { margin: .15rem 0; }
  body[data-page="tcm"] .tcm-prep { margin-top: .3rem; padding-top: .3rem; }
  body[data-page="tcm"] .tcm-kb { padding: .45rem .55rem; }
  body[data-page="tcm"] .tcm-notice { padding: .55rem .7rem; }
  body[data-page="tcm"] .tcm-layer { padding: .45rem .6rem; }
  body[data-page="tcm"] .tcm-season { padding: .45rem .25rem; }
  /* 四时卡的横向内边距压到 4px：卡内是流式 dt/dd，主控探针按 dd 的实际行盒碎片算字数容量，
     354.8 宽时最短碎片 325px → 23.2 字/行，卡在 24 之下；留出 366 宽后同一条能站上 24。
     竖向内边距不动，卡片边框与五行色签都在。 */
  body[data-page="tcm"] .tcm-layers,
  body[data-page="tcm"] .tcm-season-grid,
  body[data-page="tcm"] .tcm-grid,
  body[data-page="tcm"] .tcm-brief-cols { gap: .5rem; }
  body[data-page="tcm"] .tcm-keys { line-height: 1.6; }
  body[data-page="tcm"] .tcm-classic { padding: .5rem .55rem; }
  body[data-page="tcm"] .tcm-brief-step { padding: .5rem .6rem; margin-bottom: .45rem; }
  body[data-page="tcm"] .tizhi-box { padding: .45rem .6rem; }

  /* ⑤ 应象总表：60 个 td 各带 6.08px×2 的竖向 padding，是表格高度的主要附加项。
     横向不动（nowrap + 横向滚动条是 T14 验收过的读法）。 */
  body[data-page="tcm"] .tcm-table td,
  body[data-page="tcm"] .tcm-table th { padding: .2rem .35rem; }

  /* ⑥ 字级收口（沿用 T33 的 V5 口径：移动端字级 ⊆ 整数集且不低于 12px）。
     线上 390px 实测 main 内 47 处 <12px，大头是十二时辰流注表：
     .tcm-ht .6rem=9.6px ×11、.tcm-hj .62rem=9.92px ×11（≤900 那条还把 hj 从 .68rem 往下调）。
     这些是 rem 折算出来的小数字号，不在任何整数档上；桌面端同一批数字可读是因为格宽更大，
     不是字号够——所以只收移动端这一档，桌面保持原样。 */
  body[data-page="tcm"] .tcm-ht,
  body[data-page="tcm"] .tcm-hour.is-now .tcm-ht { font-size: 12px; }
  body[data-page="tcm"] .tcm-hj,
  body[data-page="tcm"] .tcm-hour.is-now .tcm-hj { font-size: 12px; }
  body[data-page="tcm"] .tcm-axis-foot { font-size: 12px; }
  body[data-page="tcm"] .tcm-seal { font-size: 12px; }
  body[data-page="tcm"] .tcm-derived .tcm-chip .tc-label { font-size: 12px; }
  body[data-page="tcm"] .tcm-kb-src,
  body[data-page="tcm"] .tcm-src,
  body[data-page="tcm"] .tcm-badge { font-size: 12px; }
  /* 第二轮：剩下的不是元素自己的小数字号，就是 .72/.68/.74rem 这类
     挂在 small / em 上的副标签，量到 7 处，逐个点名而不是给全站设下限。 */
  body[data-page="tcm"] .tcm-season-head em,
  body[data-page="tcm"] .tcm-dangling small,
  body[data-page="tcm"] .tcm-sec-title small { font-size: 12px; }
  /* 第三轮（2026-10-04，V5 探针抓到）：十二时辰降级卡 .tcm-hours-grid 是 tcm.js 现建的，
     前两轮都在静态 HTML 里量，所以这 12 张卡的时辰区间（"23:00-01:00"，.72rem=11.52px）
     一直没进视野。同组件的 p（.74rem=11.84px）一并收，虽然这次没量到它有 p 的卡。 */
  body[data-page="tcm"] .tcm-hours-grid .tcm-fb-hour span,
  body[data-page="tcm"] .tcm-hours-grid .tcm-fb-hour p { font-size: 12px; } /* V5-RAISE-5 */
}
