/* ============================================================
   内藏经 · neizang.cn — 全站样式（原型）
   转 WordPress 时对应 assets/css/neizang.css
   设计令牌均以 --seed- 开头，供主题定制与 Nudge 调整
   ============================================================ */

/* ---------- 1. 设计令牌 ---------- */
:root {
  /* 种子令牌 */
  --seed-bg: #F7F5F0;          /* 宣纸白 */
  --seed-surface: #FAF9F6;     /* 浅宣 */
  --seed-fg: #1A1A1A;          /* 墨色 */
  --seed-primary: #9E1B1B;     /* 朱砂印 */
  --seed-accent: #C5960C;      /* 金粟 */
  --seed-radius: 6px;

  /* 中性色 */
  --ink: var(--seed-fg);
  --ink-2: color-mix(in srgb, var(--seed-fg) 72%, var(--seed-bg));            /* 淡墨（派生）*/
  --ink-3: color-mix(in srgb, var(--seed-fg) 48%, var(--seed-bg));            /* 灰墨（派生）*/
  --paper: var(--seed-bg);
  --paper-soft: var(--seed-surface);
  --paper-deep: color-mix(in srgb, var(--seed-bg) 82%, var(--seed-accent) 18%);       /* 深宣（派生）*/
  --line: color-mix(in srgb, var(--seed-fg) 10%, transparent);       /* 古籍栏线 */
  --line-soft: color-mix(in srgb, var(--seed-fg) 7%, transparent);
  --line-strong: color-mix(in srgb, var(--seed-fg) 28%, transparent);

  /* 五行主色 */
  --wx-wood: #2E7D32;   /* 木·苍青 */
  --wx-fire: #C0392B;   /* 火·朱砂 */
  --wx-earth: #C5960C;  /* 土·金粟 */
  --wx-metal: #A89F8F;  /* 金·月白系深描（原文 #E8E4DE 用于底色）*/
  --wx-metal-pale: #E8E4DE;
  --wx-water: #1A1A2E;  /* 水·玄墨 */

  /* 五行浅底（自动派生） */
  --wx-wood-soft: color-mix(in srgb, var(--wx-wood) 8%, var(--seed-surface));
  --wx-fire-soft: color-mix(in srgb, var(--wx-fire) 8%, var(--seed-surface));
  --wx-earth-soft: color-mix(in srgb, var(--wx-earth) 8%, var(--seed-surface));
  --wx-metal-soft: color-mix(in srgb, var(--wx-metal-pale) 55%, var(--seed-surface));
  --wx-water-soft: color-mix(in srgb, var(--wx-water) 6%, var(--seed-surface));

  /* 语义色 */
  --ok: #2E7D32;
  --warn: #C5960C;
  --bad: #C0392B;
  --info: #4A4A4A;

  /* 按钮 */
  --primary-btn: var(--seed-primary);
  --primary-btn-hover: color-mix(in srgb, var(--seed-primary) 82%, #fff);

  /* 字体 */
  --font-serif: "Noto Serif SC", "Songti SC", "STSong", SimSun, serif;
  --font-sans: "Noto Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif;
  --font-brush: "Ma Shan Zheng", "Noto Serif SC", cursive, serif;
  --font-mono: "JetBrains Mono", ui-monospace, Consolas, monospace;

  /* 布局 */
  --container: 1100px;
  --gap-card: 20px;
  --section-gap: 60px;
  --gutter: 40px;

  /* 阴影（宣纸上的墨晕，克制） */
  --shadow-card: 0 4px 16px rgba(26, 26, 26, 0.06);
  --shadow-hover: 0 10px 28px rgba(26, 26, 26, 0.10);
  --shadow-seal: 0 2px 8px rgba(158, 27, 27, 0.25);
}

/* 五行语境类：卡片/标签加 wx-fire 等即可获得对应色 */
.wx-wood  { --wx: var(--wx-wood);  --wx-soft: var(--wx-wood-soft); }
.wx-fire  { --wx: var(--wx-fire);  --wx-soft: var(--wx-fire-soft); }
.wx-earth { --wx: var(--wx-earth); --wx-soft: var(--wx-earth-soft); }
.wx-metal { --wx: var(--wx-metal); --wx-soft: var(--wx-metal-soft); }
.wx-water { --wx: var(--wx-water); --wx-soft: var(--wx-water-soft); }

/* ---------- 2. 基础 ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
  margin: 0;
  font-family: var(--font-sans);
  font-size: 1rem;
  line-height: 1.8;
  color: var(--ink);
  background: var(--paper);
  position: relative;
}
/* 宣纸纤维质感 */
body::before {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 0;
  opacity: 0.35;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3CfeColorMatrix values='0 0 0 0 0.62 0 0 0 0 0.58 0 0 0 0 0.52 0 0 0 0.05 0'/%3E%3C/filter%3E%3Crect width='240' height='240' filter='url(%23n)'/%3E%3C/svg%3E");
}
main, header, footer { position: relative; z-index: 1; }
img { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; }
ul, ol { margin: 0; padding: 0; list-style: none; }
table { border-collapse: collapse; width: 100%; }
::selection { background: color-mix(in srgb, var(--seed-primary) 18%, transparent); }

/* ---------- 3. 字体层级 ---------- */
h1, h2, h3, h4 { font-family: var(--font-serif); margin: 0; }
.h1, h1 { font-size: 2.5rem; font-weight: 700; line-height: 1.4; }
.h2, h2 { font-size: 1.8rem; font-weight: 700; line-height: 1.4; }
.h3, h3 { font-size: 1.3rem; font-weight: 600; line-height: 1.5; }
.h4, h4 { font-size: 1.1rem; font-weight: 600; line-height: 1.5; }
.brush { font-family: var(--font-brush); font-weight: 400; line-height: 1.2; }
.num, .mono { font-family: var(--font-mono); font-size: 0.9rem; }
.text-2 { color: var(--ink-2); }
.text-3 { color: var(--ink-3); }
.small { font-size: 0.9rem; line-height: 1.6; }
.tiny  { font-size: 0.8rem; line-height: 1.5; }

/* ---------- 4. 布局 ---------- */
.container { max-width: var(--container); margin: 0 auto; padding: 0 var(--gutter); }
.section { margin-top: var(--section-gap); margin-bottom: var(--section-gap); }
.section-head { text-align: center; margin-bottom: 36px; }
.section-head .kicker {
  font-size: 0.85rem; letter-spacing: 6px; color: var(--ink-3);
  margin-bottom: 10px;
}
.section-head h2 { letter-spacing: 4px; }
.section-head .sub {
  margin-top: 10px; color: var(--ink-2); font-size: 1rem; letter-spacing: 2px;
}
.section-head .rule {
  width: 44px; height: 2px; background: var(--seed-primary);
  margin: 18px auto 0;
}
.grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--gap-card); }
.grid-2 { display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--gap-card); }
.grid-5 { display: grid; grid-template-columns: repeat(5, 1fr); gap: var(--gap-card); }
.grid-4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--gap-card); }
.more-link {
  display: inline-flex; align-items: center; gap: 8px;
  margin-top: 28px; font-family: var(--font-serif); font-size: 1rem;
  color: var(--seed-primary); letter-spacing: 2px;
}
.more-link .arr { transition: transform 0.25s ease; }
.more-link:hover .arr { transform: translateX(5px); }
.center { text-align: center; }

/* ---------- 5. 头部导航 ---------- */
.site-header {
  position: sticky; top: 0; z-index: 100;
  background: color-mix(in srgb, var(--paper) 88%, transparent);
  backdrop-filter: blur(10px);
  border-bottom: 1px solid var(--line);
}
.nav-inner {
  max-width: var(--container); margin: 0 auto;
  padding: 0 var(--gutter);
  height: 64px;
  display: flex; align-items: center; justify-content: space-between; gap: 24px;
}
.brand { display: inline-flex; align-items: center; gap: 10px; }
.brand .brand-name {
  font-family: var(--font-serif); font-weight: 700; font-size: 1.25rem;
  letter-spacing: 6px;
}
.nav-links { display: flex; align-items: center; gap: 6px; }
.nav-links a {
  font-size: 0.95rem; color: var(--ink-2); letter-spacing: 2px;
  padding: 8px 14px; border-radius: 4px; position: relative;
  transition: color 0.2s;
}
.nav-links a:hover { color: var(--ink); }
.nav-links a.current { color: var(--seed-primary); font-weight: 500; }
.nav-links a.current::after {
  content: ""; position: absolute; left: 14px; right: 14px; bottom: 2px;
  height: 2px; background: var(--seed-primary); border-radius: 2px;
}
.nav-search-btn {
  border: 1px solid var(--line-soft); background: transparent;
  color: var(--ink-2); border-radius: 20px; padding: 6px 14px;
  font-size: 0.85rem; cursor: pointer; display: inline-flex; gap: 6px; align-items: center;
  font-family: var(--font-sans);
}
.nav-search-btn:hover { border-color: var(--seed-primary); color: var(--seed-primary); }
.nav-toggle { display: none; }
.nav-burger {
  display: none; width: 40px; height: 40px; border: 1px solid var(--line-soft);
  border-radius: 4px; background: transparent; cursor: pointer;
  align-items: center; justify-content: center; flex-direction: column; gap: 5px;
}
.nav-burger span { display: block; width: 18px; height: 2px; background: var(--ink); transition: 0.25s; }
.nav-toggle:checked ~ .nav-burger span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.nav-toggle:checked ~ .nav-burger span:nth-child(2) { opacity: 0; }
.nav-toggle:checked ~ .nav-burger span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

/* 印章 Logo（SVG 组件通用类） */
.seal {
  display: inline-flex; align-items: center; justify-content: center;
  background: var(--seed-primary); color: #FDFBF7;
  border-radius: 5px; box-shadow: var(--shadow-seal);
  font-family: var(--font-serif); font-weight: 700;
  position: relative;
}
.seal::after {
  content: ""; position: absolute; inset: 3px;
  border: 1px solid rgba(253, 251, 247, 0.55); border-radius: 3px;
}
.seal-sm { width: 34px; height: 34px; font-size: 1.05rem; }
.seal-md { width: 64px; height: 64px; font-size: 2rem; }
.seal-lg { width: 100px; height: 100px; font-size: 3.2rem; }

/* ---------- 6. 按钮 ---------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  font-family: var(--font-sans); font-size: 0.95rem; letter-spacing: 3px;
  padding: 11px 28px; border-radius: 4px; border: 1px solid transparent;
  cursor: pointer; transition: all 0.22s ease; text-decoration: none;
}
.btn-primary { background: var(--primary-btn); color: var(--seed-bg); }
.btn-primary:hover { background: var(--primary-btn-hover); transform: translateY(-1px); box-shadow: var(--shadow-seal); }
.btn-ghost { background: transparent; color: var(--ink); border-color: var(--line-strong); }
.btn-ghost:hover { border-color: var(--ink); }
.btn-sm { padding: 7px 18px; font-size: 0.85rem; }

/* ---------- 7. 标签 / 五行圆点 ---------- */
.tag {
  display: inline-flex; align-items: center; gap: 5px;
  font-size: 0.78rem; letter-spacing: 1px; line-height: 1;
  padding: 5px 12px; border-radius: 20px;
  background: var(--wx-soft, var(--paper-deep));
  color: var(--wx, var(--ink-2));
}
.tag .dot {
  width: 8px; height: 8px; border-radius: 50%;
  background: var(--wx, var(--ink-3));
}
.tag-plain { background: var(--paper-deep); color: var(--ink-2); }

/* ---------- 8. 卡片 ---------- */
.card {
  background: var(--paper-soft);
  border: 1px solid var(--line-soft);
  border-radius: var(--seed-radius);
  overflow: hidden;
  transition: transform 0.25s ease, box-shadow 0.25s ease;
  display: flex; flex-direction: column;
}
.card:hover { transform: translateY(-4px); box-shadow: var(--shadow-hover); }
.card-media { position: relative; aspect-ratio: 16 / 9; overflow: hidden; background: var(--paper-deep); }
.card-media img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.5s ease; }
.card:hover .card-media img { transform: scale(1.04); }
.card-media .corner-dot {
  position: absolute; left: 12px; bottom: 12px;
  width: 10px; height: 10px; border-radius: 50%;
  background: var(--wx, var(--ink-3));
  box-shadow: 0 0 0 3px rgba(250, 249, 246, 0.7);
}
.card-body { padding: 18px 20px 20px; display: flex; flex-direction: column; gap: 8px; flex: 1; }
.card-title {
  font-family: var(--font-serif); font-weight: 600; font-size: 1.15rem;
  letter-spacing: 2px; line-height: 1.4;
}
.card-desc { font-size: 0.9rem; color: var(--ink-2); line-height: 1.7; flex: 1; }
.card-meta { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.card-foot {
  display: flex; justify-content: space-between; align-items: center;
  font-size: 0.8rem; color: var(--ink-3); letter-spacing: 1px;
  border-top: 1px solid var(--line-soft); padding-top: 10px; margin-top: 4px;
}

/* 无图卡片的书法字_medallion */
.medallion {
  display: flex; align-items: center; justify-content: center;
  background:
    radial-gradient(circle at 50% 42%, color-mix(in srgb, var(--wx, var(--ink-2)) 12%, transparent) 0%, transparent 62%),
    var(--wx-soft, var(--paper-deep));
  color: color-mix(in srgb, var(--wx, var(--ink-2)) 78%, var(--ink));
}
.medallion .glyph { font-family: var(--font-brush); font-size: 4rem; line-height: 1; }
.medallion.tall .glyph { font-size: 6rem; }

/* ---------- 9. 面包屑 ---------- */
.breadcrumb {
  font-size: 0.85rem; color: var(--ink-3); letter-spacing: 1px;
  padding: 22px 0 0;
}
.breadcrumb a:hover { color: var(--seed-primary); }
.breadcrumb .sep { margin: 0 10px; color: var(--ink-3); }
.breadcrumb .current { color: var(--ink-2); }

/* ---------- 10. 页首横幅（内页共用） ---------- */
.page-head { padding: 34px 0 8px; }
.page-head h1 { letter-spacing: 8px; }
.page-head .sub {
  margin-top: 12px; color: var(--ink-2); font-size: 1rem; letter-spacing: 3px;
}
.page-head .rule { width: 44px; height: 2px; background: var(--seed-primary); margin-top: 18px; }
.page-head.centered { text-align: center; }
.page-head.centered .rule { margin-left: auto; margin-right: auto; }

/* ---------- 11. 筛选栏 ---------- */
.filter-bar {
  display: flex; flex-wrap: wrap; gap: 10px; align-items: center;
  padding: 26px 0; border-bottom: 1px solid var(--line);
  margin-bottom: 30px;
}
.chip {
  border: 1px solid rgba(0, 0, 0, 0.12); background: transparent;
  color: var(--ink-2); font-size: 0.85rem; letter-spacing: 1px;
  padding: 7px 18px; border-radius: 20px; cursor: pointer;
  font-family: var(--font-sans); transition: all 0.2s;
  display: inline-flex; align-items: center; gap: 6px;
}
.chip:hover { border-color: var(--seed-primary); color: var(--seed-primary); }
.chip.active { background: var(--seed-primary); border-color: var(--seed-primary); color: var(--seed-bg); }
.chip .caret { font-size: 0.7rem; opacity: 0.7; }
.filter-count { margin-left: auto; font-size: 0.8rem; color: var(--ink-3); letter-spacing: 1px; }

/* ---------- 12. 表格 ---------- */
.nz-table {
  border: 1px solid var(--line); border-radius: var(--seed-radius);
  overflow: hidden; background: var(--paper-soft);
  font-size: 0.95rem;
}
.nz-table th {
  background: var(--paper-deep); text-align: left; font-family: var(--font-serif);
  font-weight: 600; letter-spacing: 2px; width: 110px;
}
.nz-table th, .nz-table td { padding: 12px 16px; border-bottom: 1px solid var(--line-soft); vertical-align: top; }
.nz-table tr:last-child th, .nz-table tr:last-child td { border-bottom: none; }
.nz-table td .hl { color: var(--wx, var(--seed-primary)); font-weight: 500; }
.nz-table.data th { width: auto; color: var(--ink-2); font-size: 0.85rem; }

/* ---------- 13. 表单 ---------- */
.field { margin-bottom: 18px; }
.field label {
  display: block; font-size: 0.9rem; color: var(--ink-2);
  letter-spacing: 2px; margin-bottom: 8px;
}
.field label .req { color: var(--seed-primary); margin-left: 2px; }
.input, .select, .textarea {
  width: 100%; font-family: var(--font-sans); font-size: 0.95rem;
  color: var(--ink); background: var(--paper-soft);
  border: 1px solid rgba(0, 0, 0, 0.15); border-radius: 4px;
  padding: 10px 14px; transition: border-color 0.2s, box-shadow 0.2s;
}
.input:focus, .select:focus, .textarea:focus {
  outline: none; border-color: var(--seed-primary);
  box-shadow: 0 0 0 3px rgba(158, 27, 27, 0.1);
}
.textarea { min-height: 140px; resize: vertical; line-height: 1.7; }
.field-error { font-size: 0.85rem; color: var(--bad); margin-top: 6px; display: none; }
.field.invalid .field-error { display: block; }
.field.invalid .input, .field.invalid .textarea { border-color: var(--bad); }

/* ---------- 14. 首页 Hero ---------- */
.hero {
  position: relative; overflow: hidden; text-align: center;
  padding: 84px 0 92px;
  background:
    radial-gradient(ellipse 60% 45% at 50% 0%, rgba(158, 27, 27, 0.05), transparent 70%),
    radial-gradient(ellipse 55% 40% at 82% 88%, rgba(197, 150, 12, 0.05), transparent 70%),
    radial-gradient(ellipse 45% 40% at 14% 82%, rgba(46, 125, 50, 0.05), transparent 70%);
}
.hero .hero-seal { margin: 0 auto 26px; }
.hero .brand-title {
  font-family: var(--font-serif); font-weight: 700;
  font-size: 2.5rem; letter-spacing: 12px; text-indent: 12px;
}
.hero .brand-sub {
  margin-top: 10px; font-size: 1.1rem; letter-spacing: 6px; text-indent: 6px;
  color: var(--ink-2); font-family: var(--font-serif);
}
.hero .motto {
  margin: 18px auto 0; max-width: 560px;
  font-size: 0.95rem; color: var(--ink-3); letter-spacing: 3px; line-height: 2;
}
.hero .hero-actions { margin-top: 34px; display: flex; gap: 16px; justify-content: center; flex-wrap: wrap; }
#spirit-canvas { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0.05; pointer-events: none; }
.hero > .container { position: relative; z-index: 2; }
/* 注：.hero-grid / .hero-wheel / .hero-copy / .hero-stats / .wheel-hint 见文末
   「NEIZANG PROTOTYPE SYNC」第 31 章（原型源顺序在后，层叠覆盖同原型）。 */

/* ---------- 15. 五藏门径入口卡 ---------- */
/* 门径卡：五行印章块 + 书法水印 */
.gate-card {
  position: relative; overflow: hidden; text-align: left;
  padding: 20px 20px 18px; min-height: 208px;
  background: linear-gradient(165deg, var(--wx-soft) 0%, var(--paper-soft) 62%);
  border: 1px solid color-mix(in srgb, var(--wx) 18%, transparent);
  border-radius: var(--seed-radius);
  display: flex; flex-direction: column;
  transition: transform 0.25s ease, box-shadow 0.25s ease;
}
.gate-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-card); }
.gate-wm {
  position: absolute; right: 6px; bottom: -18px; z-index: 0;
  font-family: var(--font-lishu); font-size: 128px; line-height: 1;
  color: color-mix(in srgb, var(--wx) 15%, transparent);
  transform: scaleX(1.06); transform-origin: right bottom;
  transition: color 0.3s ease; pointer-events: none; user-select: none;
}
.gate-card:hover .gate-wm { color: color-mix(in srgb, var(--wx) 24%, transparent); }
.gate-stamp {
  position: relative; z-index: 1;
  width: 30px; height: 30px; border-radius: 4px; flex: none;
  display: inline-flex; align-items: center; justify-content: center;
  background: var(--wx); color: #FDFBF7;
  font-family: var(--font-serif); font-weight: 700; font-size: 0.95rem;
  box-shadow: inset 0 0 0 1px rgba(253, 251, 247, 0.4), 0 1px 3px rgba(26, 26, 26, 0.18);
}
.gate-card.wx-metal .gate-stamp { color: var(--ink); box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.12), 0 1px 3px rgba(26, 26, 26, 0.12); }
.gate-name {
  position: relative; z-index: 1;
  font-family: var(--font-serif); font-weight: 700; font-size: 1.28rem;
  letter-spacing: 5px; color: var(--wx); margin-top: 14px;
}
.gate-card.wx-metal .gate-name { color: #6E6455; }
.gate-card.wx-water .gate-name { color: #2A2A46; }
.gate-organs { position: relative; z-index: 1; font-size: 0.86rem; color: var(--ink-2); letter-spacing: 2px; margin-top: 3px; }
.gate-rule { width: 26px; height: 2px; background: var(--wx); opacity: 0.5; border-radius: 2px; margin: 12px 0 10px; position: relative; z-index: 1; }
.gate-func { position: relative; z-index: 1; font-size: 0.82rem; color: var(--ink-3); letter-spacing: 1px; line-height: 1.9; margin-top: auto; }
.gate-when { display: inline-block; margin-top: 2px; font-size: 0.75rem; letter-spacing: 1px; color: color-mix(in srgb, var(--wx) 70%, var(--ink-3)); }

/* ---------- 16. 详情页 ---------- */
.detail-layout { display: grid; grid-template-columns: 40% 1fr; gap: 48px; align-items: start; }
.detail-layout.rev { grid-template-columns: 1fr 45%; }
.detail-figure { position: sticky; top: 88px; }
.detail-figure .frame {
  border: 2px solid var(--line-strong); border-radius: var(--seed-radius);
  padding: 6px; background: var(--paper-soft);
}
.detail-figure .frame::after { content: none; }
.detail-figure img { border-radius: 3px; width: 100%; object-fit: cover; aspect-ratio: 3/4; }
.detail-figure.landscape img { aspect-ratio: 4/3; }
.nz-quote {
  margin: 22px 0 0; padding: 14px 18px;
  border-left: 3px solid var(--seed-primary);
  background: var(--paper-soft);
  font-family: var(--font-serif); font-style: italic;
  color: var(--ink-2); font-size: 0.95rem; line-height: 1.9; letter-spacing: 1px;
}
.nz-quote .who { display: block; margin-top: 8px; font-size: 0.8rem; color: var(--ink-3); font-style: normal; letter-spacing: 2px; }
.detail-title-row { display: flex; align-items: baseline; gap: 16px; flex-wrap: wrap; }
.detail-title-row h1 { font-size: 2.2rem; letter-spacing: 6px; }
.detail-title-row .pinyin { font-family: var(--font-mono); color: var(--ink-3); font-size: 0.85rem; }
.grade { color: var(--seed-accent); letter-spacing: 2px; font-size: 0.95rem; }
.grade .off { color: var(--line-strong); }
.detail-section { margin-top: 36px; }
.detail-section > h2 {
  font-size: 1.3rem; letter-spacing: 4px; margin-bottom: 18px;
  padding-left: 12px; border-left: 3px solid var(--seed-primary);
}

/* 仙膳详情 · 题头 */
.dish-head {
  text-align: center; padding: 40px 20px;
  border-top: 3px double var(--line-strong);
  border-bottom: 3px double var(--line-strong);
  margin: 26px 0 40px;
}
.dish-head h1 { font-size: 2.4rem; letter-spacing: 8px; text-indent: 8px; }
.dish-head .meta { margin-top: 12px; color: var(--ink-2); letter-spacing: 3px; font-size: 0.95rem; }
.dish-head .gongfa { margin-top: 10px; font-family: var(--font-serif); color: var(--seed-primary); letter-spacing: 3px; }

/* 灵材清单 */
.ingredients {
  border: 1px solid var(--line); border-radius: var(--seed-radius);
  background: var(--paper-soft); overflow: hidden;
}
.ingredients li {
  display: flex; justify-content: space-between; gap: 16px;
  padding: 12px 18px; border-bottom: 1px dashed var(--line);
  font-size: 0.95rem;
}
.ingredients li:last-child { border-bottom: none; }
.ingredients .name { font-family: var(--font-serif); font-weight: 600; letter-spacing: 1px; }
.ingredients .origin { color: var(--ink-3); font-size: 0.85rem; }
.ingredients .amount { font-family: var(--font-mono); font-size: 0.85rem; color: var(--ink-2); }

/* 炼制心法步骤 */
.steps { counter-reset: step; display: grid; gap: 14px; }
.steps li {
  counter-increment: step; position: relative;
  padding: 16px 20px 16px 62px;
  background: var(--paper-soft); border: 1px solid var(--line-soft);
  border-radius: var(--seed-radius);
  font-size: 0.95rem; color: var(--ink-2); line-height: 1.8;
}
.steps li::before {
  content: counter(step, cjk-ideographic);
  position: absolute; left: 16px; top: 50%; transform: translateY(-50%);
  width: 30px; height: 30px; border-radius: 50%;
  background: var(--wx-soft, var(--paper-deep)); color: var(--wx, var(--seed-primary));
  font-family: var(--font-serif); font-weight: 700; font-size: 0.9rem;
  display: flex; align-items: center; justify-content: center;
}

/* 长老批注 */
.annotation {
  position: relative;
  border: 2px solid var(--line-strong); border-radius: var(--seed-radius);
  padding: 20px 22px; background: var(--paper-soft);
}
.annotation::after {
  content: ""; position: absolute; inset: 5px; pointer-events: none;
  border: 1px dashed var(--line-strong); border-radius: 3px;
}
.annotation .ann-title {
  font-family: var(--font-brush); color: var(--seed-primary);
  font-size: 1.3rem; margin-bottom: 8px;
}
.annotation p { margin: 0; font-size: 0.95rem; color: var(--ink-2); line-height: 1.9; position: relative; z-index: 1; }

/* 关联卡横向滚动条 */
.related-row { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--gap-card); }

/* ---------- 17. 游历志 · 时间轴 ---------- */
.timeline { position: relative; padding-left: 40px; }
.timeline::before {
  content: ""; position: absolute; left: 9px; top: 8px; bottom: 8px;
  width: 1px; background: var(--line-strong);
}
.timeline-item { position: relative; padding-bottom: 44px; }
.timeline-item:last-child { padding-bottom: 0; }
.timeline-item::before {
  content: ""; position: absolute; left: -36.5px; top: 8px;
  width: 9px; height: 9px; border-radius: 50%;
  background: var(--paper); border: 2px solid var(--seed-primary);
}
.timeline-item .date { font-family: var(--font-mono); font-size: 0.8rem; color: var(--ink-3); letter-spacing: 1px; }
.timeline-item .solar { color: var(--seed-primary); }
.timeline-item h3 { font-size: 1.25rem; letter-spacing: 2px; margin: 6px 0 2px; }
.timeline-item .place { font-size: 0.85rem; color: var(--ink-2); letter-spacing: 2px; }
.timeline-item .excerpt { margin-top: 8px; color: var(--ink-2); font-size: 0.95rem; line-height: 1.8; }
.timeline-item .more-link { margin-top: 12px; font-size: 0.9rem; }

/* 正文文章 */
.article { max-width: 720px; margin: 0 auto; }
.article > p { margin: 0 0 1.4em; line-height: 2; color: var(--ink); }
.article .lead { font-family: var(--font-serif); color: var(--ink-2); font-size: 1.05rem; }
.article h2 { font-size: 1.3rem; letter-spacing: 3px; margin: 2.2em 0 0.9em; padding-left: 12px; border-left: 3px solid var(--seed-primary); }
.article blockquote {
  margin: 1.8em 0; padding: 4px 22px; color: var(--ink-2);
  border-left: 3px solid var(--line-strong); font-family: var(--font-serif); font-style: italic;
}
.article blockquote cite { display: block; margin-top: 8px; font-size: 0.85rem; color: var(--ink-3); font-style: normal; }
.article .figure { margin: 2em 0; }
.article .figure img { border-radius: var(--seed-radius); }
.article .figure figcaption { margin-top: 10px; font-size: 0.8rem; color: var(--ink-3); text-align: center; letter-spacing: 1px; }
.checklist li {
  position: relative; padding: 10px 14px 10px 38px;
  background: var(--paper-soft); border: 1px solid var(--line-soft); border-radius: 4px;
  margin-bottom: 10px; font-size: 0.95rem; color: var(--ink-2);
}
.checklist li::before {
  content: "✦"; position: absolute; left: 16px; color: var(--seed-accent);
}

/* ---------- 18. 免责声明 ---------- */
.disclaimer {
  margin-top: 48px; padding: 18px 22px;
  background: var(--wx-soft, rgba(197, 150, 12, 0.08));
  border: 1px solid color-mix(in srgb, var(--warn) 25%, transparent);
  border-left: 3px solid var(--warn);
  border-radius: var(--seed-radius);
  font-size: 0.85rem; color: var(--ink-2); line-height: 1.9;
  letter-spacing: 0.5px;
}
.disclaimer strong { color: var(--warn); font-weight: 600; }

/* ---------- 19. 政策页 ---------- */
.policy-summary {
  margin: 26px 0; padding: 18px 24px;
  background: var(--paper-soft); border-left: 3px solid var(--seed-primary);
  border-radius: 0 var(--seed-radius) var(--seed-radius) 0;
  font-size: 0.95rem; color: var(--ink-2); line-height: 1.9;
}
.policy-toc {
  columns: 2; column-gap: 40px; margin: 30px 0;
  border: 1px solid var(--line); border-radius: var(--seed-radius);
  background: var(--paper-soft); padding: 22px 28px;
}
.policy-toc a {
  display: block; padding: 7px 0; font-size: 0.9rem; color: var(--ink-2); letter-spacing: 1px;
  border-bottom: 1px dashed var(--line-soft);
}
.policy-toc a:hover { color: var(--seed-primary); }
.policy-body { max-width: 720px; margin: 0 auto; }
.policy-body h2 {
  font-size: 1.3rem; letter-spacing: 2px; margin: 44px 0 16px;
  padding-left: 14px; border-left: 3px solid var(--seed-primary);
  scroll-margin-top: 90px;
}
.policy-body p, .policy-body li { color: var(--ink-2); font-size: 1rem; line-height: 1.9; }
.policy-body p { margin: 0 0 1.2em; }
.policy-body ul { list-style: disc; padding-left: 24px; }
.policy-body ul li { list-style: disc; }
.policy-updated { text-align: center; font-size: 0.85rem; color: var(--ink-3); margin-top: 10px; }

/* ---------- 20. 页脚 ---------- */
.site-footer {
  margin-top: var(--section-gap);
  background: var(--wx-water);
  color: color-mix(in srgb, var(--seed-bg) 72%, var(--wx-water));
  border-top: 4px solid var(--seed-primary);
  position: relative;
}
.site-footer::before {
  content: ""; position: absolute; inset: 0; pointer-events: none; opacity: 0.05;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='240' height='240' filter='url(%23n)' opacity='0.6'/%3E%3C/svg%3E");
}
.footer-inner { max-width: var(--container); margin: 0 auto; padding: 56px var(--gutter) 30px; position: relative; }
.footer-top { display: grid; grid-template-columns: 1.4fr 1fr 1fr 1.2fr; gap: 40px; }
.footer-brand .f-seal { flex: none; }
.footer-brand .f-brand-row { display: flex; align-items: center; gap: 12px; margin-bottom: 14px; }
.footer-brand .f-name { font-family: var(--font-serif); font-size: 1.2rem; letter-spacing: 6px; color: var(--seed-bg); }
.footer-brand .f-motto { margin-top: 10px; font-size: 0.85rem; letter-spacing: 2px; line-height: 2; color: color-mix(in srgb, var(--seed-bg) 55%, var(--wx-water)); }
.footer-col h4 {
  font-size: 0.95rem; letter-spacing: 4px; color: var(--seed-bg); margin-bottom: 16px;
}
.footer-col a {
  display: block; padding: 5px 0; font-size: 0.88rem; color: color-mix(in srgb, var(--seed-bg) 55%, var(--wx-water)); letter-spacing: 2px;
  transition: color 0.2s;
}
.footer-col a:hover { color: #D9534F; }
.footer-bottom {
  margin-top: 44px; padding-top: 22px; border-top: 1px solid color-mix(in srgb, var(--seed-bg) 14%, transparent);
  font-size: 0.8rem; color: color-mix(in srgb, var(--seed-bg) 42%, var(--wx-water)); text-align: center; letter-spacing: 1px; line-height: 2;
}
.footer-bottom .med { color: #9B978D; }

/* ---------- 21. 搜索 / 404 ---------- */
.search-hero { padding: 40px 0 10px; text-align: center; }
.search-form { display: flex; gap: 12px; max-width: 560px; margin: 24px auto 0; }
.search-form .input { flex: 1; padding: 13px 18px; border-radius: 4px; }
.search-hit { padding: 26px 4px; border-bottom: 1px solid var(--line); }
.search-hit .type-tag { font-size: 0.75rem; letter-spacing: 2px; padding: 3px 10px; border-radius: 3px; }
.search-hit h3 { margin: 10px 0 6px; font-size: 1.2rem; letter-spacing: 1px; }
.search-hit h3 a:hover { color: var(--seed-primary); }
.search-hit .url { font-family: var(--font-mono); font-size: 0.75rem; color: var(--ok); }
.search-hit p { color: var(--ink-2); font-size: 0.92rem; margin: 6px 0 0; }
.err-404 { text-align: center; padding: 90px 0 110px; }
.err-404 .code { font-family: var(--font-brush); font-size: 7rem; line-height: 1; color: var(--seed-primary); }
.err-404 .msg { font-family: var(--font-serif); font-size: 1.4rem; letter-spacing: 5px; margin-top: 18px; }
.err-404 .hint { margin-top: 10px; color: var(--ink-3); font-size: 0.9rem; letter-spacing: 1px; }
.err-404 .links { margin-top: 36px; display: flex; gap: 14px; justify-content: center; flex-wrap: wrap; }

/* ---------- 22. 分页 ---------- */
.pagination { display: flex; gap: 8px; justify-content: center; margin-top: 48px; }
.pagination a, .pagination span {
  min-width: 40px; height: 40px; padding: 0 12px;
  display: inline-flex; align-items: center; justify-content: center;
  border: 1px solid var(--line); border-radius: 4px;
  font-family: var(--font-mono); font-size: 0.85rem; color: var(--ink-2);
  background: var(--paper-soft);
}
.pagination a:hover { border-color: var(--seed-primary); color: var(--seed-primary); }
.pagination .current { background: var(--seed-primary); border-color: var(--seed-primary); color: var(--seed-bg); }

/* ---------- 23. 关于页 ---------- */
.about-hero { display: grid; grid-template-columns: 200px 1fr; gap: 40px; align-items: start; }
.about-portrait {
  width: 200px; height: 200px; border-radius: 50%; overflow: hidden;
  border: 4px solid var(--paper-soft); box-shadow: 0 0 0 1px var(--line-strong), var(--shadow-card);
}
.about-portrait img { width: 100%; height: 100%; object-fit: cover; }
.about-id .greeting {
  font-family: var(--font-serif); font-size: 1.05rem; color: var(--seed-primary);
  letter-spacing: 2px; margin-top: 14px;
}
.id-table { margin-top: 18px; display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px 28px; font-size: 0.9rem; }
.id-table .kv { display: flex; gap: 10px; border-bottom: 1px dashed var(--line); padding: 6px 0; }
.id-table .k { color: var(--ink-3); letter-spacing: 2px; min-width: 3.5em; }
.boundary-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
.boundary-card { padding: 24px 26px; border-radius: var(--seed-radius); border: 1px solid var(--line); background: var(--paper-soft); }
.boundary-card h3 { font-size: 1.1rem; letter-spacing: 3px; margin-bottom: 14px; }
.boundary-card.yes { border-top: 3px solid var(--ok); }
.boundary-card.no { border-top: 3px solid var(--bad); }
.boundary-card li { padding: 7px 0 7px 26px; position: relative; font-size: 0.92rem; color: var(--ink-2); border-bottom: 1px dashed var(--line-soft); }
.boundary-card li:last-child { border-bottom: none; }
.boundary-card.yes li::before { content: "✓"; position: absolute; left: 2px; color: var(--ok); font-weight: 700; }
.boundary-card.no li::before { content: "✕"; position: absolute; left: 2px; color: var(--bad); font-weight: 700; }

/* 使命三句 */
.mission-list { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
.mission-item {
  text-align: center; padding: 34px 20px 28px;
  background: var(--paper-soft); border: 1px solid var(--line-soft);
  border-radius: var(--seed-radius); position: relative;
}
.mission-item .idx {
  font-family: var(--font-brush); font-size: 2.6rem; color: color-mix(in srgb, var(--seed-primary) 55%, var(--paper-deep));
  line-height: 1;
}
.mission-item p { margin-top: 12px; font-family: var(--font-serif); letter-spacing: 2px; font-size: 1rem; }

/* ---------- 24. 联系页 ---------- */
.contact-layout { display: grid; grid-template-columns: 1fr 1fr; gap: 48px; align-items: start; }
.contact-form-wrap {
  background: var(--paper-soft); border: 1px solid var(--line);
  border-radius: var(--seed-radius); padding: 34px 36px;
}
.social-list { display: grid; gap: 14px; }
.social-item {
  display: flex; align-items: center; gap: 16px;
  padding: 18px 22px; background: var(--paper-soft);
  border: 1px solid var(--line-soft); border-radius: var(--seed-radius);
  transition: transform 0.2s, box-shadow 0.2s;
}
.social-item:hover { transform: translateX(4px); box-shadow: var(--shadow-card); }
.social-item .s-icon {
  width: 44px; height: 44px; border-radius: 8px; flex: none;
  display: flex; align-items: center; justify-content: center;
  background: var(--wx-soft, var(--paper-deep)); color: var(--wx, var(--ink));
  font-family: var(--font-serif); font-weight: 700; font-size: 1.1rem;
}
.social-item .s-name { font-family: var(--font-serif); font-weight: 600; letter-spacing: 2px; }
.social-item .s-id { font-size: 0.8rem; color: var(--ink-3); font-family: var(--font-mono); }
.contact-note {
  margin-top: 24px; padding: 18px 22px; font-size: 0.88rem;
  background: var(--wx-soft, var(--paper-deep)); color: var(--ink-2);
  border-radius: var(--seed-radius); border: 1px solid color-mix(in srgb, var(--wx, var(--ink-2)) 18%, transparent);
  line-height: 1.9;
}
.form-success {
  display: none; padding: 14px 18px; margin-bottom: 18px;
  background: var(--wx-wood-soft); border: 1px solid rgba(46, 125, 50, 0.3);
  border-left: 3px solid var(--ok); border-radius: 4px;
  color: var(--ok); font-size: 0.9rem; letter-spacing: 1px;
}

/* ---------- 25. 响应式 ---------- */
@media (max-width: 1024px) {
  .footer-top { grid-template-columns: 1fr 1fr; }
  .grid-5 { grid-template-columns: repeat(3, 1fr); }
  .related-row { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 900px) {
  .detail-layout, .detail-layout.rev { grid-template-columns: 1fr; gap: 30px; }
  .detail-figure { position: static; }
  .detail-figure img { aspect-ratio: 4/3; }
  .grid-3 { grid-template-columns: repeat(2, 1fr); }
  .contact-layout { grid-template-columns: 1fr; }
  .about-hero { grid-template-columns: 140px 1fr; gap: 24px; }
  .about-portrait { width: 140px; height: 140px; }
  .mission-list { grid-template-columns: 1fr; }
}
@media (max-width: 768px) {
  :root { --gutter: 20px; --section-gap: 40px; --gap-card: 16px; }
  h1, .h1 { font-size: 1.8rem; }
  h2, .h2 { font-size: 1.5rem; }
  h3, .h3 { font-size: 1.15rem; }
  h4, .h4 { font-size: 1rem; }
  body { font-size: 0.95rem; }
  .hero { padding: 56px 0 64px; }
  .hero .brand-title { font-size: 1.9rem; letter-spacing: 8px; text-indent: 8px; }
  .hero .brand-sub { font-size: 0.95rem; }
  .nav-links {
    position: fixed; top: 64px; left: 0; right: 0;
    background: var(--paper); border-bottom: 1px solid var(--line);
    flex-direction: column; align-items: stretch; gap: 0;
    padding: 10px 20px 20px;
    transform: translateY(-12px); opacity: 0; visibility: hidden;
    transition: 0.25s ease;
    max-height: calc(100vh - 64px); overflow: auto;
  }
  .nav-toggle:checked ~ .nav-links { transform: none; opacity: 1; visibility: visible; }
  .nav-links a { padding: 13px 8px; border-bottom: 1px dashed var(--line-soft); font-size: 1rem; }
  .nav-links a.current::after { display: none; }
  .nav-burger { display: inline-flex; }
  .nav-search-btn { display: none; }
  .grid-3, .grid-2 { grid-template-columns: 1fr; }
  .detail-title-row h1 { font-size: 1.7rem; letter-spacing: 4px; }
  .dish-head h1 { font-size: 1.7rem; }
  .timeline { padding-left: 30px; }
  .timeline-item::before { left: -26.5px; }
  .related-row { grid-template-columns: 1fr; }
  .footer-top { grid-template-columns: 1fr; gap: 28px; }
  .boundary-grid { grid-template-columns: 1fr; }
  .id-table { grid-template-columns: 1fr; }
  .policy-toc { columns: 1; }
  .nz-table th { width: 86px; }

  /* 首页五藏门径：移动端横滑 */
  .grid-5.swipe {
    display: flex; overflow-x: auto; scroll-snap-type: x mandatory;
    padding-bottom: 12px; margin: 0 calc(-1 * var(--gutter));
    padding-left: var(--gutter); padding-right: var(--gutter);
    scrollbar-width: none;
  }
  .grid-5.swipe::-webkit-scrollbar { display: none; }
  .grid-5.swipe > * { flex: 0 0 240px; scroll-snap-align: start; }

  /* 轮盘移动端横滑卡（隐藏轮盘图例可保留） */
  .wheel-wrap { width: min(300px, 80vw); }
}
@media (max-width: 480px) {
  .hero .brand-title { font-size: 1.6rem; letter-spacing: 6px; text-indent: 6px; }
  .btn { padding: 10px 20px; letter-spacing: 2px; }
  .grid-5.swipe > * { flex-basis: 200px; }
}

/* 尊重减少动态偏好 */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; scroll-behavior: auto !important; }
  #spirit-canvas { display: none; }
}

/* ---------- 26. SVG 五行着色（类驱动；呈现属性不支持 var()） ---------- */
.gate-ico.i-wood { stroke: var(--wx-wood); }
.gate-ico.i-fire { stroke: var(--wx-fire); }
.gate-ico.i-earth { stroke: var(--wx-earth); }
.gate-ico.i-metal { stroke: var(--wx-metal); }
.gate-ico.i-water { stroke: var(--wx-water); }

/* ---------- 27. 节气膳时（首页板块） ---------- */
.jieqi-layout { display: grid; grid-template-columns: 330px 1fr; gap: 28px; align-items: stretch; }
.jieqi-now {
  position: relative; padding: 30px 30px 28px;
  background: var(--wx-soft, var(--paper-soft));
  border: 2px solid color-mix(in srgb, var(--wx, var(--ink-2)) 34%, transparent);
  border-radius: var(--seed-radius);
}
.jieqi-now::after {
  content: ""; position: absolute; inset: 6px; pointer-events: none;
  border: 1px dashed color-mix(in srgb, var(--wx, var(--ink-2)) 26%, transparent);
  border-radius: 3px;
}
.jieqi-now .jn-term {
  font-family: var(--font-brush); font-size: 3.6rem; line-height: 1.15;
  color: var(--wx, var(--seed-primary)); letter-spacing: 6px; margin: 8px 0 2px;
}
.jieqi-now .jn-wx { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 10px; }
.jieqi-now .jn-theme {
  margin: 16px 0 0; font-family: var(--font-serif); color: var(--ink-2);
  font-size: 1rem; line-height: 1.9; letter-spacing: 1px; position: relative; z-index: 1;
}
.jieqi-now .jn-picks { margin-top: 16px; position: relative; z-index: 1; }
.jieqi-now .jn-picks li {
  display: flex; justify-content: space-between; align-items: center; gap: 12px;
  padding: 9px 0; border-top: 1px dashed var(--line);
  font-size: 0.92rem;
}
.jieqi-now .jn-picks a { font-family: var(--font-serif); letter-spacing: 1px; }
.jieqi-now .jn-picks a:hover { color: var(--seed-primary); }
.jieqi-now .btn { margin-top: 20px; position: relative; z-index: 1; }
.jieqi-board {
  background: var(--paper-soft); border: 1px solid var(--line);
  border-radius: var(--seed-radius); padding: 22px 24px;
}
.jieqi-board .jb-head { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; margin-bottom: 16px; flex-wrap: wrap; }
.jieqi-board .jb-head .h4 { letter-spacing: 3px; }
.jieqi-grid {
  display: grid; grid-template-columns: repeat(6, 1fr);
  gap: 1px; background: var(--line-soft);
  border: 1px solid var(--line); border-radius: 4px; overflow: hidden;
}
.jq-cell {
  display: flex; flex-direction: column; align-items: center; gap: 7px;
  padding: 13px 4px 11px; position: relative;
  background: var(--paper-soft);
  transition: background 0.2s ease;
}
.jq-cell:hover { background: var(--paper-deep); }
.jq-cell.jq-wood { --wx: var(--wx-wood); }
.jq-cell.jq-fire { --wx: var(--wx-fire); }
.jq-cell.jq-earth { --wx: var(--wx-earth); }
.jq-cell.jq-metal { --wx: var(--wx-metal); }
.jq-cell.jq-water { --wx: var(--wx-water); }

.jq-cell .jq-dot {
  width: 8px; height: 8px; border-radius: 50%;
  background: var(--wx, var(--ink-3));
}
.jq-cell .jq-name {
  font-family: var(--font-serif); font-size: 0.88rem; letter-spacing: 1px; color: var(--ink-2);
}
.jq-cell:hover .jq-name { color: var(--ink); }
.jq-cell.active {
  background: color-mix(in srgb, var(--seed-primary) 7%, var(--paper-soft));
  box-shadow: inset 0 0 0 1.5px var(--seed-primary);
}
.jq-cell.active .jq-name { color: var(--seed-primary); font-weight: 700; }
.jq-cell.active::before {
  content: "今"; position: absolute; top: 4px; right: 6px;
  font-size: 0.62rem; color: #FDFBF7; background: var(--seed-primary);
  border-radius: 2px; padding: 1px 3px; line-height: 1.2;
}
.jb-legend { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; margin-top: 16px; }
.jb-legend .note { font-size: 0.78rem; color: var(--ink-3); letter-spacing: 1px; margin-left: auto; }
@media (max-width: 900px) {
  .jieqi-layout { grid-template-columns: 1fr; }
  .jieqi-grid { grid-template-columns: repeat(4, 1fr); }
}
@media (max-width: 560px) {
  .jieqi-grid { grid-template-columns: repeat(3, 1fr); }
  .jieqi-now .jn-term { font-size: 3rem; }
}

/* ---------- 28. 节气横幅（全站内容页） ---------- */
.jieqi-ribbon {
  border-bottom: 1px solid var(--line);
  background: var(--wx-soft, var(--paper-deep));
  padding: 9px 0;
}
.jieqi-ribbon[hidden] { display: none; }
.jieqi-ribbon .container {
  display: flex; align-items: center; gap: 12px; flex-wrap: wrap; justify-content: center;
  font-size: 0.82rem; letter-spacing: 1px; color: var(--ink-2);
}
.jr-dot { width: 9px; height: 9px; border-radius: 50%; background: var(--wx, var(--seed-primary)); flex: none; }
.jr-term { font-family: var(--font-serif); font-weight: 700; font-size: 0.95rem; color: var(--wx, var(--seed-primary)); letter-spacing: 3px; }
.jr-sep { color: var(--ink-3); }
.jr-theme { color: var(--ink); }
.jr-link { color: var(--seed-primary); display: inline-flex; gap: 6px; align-items: center; margin-left: 6px; }
.jr-link .arr { transition: transform .25s ease; }
.jr-link:hover .arr { transform: translateX(4px); }
@media (max-width: 768px) {
  .jieqi-ribbon .container { gap: 8px; font-size: 0.75rem; }
  .jr-meta { display: none; }
}

/* ---------- 29. 五行对照盘（详情页） ---------- */
.wx-cycle {
  display: grid; grid-template-columns: repeat(5, 1fr); gap: 1px;
  background: var(--line); border: 1px solid var(--line);
  border-radius: var(--seed-radius); overflow: hidden; margin: 22px 0 0;
}
.wc-item {
  background: var(--paper-soft); padding: 12px 8px 11px;
  display: flex; flex-direction: column; align-items: center; gap: 4px;
  transition: background .2s ease; position: relative;
}
.wc-item:hover { background: var(--wx-soft, var(--paper-deep)); }
.wc-item .wc-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--wx, var(--ink-3)); }
.wc-item .wc-name { font-family: var(--font-serif); font-weight: 700; font-size: 1rem; color: var(--wx, var(--ink)); letter-spacing: 2px; }
.wc-item .wc-sub { font-size: 0.7rem; color: var(--ink-3); letter-spacing: 1px; }
.wc-item.here { background: var(--wx-soft, var(--paper-deep)); box-shadow: inset 0 3px 0 var(--wx); }
.wc-item.here::after {
  content: "此"; position: absolute; top: 5px; right: 6px;
  font-size: 0.6rem; color: #FDFBF7; background: var(--wx, var(--seed-primary));
  border-radius: 2px; padding: 1px 3px; line-height: 1.25;
}
.wc-item.here .wc-sub { color: var(--wx, var(--ink-2)); }
@media (max-width: 768px) {
  .wc-item .wc-sub { font-size: 0.62rem; }
  .wc-item .wc-name { font-size: 0.9rem; }
}

/* ---------- 30. 筛选芯片五行色点 & 时间轴节气点 ---------- */
.chip .wx-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--wx, var(--ink-3)); flex: none; }
.chip.active .wx-dot { background: var(--paper); }
.timeline-item .date .wx-dot {
  display: inline-block; width: 8px; height: 8px; border-radius: 50%;
  background: var(--wx, var(--ink-3)); margin-right: 6px; vertical-align: 1px;
}

/* ---------- 31. WordPress 适配追加（非原型内容） ---------- */
/* 本草节为 WordPress 运行环境的补充样式，第 1–30 章（原型）未作任何改动。
   颜色/间距一律复用原型设计令牌（--seed-* / --ink-* / --line* / --wx-* / --gap-card），
   不引入新的视觉语言；类名均带 wp-* / comment-* / align* / current-* 前缀，与原型不冲突。 */

/* 31.1 无障碍：屏幕阅读器专用文本 + 跳转链接 */
.screen-reader-text {
  border: 0; clip-path: inset(50%); height: 1px; width: 1px;
  margin: -1px; overflow: hidden; padding: 0; position: absolute !important;
  word-wrap: normal !important;
}
.screen-reader-text:focus {
  background: var(--paper-soft); color: var(--seed-primary);
  border: 1px solid var(--line); border-radius: 4px;
  clip-path: none; height: auto; width: auto;
  left: 12px; top: 12px; padding: 10px 18px; z-index: 100000;
  font-size: 0.9rem; letter-spacing: 2px; text-decoration: none;
}
.skip-link { position: absolute; left: -9999px; top: auto; }

/* 31.2 编辑器对齐类（经典编辑器 / 古腾堡共用） */
.alignleft { float: left; margin: 6px 24px 14px 0; }
.alignright { float: right; margin: 6px 0 14px 24px; }
.aligncenter { display: block; margin: 20px auto; }
img.alignleft, img.alignright, img.aligncenter {
  border-radius: var(--seed-radius); box-shadow: var(--shadow-card);
  max-width: 100%; height: auto;
}
.alignwide, .alignfull { max-width: 100%; }
.alignfull { margin-left: calc(-1 * var(--gutter)); margin-right: calc(-1 * var(--gutter)); width: auto; }

/* 31.3 图片说明 / 图注 */
.wp-caption { max-width: 100%; margin: 1.6em 0; }
.wp-caption img { display: block; margin: 0 auto; border-radius: var(--seed-radius); }
.wp-caption-text, .gallery-caption, .wp-block-image figcaption, .wp-element-caption {
  margin-top: 8px; text-align: center;
  font-size: 0.85rem; line-height: 1.6; color: var(--ink-3); letter-spacing: 1px;
}
.wp-smiley { border: 0; box-shadow: none; display: inline-block; }

/* 31.4 古腾堡区块基础兼容 */
.entry-content > * + * { margin-top: 1.1em; }
.wp-block-image { margin: 1.6em 0; }
.wp-block-image img { border-radius: var(--seed-radius); height: auto; }
.wp-block-image.is-style-rounded img, .wp-block-image img.rounded { border-radius: 999px; }
.wp-block-gallery { display: flex; flex-wrap: wrap; gap: 8px; padding: 0; list-style: none; }
.wp-block-gallery .wp-block-image { margin: 0; flex: 1 1 200px; }
.wp-block-quote, .wp-block-pullquote {
  margin: 1.8em 0; padding: 8px 0 8px 20px;
  border-left: 3px solid var(--seed-primary);
  font-family: var(--font-serif); color: var(--ink-2); font-size: 1.05rem;
}
.wp-block-quote p:first-child { margin-top: 0; }
.wp-block-quote cite, .wp-block-pullquote cite {
  display: block; margin-top: 10px; font-family: var(--font-sans);
  font-size: 0.85rem; font-style: normal; color: var(--ink-3); letter-spacing: 2px;
}
.wp-block-pullquote { border-left: 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); text-align: center; padding: 24px 0; }
.wp-block-pullquote blockquote { border: 0; padding: 0; margin: 0; }
.wp-block-table { margin: 1.6em 0; overflow-x: auto; }
.wp-block-table table { width: 100%; border: 1px solid var(--line); border-radius: var(--seed-radius); overflow: hidden; background: var(--paper-soft); }
.wp-block-table th, .wp-block-table td { padding: 12px 16px; border-bottom: 1px solid var(--line-soft); text-align: left; vertical-align: top; }
.wp-block-table th { background: var(--paper-deep); font-family: var(--font-serif); font-weight: 600; letter-spacing: 2px; }
.wp-block-table figcaption { margin-top: 8px; font-size: 0.85rem; color: var(--ink-3); text-align: center; }
.wp-block-separator { border: 0; border-top: 1px solid var(--line); max-width: 200px; margin: 36px auto; }
.wp-block-separator.is-style-dots { border: 0; text-align: center; }
.wp-block-buttons { display: flex; flex-wrap: wrap; gap: 12px; }
.wp-block-button__link {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  font-family: var(--font-sans); font-size: 0.95rem; letter-spacing: 3px;
  padding: 11px 28px; border-radius: 4px;
  background: var(--primary-btn); color: var(--seed-bg); text-decoration: none;
  transition: all 0.22s ease;
}
.wp-block-button__link:hover { background: var(--primary-btn-hover); transform: translateY(-1px); box-shadow: var(--shadow-seal); }
.wp-block-button.is-style-outline .wp-block-button__link { background: transparent; color: var(--ink); border: 1px solid var(--line-strong); }
.wp-block-columns { display: flex; flex-wrap: wrap; gap: var(--gap-card); margin: 1.6em 0; }
.wp-block-column { flex: 1 1 260px; min-width: 0; }
.wp-block-embed { margin: 1.6em 0; }
.wp-block-embed iframe, .wp-block-video video, .wp-block-audio audio { max-width: 100%; border-radius: var(--seed-radius); }
.wp-block-video video { width: 100%; }
.wp-block-code, .wp-block-preformatted {
  background: var(--paper-deep); border: 1px solid var(--line); border-radius: var(--seed-radius);
  padding: 14px 18px; font-family: var(--font-mono); font-size: 0.85rem;
  overflow-x: auto; white-space: pre-wrap; word-break: break-word;
}
.wp-block-cover { position: relative; border-radius: var(--seed-radius); overflow: hidden; }
.wp-block-media-text { display: grid; grid-template-columns: 1fr 1fr; gap: var(--gap-card); align-items: center; }
.wp-block-group.has-background { padding: 24px; border-radius: var(--seed-radius); }
.has-text-align-center { text-align: center; }
.has-text-align-right { text-align: right; }

/* 31.5 正文列表符号恢复（原型第 2 章 reset 掉了 list-style） */
.entry-content ul, .post-content ul, .page-content ul { list-style: disc; padding-left: 1.5em; margin: 1em 0; }
.entry-content ol, .post-content ol, .page-content ol { list-style: decimal; padding-left: 1.7em; margin: 1em 0; }
.entry-content li, .post-content li, .page-content li { margin: 6px 0; }
.entry-content ul ul { list-style: circle; }
.entry-content li > ul, .entry-content li > ol { margin: 6px 0; }
.wp-block-list { margin: 1em 0; padding-left: 1.5em; list-style: disc; }

/* 31.6 登录状态下的后台管理条偏移（sticky 头部） */
body.admin-bar .site-header { top: 32px; }
@media screen and (max-width: 782px) { body.admin-bar .site-header { top: 46px; } }

/* 31.7 当前菜单项高亮（wp_nav_menu 输出的 WP 类名 → 原型 .current 观感） */
.nav-links a.current,
.nav-links .current-menu-item > a,
.nav-links .current_page_item > a,
.nav-links .current-menu-ancestor > a,
.nav-links .current-menu-parent > a,
.nav-links .current_page_parent > a,
.nav-links .current_page_ancestor > a { color: var(--seed-primary); font-weight: 500; }
.nav-links a.current::after,
.nav-links .current-menu-item > a::after,
.nav-links .current_page_item > a::after,
.nav-links .current-menu-ancestor > a::after,
.nav-links .current-menu-parent > a::after,
.nav-links .current_page_parent > a::after,
.nav-links .current_page_ancestor > a::after {
  content: ""; position: absolute; left: 14px; right: 14px; bottom: 2px;
  height: 2px; background: var(--seed-primary); border-radius: 2px;
}
.nav-links .menu-item > a { display: inline-block; }
.footer-col .current-menu-item > a,
.footer-col .current_page_item > a { color: #D9534F; }

/* 31.8 分页：wordpress page-numbers 补充（原型第 22 章已定义 .pagination a/span） */
.pagination .page-numbers { text-decoration: none; }
.pagination .page-numbers.dots, .pagination .dots {
  border-color: transparent; background: transparent; color: var(--ink-3);
}
.pagination .page-numbers.prev, .pagination .page-numbers.next { letter-spacing: 1px; font-family: var(--font-sans); }
.navigation.pagination { margin-top: 48px; }

/* 31.9 评论列表基础样式（论道区） */
.comment-list, .comment-list .children { list-style: none; padding: 0; margin: 0; }
.comment-list .children { padding-left: 28px; border-left: 1px solid var(--line-soft); margin-left: 12px; }
.comment-list > li { padding: 22px 0; border-bottom: 1px solid var(--line-soft); }
.comment-body { position: relative; }
.comment-author { display: flex; align-items: center; gap: 10px; font-family: var(--font-serif); font-size: 1rem; letter-spacing: 1px; }
.comment-author .avatar { border-radius: 50%; border: 1px solid var(--line); }
.comment-author .fn { font-style: normal; font-weight: 600; }
.comment-meta { font-size: 0.8rem; color: var(--ink-3); letter-spacing: 1px; margin: 4px 0 10px; }
.comment-meta a { color: var(--ink-3); }
.comment-content { color: var(--ink-2); font-size: 0.95rem; }
.comment-content p { margin: 0 0 10px; }
.comment-reply-link { font-size: 0.85rem; color: var(--seed-primary); letter-spacing: 1px; }
.comment-respond { margin-top: 36px; }
.comment-respond .comment-reply-title, .comments-title {
  font-family: var(--font-serif); font-size: 1.2rem; letter-spacing: 3px; margin-bottom: 18px;
}
.comment-respond .comment-reply-title small { font-size: 0.85rem; letter-spacing: 1px; }
.comment-form p { margin-bottom: 16px; }
.comment-form label { display: block; font-size: 0.9rem; color: var(--ink-2); letter-spacing: 2px; margin-bottom: 8px; }
.comment-form input[type="text"], .comment-form input[type="email"], .comment-form input[type="url"], .comment-form textarea {
  width: 100%; font-family: var(--font-sans); font-size: 0.95rem; color: var(--ink);
  background: var(--paper-soft); border: 1px solid rgba(0, 0, 0, 0.15); border-radius: 4px;
  padding: 10px 14px; transition: border-color 0.2s, box-shadow 0.2s;
}
.comment-form input[type="text"]:focus, .comment-form input[type="email"]:focus, .comment-form input[type="url"]:focus, .comment-form textarea:focus {
  outline: none; border-color: var(--seed-primary); box-shadow: 0 0 0 3px rgba(158, 27, 27, 0.1);
}
.comment-form textarea { min-height: 140px; resize: vertical; line-height: 1.7; }
.comment-form .submit {
  display: inline-flex; align-items: center; justify-content: center;
  font-family: var(--font-sans); font-size: 0.95rem; letter-spacing: 3px;
  padding: 11px 28px; border: 1px solid transparent; border-radius: 4px; cursor: pointer;
  background: var(--primary-btn); color: var(--seed-bg); transition: all 0.22s ease;
}
.comment-form .submit:hover { background: var(--primary-btn-hover); transform: translateY(-1px); box-shadow: var(--shadow-seal); }
.comment-form .logged-in-as { font-size: 0.85rem; color: var(--ink-3); }
.comment-form .comment-notes, .comment-form .comment-form-cookies-consent { font-size: 0.85rem; color: var(--ink-3); }
.comment-form .comment-form-cookies-consent label { display: inline; margin: 0 0 0 6px; }
.comment-form .comment-form-cookies-consent input { width: auto; }

/* 31.10 文章附录类（WP 主题规范要求定义的类名） */
.sticky .card-title::after, .sticky .entry-title::after {
  content: "精选"; margin-left: 10px; font-family: var(--font-sans);
  font-size: 0.72rem; letter-spacing: 1px; vertical-align: middle;
  padding: 3px 8px; border-radius: 3px;
  background: color-mix(in srgb, var(--seed-primary) 12%, transparent); color: var(--seed-primary);
}
.bypostauthor { font-weight: 600; }
.widget { margin-bottom: 28px; }
.widget-title { font-family: var(--font-serif); font-size: 1.05rem; letter-spacing: 3px; margin-bottom: 12px; }
.post-password-form input[type="password"] {
  font-family: var(--font-sans); background: var(--paper-soft);
  border: 1px solid rgba(0, 0, 0, 0.15); border-radius: 4px; padding: 9px 12px;
}
/* 打印：去掉固定质感层与粘性头部 */
@media print {
  body::before, .site-header, .site-footer, #spirit-canvas { display: none !important; }
  .container { max-width: 100%; padding: 0; }
}

/* ===== NEIZANG PROTOTYPE SYNC: sections 31-33 + lishu token ===== */
/* 说明：以下 3 个章节与 --font-lishu 令牌来自原型最新版 neizang.css，
   补齐原型第 15 章 .gate-wm（隶书水印）与第 31/32/33 章
   （Hero 左右布局、五行珠轮盘/太极中宫、移动端审计修复）。
   源顺序刻意与原型的出现顺序一致，以保证层叠覆盖关系不变。 */

/* ---------- 31(令牌) --font-lishu：隶书水印字体栈（原型第 1 章） ---------- */
:root {
  --font-lishu: "STLiti", "LiSu", "隶书", "Ma Shan Zheng", "Noto Serif SC", serif; /* 生产：换自托管商用授权隶书 webfont */
}

/* ---------- 31. Hero 左右布局（左文案 · 右轮盘） ---------- */
.hero-grid {
  display: grid; grid-template-columns: 1fr minmax(300px, 380px);
  gap: 64px; align-items: center; justify-content: space-between;
  text-align: left;
}
.hero-copy { max-width: 460px; padding: 8px 0; }
.hero-copy .brand-title { font-size: 3rem; letter-spacing: 9px; text-indent: 0; }
.hero-copy .motto { margin: 20px 0 0; max-width: none; letter-spacing: 3px; color: var(--ink-2); }
.hero-copy .hero-actions { margin-top: 34px; justify-content: flex-start; }
.hero-wheel { display: flex; flex-direction: column; align-items: center; }
.hero-wheel .wheel-wrap { margin: 0 auto 2px; width: min(420px, 88vw); }
@media (max-width: 900px) {
  .hero-grid { grid-template-columns: 1fr; gap: 40px; text-align: center; justify-items: center; }
  .hero-copy { max-width: 560px; }
  .hero-copy .brand-title { font-size: 2.3rem; letter-spacing: 8px; text-indent: 8px; }
  .hero-copy .hero-actions { justify-content: center; }
}
@media (max-width: 768px) {
  .hero-copy .brand-title { font-size: 1.9rem; }
}

/* ---------- 32. 五行珠轮盘（悬珠转太极） ---------- */
.taiji-yang { fill: var(--wx-metal-pale); }
.taiji-yin  { fill: var(--wx-water); }
.taiji-ring { fill: none; stroke: var(--bead-active, var(--line-strong)); stroke-width: 1.4; transition: stroke .3s ease; }
.wheel-hint {
  margin: 14px 0 0; font-size: 0.78rem; letter-spacing: 3px;
  color: var(--ink-3); text-align: center; font-family: var(--font-serif);
}

/* 中宫圆珠 */
.center-ball { fill: var(--paper-soft); stroke: var(--line-strong); stroke-width: 1.2; }
.cl-text {
  font-family: var(--font-serif); font-weight: 700; font-size: 19px;
  fill: var(--ink); text-anchor: middle; letter-spacing: 2px;
}
.center-label { transition: opacity .35s ease; }
.taiji {
  opacity: 0; transform-box: fill-box; transform-origin: center;
  transition: opacity .35s ease; pointer-events: none;
}
@keyframes nz-taiji-spin { to { transform: rotate(360deg); } }
.hero-wheel svg.bead-live .taiji { opacity: 1; animation: nz-taiji-spin 4.5s linear infinite; }
.hero-wheel svg.bead-live .center-label { opacity: 0; }
@media (prefers-reduced-motion: reduce) {
  .hero-wheel svg.bead-live .taiji { animation: none; }
}

/* 珠间连蕊（虚珠线） */
.bead-link { stroke: var(--wx, var(--ink-3)); opacity: .35; stroke-dasharray: 1.5 5; }

/* 五行珠 */
.wx-bead { cursor: pointer; }
.bead-ball { fill: var(--wx, var(--ink-3)); transition: fill .2s ease; }
.bead-char {
  font-family: var(--font-serif); font-weight: 700; font-size: 26px;
  fill: #FDFBF7; text-anchor: middle; letter-spacing: 0; pointer-events: none;
}
.bead-halo { fill: var(--wx, var(--ink-3)); opacity: 0; transition: opacity .25s ease; }
.wx-bead:hover .bead-halo, .wx-bead:focus .bead-halo { opacity: 0.22; }
.wx-bead:focus { outline: none; }
.wx-bead:focus-visible .bead-halo { opacity: 0.3; }

/* 节气刻度环（二十四缝 · 四立为长子 · 今日节气朱点） */
.bead-tick line { stroke: var(--line-strong); stroke-width: 1.2; opacity: .5; }
.bead-tick.major line { stroke-width: 2.4; opacity: .9; }
.bead-tick.m-wood line { stroke: var(--wx-wood); }
.bead-tick.m-fire line { stroke: var(--wx-fire); }
.bead-tick.m-metal line { stroke: var(--wx-metal); }
.bead-tick.m-water line { stroke: var(--wx-water); }
.tick-dot { fill: var(--seed-primary); opacity: 0; }
.bead-tick.now line { stroke: var(--seed-primary); opacity: 1; stroke-width: 2.4; }
.bead-tick.now .tick-dot { opacity: 1; }

/* 左栏补充：一句短文 + 首批计数 */
.hero-desc { margin: 14px 0 0; color: var(--ink-2); font-size: 0.95rem; letter-spacing: 2px; }
.hero-stats {
  margin-top: 30px; padding-top: 18px; border-top: 1px solid var(--line);
  display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap;
}
.hero-stats .hs-item { display: inline-flex; align-items: baseline; gap: 5px; }
.hero-stats b.num { font-size: 1.15rem; color: var(--ink); font-weight: 400; }
.hero-stats i { font-style: normal; font-size: 0.82rem; color: var(--ink-3); letter-spacing: 2px; }
.hero-stats .hs-dot { color: var(--line-strong); }

/* 节气名环标 */
.jq-labels text {
  font-family: var(--font-serif); font-size: 9.5px; letter-spacing: .5px;
  fill: var(--ink-3); text-anchor: middle; opacity: .85;
}
.jq-labels text.major { font-size: 10.5px; font-weight: 700; opacity: .95; }
.jq-labels text.m-wood  { fill: color-mix(in srgb, var(--wx-wood) 75%, var(--ink-3)); }
.jq-labels text.m-fire  { fill: color-mix(in srgb, var(--wx-fire) 70%, var(--ink-3)); }
.jq-labels text.m-metal { fill: #77705F; }
.jq-labels text.m-water { fill: color-mix(in srgb, var(--wx-water) 70%, var(--ink-3)); }
.jq-labels text.now { fill: var(--seed-primary); font-weight: 700; font-size: 11.5px; opacity: 1; }

/* ---------- 33. 移动端审计修复 ---------- */
/* ① 窄屏节气环标降噪：只留四正 + 今日 */
@media (max-width: 768px) {
  .jq-labels text { display: none; }
  .jq-labels text.major, .jq-labels text.now { display: block; font-size: 11.5px; }
}
/* ② 五行对照盘窄屏防溢出 */
@media (max-width: 768px) {
  .wx-cycle { margin-top: 18px; }
  .wc-item { padding: 10px 2px 9px; }
  .wc-item .wc-name { font-size: 0.88rem; letter-spacing: 0; }
  .wc-item .wc-sub { font-size: 0.58rem; letter-spacing: 0; white-space: nowrap; }
  .wc-item.here::after { font-size: 0.55rem; top: 3px; right: 3px; }
}
/* ③ 灵材清单窄屏允许换行 */
@media (max-width: 560px) {
  .ingredients li { flex-wrap: wrap; gap: 2px 10px; }
  .ingredients .origin { flex-basis: 100%; order: 3; }
  .ingredients .amount { margin-left: auto; }
}

/* ④ iOS 聚焦防缩放：窄屏表单控件 ≥16px */
/* ⑤ 触控热区：窄屏芯片/分页放大到 ~44px */
@media (max-width: 768px) {
  .input, .select, .textarea { font-size: 16px; }
  .chip { padding: 10px 18px; }
  .pagination a, .pagination span { min-width: 44px; height: 44px; }
  .jq-cell { padding: 16px 4px 14px; }
  .wx-cycle .wc-item { padding: 12px 2px 11px; }
}


/* =========================================================================
   游历志 · 时间轴卡片（重设计）
   在原型第 17 章 .timeline 的基础上重做条目形态：保留左侧时间线，
   每条改成「特色图 + 文字」的卡片，并在 768px 以下把日期移到轴上方全宽显示。
   宽度继承 .container（内容宽 = 头部导航文字宽度），因此与 header 对齐。
   ========================================================================= */

/* 条目左内边距即为向左伸出的日期列宽度 */
.timeline .timeline-item { padding-left: 122px; padding-bottom: 36px; }
.timeline .timeline-item:last-child { padding-bottom: 0; }

/* 轴点：圆环 + 内点，落在时间轴线上 */
.timeline .timeline-item::before {
  left: -36.5px; top: 7px; width: 11px; height: 11px;
  background: var(--paper);
  border: 2px solid var(--seed-primary);
  box-shadow: 0 0 0 4px var(--paper);
  z-index: 1;
}
.timeline .timeline-item::after {
  content: ""; position: absolute; left: -33.5px; top: 10px;
  width: 5px; height: 5px; border-radius: 50%;
  background: var(--seed-primary); z-index: 2;
}

/* 日期：停在轴左侧、右对齐 */
.timeline .timeline-item .tl-date-wrap {
  position: absolute; left: 0; top: 2px;
  width: 84px; padding-right: 22px; text-align: right;
}
.timeline .timeline-item .date {
  font-family: var(--font-mono); font-size: 0.76rem; line-height: 1.7;
  color: var(--ink-3); letter-spacing: 0;
}
.timeline .timeline-item .date .solar { display: block; margin-top: 2px; }
.timeline .timeline-item .date .wx-dot { margin-right: 5px; vertical-align: 1px; }

/* 卡片 */
.timeline .tl-card {
  display: flex; flex-direction: column;
  background: var(--paper-soft);
  border: 1px solid var(--line-soft);
  border-radius: var(--seed-radius);
  overflow: hidden;
  transition: transform 0.25s ease, box-shadow 0.25s ease, border-color 0.25s ease;
}
.timeline .tl-card:hover {
  transform: translateY(-3px);
  box-shadow: var(--shadow-hover);
  border-color: color-mix(in srgb, var(--seed-primary) 22%, var(--line-soft));
}

/* 特色图：16:9 横幅，落在卡片顶部 */
.timeline .tl-media-link { display: block; }
.timeline .tl-media {
  position: relative; display: block;
  aspect-ratio: 16 / 9; overflow: hidden;
  background: var(--paper-deep);
}
.timeline .tl-media img {
  width: 100%; height: 100%; object-fit: cover; display: block;
  transition: transform 0.5s ease;
}
.timeline .tl-card:hover .tl-media img { transform: scale(1.035); }

/* 无图占位：不用 16:9（会拉成很高的色块，书法字还会被裁掉），
   改成一枚克制的窄条 + 居中书法字。
   注意：`.timeline .tl-media`（0,2,0）的 display:block 特异性高于 `.medallion`
   （0,1,0），所以这里必须显式写回 display:flex，否则 align-items / justify-content 全部失效。 */
.timeline .tl-media.medallion {
  display: flex;
  aspect-ratio: auto; min-height: 0; height: 112px;
  align-items: center; justify-content: center;
  border-bottom: 1px solid var(--line-soft);
  background:
    radial-gradient(ellipse 70% 140% at 50% 50%, color-mix(in srgb, var(--wx, var(--ink-2)) 10%, transparent) 0%, transparent 70%),
    var(--paper-deep);
}
.timeline .tl-media.medallion .glyph {
  display: block; font-size: 2.5rem; line-height: 1;
  color: var(--wx, var(--ink-2)); opacity: 0.55;
}

/* 文字区 */
.timeline .tl-body { padding: 18px 22px 20px; }
.timeline .tl-title {
  font-family: var(--font-serif); font-size: 1.24rem; font-weight: 600;
  letter-spacing: 1.5px; line-height: 1.55; margin: 0;
}
.timeline .tl-title a { transition: color 0.2s ease; }
.timeline .tl-title a:hover { color: var(--seed-primary); }
.timeline .tl-body .place { margin-top: 8px; font-size: 0.85rem; color: var(--ink-2); letter-spacing: 2px; }
.timeline .tl-body .excerpt {
  margin: 10px 0 0; color: var(--ink-2);
  font-size: 0.94rem; line-height: 1.85;
  display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical;
  overflow: hidden;
}
.timeline .tl-body .more-link { margin-top: 14px; font-size: 0.92rem; }

/* 窄屏：日期移到轴上方并横排，卡片占满宽度 */
@media (max-width: 768px) {
  .timeline { padding-left: 26px; }
  .timeline::before { left: 5px; }
  .timeline .timeline-item { padding-left: 0; padding-bottom: 30px; }
  .timeline .timeline-item::before { left: -25.5px; top: 6px; }
  .timeline .timeline-item::after { left: -22.5px; top: 9px; }

  .timeline .timeline-item .tl-date-wrap {
    position: static; width: auto; padding: 0;
    text-align: left; margin-bottom: 8px;
  }
  .timeline .timeline-item .date .solar { display: inline; margin-left: 8px; }

  .timeline .tl-body { padding: 15px 17px 17px; }
  .timeline .tl-title { font-size: 1.1rem; letter-spacing: 1px; }
  .timeline .tl-media.medallion { height: 92px; }
  .timeline .tl-media.medallion .glyph { font-size: 2rem; }
}

/* =========================================================================
   关于页（修士手札）· 版式重做
   原版的问题：头部 200px 圆形头像 + 6 行资料表 + 两段小传挤在一起，
   下方正文限宽 720px 居中、卡片却拉满整栏，左右边缘在各区块间反复跳动。

   重做原则：
     1. 全页统一到 .container 的单一网格，所有区块左边缘与栏目标题一致；
     2. 图标式圆形头像改为与全站一致的方形「卷轴边框」图；
     3. 人物资料从「挤在头部」改为与「经名小序」并排的独立卡片，长度互补；
     4. 区块标题由居中改为左对齐，避免居中标题与左对齐分隔线的错位感；
     5. 正文限宽 46em（仅用于阅读舒适），但左边缘仍贴合网格。
   ========================================================================= */

/* 左对齐的区块标题（与 .container 左边缘对齐） */
.nz-head-left { text-align: left; margin-bottom: 28px; }
.nz-head-left .rule { margin: 14px 0 0; }

/* ---------- 其人：左形象 + 右小传 ---------- */
.nz-about-person {
  display: grid;
  grid-template-columns: 300px minmax(0, 1fr);
  gap: 48px;
  align-items: center;
}

.nz-portrait { margin: 0; }
.nz-portrait-frame {
  border: 2px solid var(--line-strong);
  border-radius: var(--seed-radius);
  padding: 7px;
  background: var(--paper-soft);
  box-shadow: var(--shadow-card);
}
.nz-portrait-frame img {
  display: block; width: 100%; height: auto;
  aspect-ratio: 1 / 1; object-fit: cover; border-radius: 3px;
}
.nz-portrait-fallback {
  aspect-ratio: 1 / 1; display: flex; align-items: center; justify-content: center;
  background: var(--paper-deep); border-radius: 3px;
}
.nz-portrait-cap {
  margin-top: 12px; text-align: center;
  font-size: 0.78rem; letter-spacing: 2px; color: var(--ink-3);
}

.nz-about-bio .nz-about-name {
  font-family: var(--font-serif); font-size: 2.1rem; font-weight: 700;
  letter-spacing: 8px; line-height: 1.3; margin: 0; color: var(--ink);
}
.nz-about-bio .nz-about-greeting {
  margin: 14px 0 0;
  font-family: var(--font-serif); font-size: 1.08rem; letter-spacing: 2px;
  color: var(--seed-primary); line-height: 1.75;
}
.nz-about-bio .rule { width: 46px; height: 2px; background: var(--seed-primary); margin: 22px 0; }
.nz-about-bio p {
  margin: 0 0 14px; color: var(--ink-2);
  font-size: 0.97rem; line-height: 2; letter-spacing: 0.5px;
}
.nz-about-bio p:last-child { margin-bottom: 0; }

/* ---------- 经名小序（左）+ 人物资料卡（右） ---------- */
.nz-about-story-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 316px;
  gap: 52px;
  align-items: start;
}
.nz-prose { max-width: 46em; }
.nz-prose p {
  margin: 0 0 16px; color: var(--ink-2);
  font-size: 0.97rem; line-height: 2; letter-spacing: 0.5px;
}
.nz-prose p:last-child { margin-bottom: 0; }

.nz-about-idcard {
  padding: 26px 26px 22px;
  background: var(--paper-soft);
  border: 1px solid var(--line-soft);
  border-top: 3px solid var(--seed-primary);
  border-radius: var(--seed-radius);
}
.nz-idcard-title {
  font-family: var(--font-serif); font-size: 1.02rem; font-weight: 600;
  letter-spacing: 5px; margin: 0 0 16px; color: var(--ink);
}
/* 资料表：单列键值，虚线分隔 —— 覆盖原型的两列网格 */
.nz-about-idcard .id-table {
  margin: 0; display: block; font-size: 0.92rem;
}
.nz-about-idcard .id-table .kv {
  display: flex; gap: 14px; align-items: baseline;
  padding: 9px 0; border-bottom: 1px dashed var(--line);
}
.nz-about-idcard .id-table .kv:last-child { border-bottom: none; padding-bottom: 0; }
.nz-about-idcard .id-table .k {
  flex: none; width: 4.6em; color: var(--ink-3);
  font-size: 0.82rem; letter-spacing: 2px;
}
.nz-about-idcard .id-table .v { color: var(--ink); letter-spacing: 1px; }

/* ---------- 使命三句：改为「左序号 + 右文案」的横向条目 ---------- */
.nz-about .mission-list {
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 20px;
}
.nz-about .mission-item {
  display: grid; grid-template-columns: auto minmax(0, 1fr);
  gap: 16px; align-items: start;
  text-align: left; padding: 24px 24px 22px;
  background: var(--paper-soft);
  border: 1px solid var(--line-soft);
  border-left: 3px solid color-mix(in srgb, var(--seed-primary) 40%, transparent);
  border-radius: var(--seed-radius);
}
.nz-about .mission-item .idx {
  font-family: var(--font-brush); font-size: 1.9rem; line-height: 1.1;
  color: color-mix(in srgb, var(--seed-primary) 62%, var(--paper-deep));
}
.nz-about .mission-item p {
  margin: 0; font-family: var(--font-serif); font-size: 1.06rem;
  letter-spacing: 2px; line-height: 1.6; color: var(--ink);
}
.nz-about .mission-item .tiny { display: block; margin-top: 7px; letter-spacing: 1px; }

/* ---------- 内容边界：去掉厚重顶边，改为朱砂/墨色的细标记 ---------- */
.nz-about .boundary-grid { gap: 20px; }
.nz-about .boundary-card {
  padding: 26px 28px 22px;
  border-top-width: 1px;
  border-top-color: var(--line-soft);
  position: relative;
}
.nz-about .boundary-card::before {
  content: ""; position: absolute; left: 28px; top: -1px; width: 54px; height: 3px;
  border-radius: 0 0 3px 3px;
}
.nz-about .boundary-card.yes::before { background: var(--ok); }
.nz-about .boundary-card.no::before { background: var(--bad); }
.nz-about .boundary-card h3 {
  font-family: var(--font-serif); letter-spacing: 5px; font-size: 1.06rem;
  margin-bottom: 12px;
}
.nz-about .boundary-card ul { margin: 0; }
.nz-about .boundary-card li {
  padding: 9px 0 9px 24px; font-size: 0.92rem; line-height: 1.85;
}
.nz-about .boundary-card.yes li::before { left: 0; }
.nz-about .boundary-card.no li::before { left: 0; }

/* ---------- 窄屏 ---------- */
@media (max-width: 900px) {
  .nz-about-person { grid-template-columns: 220px minmax(0, 1fr); gap: 30px; }
  .nz-about-bio .nz-about-name { font-size: 1.7rem; letter-spacing: 6px; }
}
@media (max-width: 768px) {
  .nz-about-person { grid-template-columns: 1fr; gap: 26px; }
  .nz-portrait { max-width: 260px; margin: 0 auto; }
  .nz-about-bio .nz-about-name { font-size: 1.55rem; letter-spacing: 5px; text-align: center; }
  .nz-about-bio .nz-about-greeting { text-align: center; font-size: 1rem; }
  .nz-about-bio .rule { margin: 20px auto; }
  .nz-about-story-grid { grid-template-columns: 1fr; gap: 30px; }
  .nz-about-idcard { padding: 22px 20px 18px; }
  .nz-about .mission-list { grid-template-columns: 1fr; }
  .nz-about .boundary-grid { grid-template-columns: 1fr; }
  .nz-about .boundary-card { padding: 22px 20px 18px; }
  .nz-about .boundary-card::before { left: 20px; }
}
/* 免责声明标签与正文之间补一个间隙（默认「⚠️ 温馨提示：」靠全角冒号分隔，
   换成「免责声明」这类无冒号标签时会与正文粘在一起） */
.disclaimer strong:first-child { margin-right: 6px; }

/* 关于页：使命条目 —— 收紧内距与字距，让「用食物调理身体」这类文案能收在一行里
   （三栏每栏约 326px，去掉序号 34px 与内距后正文区约 226px） */
.nz-about .mission-item { gap: 14px; padding: 24px 20px 22px; }
/* 序号列必须定宽：若用 auto，第三行的说明小字会把该列撑到 138px，
   正文就只剩 130px、三栏全部折成两行。 */
.nz-about .mission-item { grid-template-columns: 2.1rem minmax(0, 1fr); }
.nz-about .mission-item .idx { font-size: 1.7rem; margin-top: 3px; }
.nz-about .mission-item .nz-mi-text { min-width: 0; }
.nz-about .mission-item p { margin: 0; font-size: 1rem; letter-spacing: 1px; line-height: 1.8; }
.nz-about .mission-item .tiny { display: block; margin-top: 7px; letter-spacing: 1px; }

/* =========================================================================
   灵膳详情页（single-recipe.php）
   按《灵膳详情页设计方案》实现，变量名按本主题的既有令牌换算：
     方案 --ink-dim / --ink-light → 主题 --ink-3 / --ink-2
     方案 --bg-paper-light / --bg-paper-dark → 主题 --paper-soft / --paper-deep
     方案 --fire-bg 等 → 主题 --wx-soft（由 .wx-* 类提供）
     方案 --cinnabar → 主题 --seed-primary
   对齐：容器层已有 .container（内容宽 1020px），
   故这里不再单独设 max-width:1100px，避免内缩出 20px 与头部文字错位。
   ========================================================================= */

/* ---------- 顶部标题区：上下双墨线、文字居中 ---------- */
.recipe-single .recipe-header {
  text-align: center;
  padding: 30px 0;
  border-top: 2px solid var(--ink);
  border-bottom: 2px solid var(--ink);
  margin: 26px 0 40px;
}
.recipe-title {
  font-family: var(--font-serif);
  font-size: 2rem; font-weight: 700;
  letter-spacing: 8px;
  /* 字距会在末字后多留 8px，右侧补回以保持视觉居中 */
  text-indent: 8px;
  line-height: 1.35;
  margin: 0 0 12px;
  color: var(--ink);
}
.recipe-meta {
  display: flex; justify-content: center; align-items: center;
  flex-wrap: wrap; gap: 12px; margin-bottom: 8px;
}
.recipe-wuxing {
  padding: 2px 10px; border-radius: 3px;
  font-size: 0.85rem; font-weight: 600; letter-spacing: 2px;
  background: var(--wx-soft, var(--paper-deep));
  color: var(--wx, var(--ink));
}
.recipe-taste { font-size: 0.85rem; color: var(--ink-3); letter-spacing: 2px; }
.recipe-gongfa {
  margin: 0; font-family: var(--font-sans);
  font-size: 1rem; letter-spacing: 2px; color: var(--ink-2);
}

/* ---------- 两栏布局 ---------- */
.recipe-body {
  display: grid;
  grid-template-columns: 55% 40%;
  gap: 5%;
  align-items: start;
}
.recipe-main, .recipe-side { min-width: 0; }

/* ---------- 信息盒 ---------- */
.recipe-info-box {
  background: var(--paper-soft);
  border: 1px solid var(--line);
  border-radius: var(--seed-radius);
  padding: 24px;
  margin-bottom: 24px;
}
.recipe-side .recipe-info-box:last-child { margin-bottom: 0; }
.box-title {
  font-family: var(--font-serif);
  font-size: 1.1rem; font-weight: 600;
  letter-spacing: 4px; color: var(--ink);
  margin: 0 0 16px; padding-bottom: 8px;
  border-bottom: 1px solid var(--line-soft);
}

/* ---------- 膳性提要表格 ---------- */
.recipe-info-table { width: 100%; border-collapse: collapse; }
.recipe-info-table tr { border-bottom: 1px dashed var(--line-soft); }
.recipe-info-table tr:last-child { border-bottom: none; }
.recipe-info-table th {
  text-align: left; padding: 10px 0;
  font-size: 0.9rem; font-weight: 400; letter-spacing: 2px;
  color: var(--ink-3); width: 100px; vertical-align: top;
}
.recipe-info-table td {
  padding: 10px 0;
  font-size: 0.95rem; font-weight: 600; letter-spacing: 0.5px;
  color: var(--ink); line-height: 1.75;
}
.wuxing-dot {
  display: inline-block; width: 8px; height: 8px;
  border-radius: 50%; margin-right: 6px; vertical-align: 1px;
  background: var(--wx, var(--ink-3));
}

/* ---------- 灵材清单 ---------- */
.ingredient-list { list-style: none; margin: 0; padding: 0; }
.ingredient-list li {
  display: flex; align-items: baseline;
  padding: 10px 0;
  border-bottom: 1px solid var(--line-soft);
  font-size: 0.95rem;
}
.ingredient-list li:last-child { border-bottom: none; }
.ingredient-list li::before {
  content: "◆";
  color: var(--seed-primary);
  font-size: 0.6rem; line-height: 1;
  margin-right: 10px; flex: none;
}
.ing-name { flex: 1; color: var(--ink); letter-spacing: 1px; }
.ing-origin {
  color: var(--ink-3); font-size: 0.85rem; letter-spacing: 1px;
  margin-right: 16px; text-align: right;
}
.ing-amount {
  color: var(--seed-primary); font-weight: 700; font-size: 0.9rem;
  min-width: 50px; text-align: right; white-space: nowrap;
}

/* ---------- 炼制心法 ---------- */
.steps-list { list-style: none; counter-reset: nz-step; margin: 0; padding: 0; }
.steps-list li {
  counter-increment: nz-step;
  position: relative;
  padding: 12px 0 12px 40px;
  border-bottom: 1px solid var(--line-soft);
  font-family: var(--font-sans);
  font-size: 0.95rem; line-height: 1.75; color: var(--ink-2);
}
.steps-list li:last-child { border-bottom: none; }
.steps-list li::before {
  content: counter(nz-step);
  position: absolute; left: 0; top: 12px;
  width: 28px; height: 28px; border-radius: 50%;
  background: var(--paper-deep);
  display: flex; align-items: center; justify-content: center;
  font-size: 0.85rem; font-weight: 600; color: var(--ink-2);
}

/* ---------- 灶边笔记（the_content 输出） ---------- */
.recipe-notes { font-size: 0.95rem; line-height: 2; color: var(--ink-2); }
.recipe-notes p { margin: 0 0 14px; }
.recipe-notes p:last-child { margin-bottom: 0; }
.recipe-notes h2, .recipe-notes h3, .recipe-notes h4 {
  font-family: var(--font-serif); font-size: 1rem; font-weight: 600;
  letter-spacing: 3px; color: var(--ink); margin: 20px 0 10px;
}
.recipe-notes ul, .recipe-notes ol { margin: 0 0 14px; padding-left: 1.35em; }
.recipe-notes li { line-height: 1.95; margin-bottom: 6px; }
.recipe-notes .checklist { list-style: none; padding-left: 0; }
.recipe-notes .checklist li {
  position: relative; padding-left: 22px; margin-bottom: 8px;
  padding-bottom: 8px; border-bottom: 1px dashed var(--line-soft);
}
.recipe-notes .checklist li:last-child { border-bottom: none; }
.recipe-notes .checklist li::before {
  content: "✦"; position: absolute; left: 0; top: 0;
  color: var(--seed-accent); font-size: 0.75rem;
}

/* ---------- 右栏：成品图 ---------- */
.recipe-image {
  margin: 0 0 20px; padding: 0;
  border-radius: var(--seed-radius); overflow: hidden;
  background: var(--paper-deep);
  border: 1px solid var(--line-soft);
}
.recipe-image img {
  display: block; width: 100%; height: auto;
  aspect-ratio: 4 / 3; object-fit: cover;
}
.recipe-image-placeholder {
  aspect-ratio: 4 / 3; min-height: 220px;
  display: flex; align-items: center; justify-content: center;
  font-family: var(--font-serif); font-size: 0.95rem;
  letter-spacing: 8px; color: var(--ink-3);
  background: var(--paper-deep);
}

/* ---------- 右栏：视频 ---------- */
.video-wrapper {
  position: relative; padding-bottom: 56.25%; height: 0;
  border-radius: 4px; overflow: hidden; background: var(--paper-deep);
}
.video-wrapper iframe,
.video-wrapper video,
.video-wrapper embed,
.video-wrapper object {
  position: absolute; top: 0; left: 0;
  width: 100%; height: 100%; border: 0;
}
.video-fallback {
  position: absolute; inset: 0;
  display: flex; align-items: center; justify-content: center;
  padding: 0 16px; text-align: center;
  font-size: 0.85rem; color: var(--ink-3); word-break: break-all;
}

/* ---------- 右栏：长老批注 ---------- */
.annotation-box {
  border-left: 3px solid var(--seed-primary);
  border-radius: 0 var(--seed-radius) var(--seed-radius) 0;
}
.annotation-content p {
  margin: 0 0 12px;
  font-family: var(--font-sans);
  font-size: 0.95rem; line-height: 1.8; color: var(--ink-2);
}
.annotation-content p:last-child { margin-bottom: 0; }
/* 批注盒内的标题分隔线让位给朱砂左边线 */
.annotation-box .box-title { border-bottom-color: var(--line-soft); }

/* ---------- 收录灵草（跨全宽） ---------- */
.related-herbs {
  margin-top: 60px; padding: 40px 0 0;
  border-top: 1px solid var(--line);
}
.related-herbs .section-title {
  font-family: var(--font-serif);
  font-size: 1.3rem; font-weight: 600;
  letter-spacing: 5px; color: var(--ink);
  margin: 0 0 24px;
}
.herb-grid-mini {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
}
.herb-card-mini {
  display: block; text-decoration: none;
  background: var(--paper-soft);
  border: 1px solid var(--line-soft);
  border-radius: var(--seed-radius);
  overflow: hidden;
  transition: transform 0.3s ease, box-shadow 0.3s ease, border-color 0.3s ease;
}
.herb-card-mini:hover {
  transform: translateY(-3px);
  box-shadow: var(--shadow-hover);
  border-color: color-mix(in srgb, var(--wx, var(--seed-primary)) 28%, var(--line-soft));
}
.herb-card-mini-img {
  height: 100px; overflow: hidden;
  display: flex; align-items: center; justify-content: center;
  /* 五行浅底再与宣纸调和一次：方案要求按五行着色，但纯 --wx-soft 偏黄偏重，
     与全站宣纸质感不搭，这里降低饱和度、提高纸占比。 */
  background: color-mix(in srgb, var(--wx, var(--ink-3)) 9%, var(--paper-soft));
  border-bottom: 1px solid var(--line-soft);
}
.herb-card-mini-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.herb-card-mini-glyph {
  font-family: var(--font-brush); font-size: 2.4rem; line-height: 1;
  color: var(--wx, var(--ink-2)); opacity: 0.75;
}
.herb-card-mini-body { padding: 12px 14px 14px; }
.herb-card-mini-name {
  font-family: var(--font-serif);
  font-size: 1rem; font-weight: 600; letter-spacing: 2px;
  color: var(--ink); margin-bottom: 4px;
}
.herb-card-mini-taste { font-size: 0.85rem; letter-spacing: 1px; color: var(--ink-3); }

/* ---------- 返回 / 前后篇 ---------- */
.recipe-nav {
  display: flex; justify-content: center; align-items: center;
  flex-wrap: wrap; gap: 12px 36px;
  margin: 32px 0 40px;
}

/* ---------- 论道区 ---------- */
.comments-area {
  max-width: 720px;
  margin: 60px auto 0;
}
.comments-area .section-title {
  font-family: var(--font-serif);
  font-size: 1.3rem; font-weight: 600;
  letter-spacing: 5px; color: var(--ink);
  margin: 0 0 24px;
}

/* ---------- 响应式 ---------- */
@media (max-width: 1000px) {
  .recipe-body { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 4%; }
  .recipe-info-box { padding: 20px; }
}
@media (max-width: 860px) {
  .herb-grid-mini { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 768px) {
  .recipe-body { grid-template-columns: 1fr; gap: 0; }
  .recipe-title { font-size: 1.6rem; letter-spacing: 4px; text-indent: 4px; }
  .recipe-header { padding: 22px 0; margin: 18px 0 28px; }
  .recipe-notes, .recipe-notes li { font-size: 0.9rem; }

  /* 膳性提要：标签在上、值在下 */
  .recipe-info-table, .recipe-info-table tbody, .recipe-info-table tr,
  .recipe-info-table th, .recipe-info-table td { display: block; width: 100%; }
  .recipe-info-table tr { padding: 10px 0; }
  .recipe-info-table th { padding: 0; width: auto; }
  .recipe-info-table td { padding: 2px 0 0; font-weight: 600; }

  .ingredient-list li { flex-wrap: wrap; }
  .ing-origin { margin-right: 12px; }
  .steps-list li { font-size: 0.9rem; }
  .recipe-image img, .recipe-image-placeholder { aspect-ratio: auto; height: 220px; }
  .related-herbs { margin-top: 44px; padding-top: 30px; }
  .herb-grid-mini { grid-template-columns: 1fr; }
  .comments-area { margin-top: 44px; }
}

/* =========================================================================
   灵膳详情页 · 侧栏吸附「相关食谱」+ 论道区对齐
   背景：主栏（约 1900px）远高于侧栏静态内容（约 540px），右侧下方留出上千像素空白。
   做法：相关食谱区块 sticky —— 先随页面正常滚动进入视口，之后吸附在视口顶部，
        滚到侧栏末尾时自然停住，把空白变成可用的导航。
   ========================================================================= */

/*
 * sticky 的包含块是最近的块级祖先（这里是 .recipe-side），元素只能在该祖先的
 * 盒内移动。若侧栏自身高度就等于内容高度（1062px），下滑约 400px 后包含块就
 * 走完了，sticky 还没贴到 top:20 就被推走 —— 实测正是如此。
 * 解决办法：用 ::after 在侧栏底部撑出与主栏相当的余量，让 sticky 有路可走。
 * 不用 min-height，因为网格项拉伸会反过来影响行高、造成循环。
 * 864px ≈ 主栏（1914px）− 侧栏内容（1062px）− 一点余量。
 */
.recipe-side { align-self: start; }
.recipe-side::after { content: ""; display: block; height: 864px; }

.recipe-related-recipes {
  position: sticky;
  top: 20px;                     /* 与全站 sticky 头部留出呼吸空间 */
  margin-top: 24px;
  margin-bottom: 0;
}

.recipe-mini-list { list-style: none; margin: 0; padding: 0; }
.recipe-mini-list li + li { border-top: 1px solid var(--line-soft); }

.recipe-mini {
  display: flex; align-items: center; gap: 12px;
  padding: 10px 0;
  text-decoration: none;
  transition: transform 0.2s ease;
}
.recipe-mini:hover { transform: translateX(3px); }

.recipe-mini-thumb {
  flex: none; width: 56px; height: 56px;
  border-radius: 4px; overflow: hidden;
  display: flex; align-items: center; justify-content: center;
  background: color-mix(in srgb, var(--wx, var(--ink-3)) 9%, var(--paper-soft));
}
.recipe-mini-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.recipe-mini-glyph {
  font-family: var(--font-brush); font-size: 1.6rem; line-height: 1;
  color: var(--wx, var(--ink-2)); opacity: 0.8;
}
.recipe-mini-text { min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.recipe-mini-name {
  font-family: var(--font-serif); font-size: 0.95rem; font-weight: 600;
  letter-spacing: 1.5px; color: var(--ink); line-height: 1.4;
}
.recipe-mini:hover .recipe-mini-name { color: var(--seed-primary); }
.recipe-mini-sub {
  font-size: 0.76rem; letter-spacing: 0.5px; color: var(--ink-3);
  line-height: 1.5;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}

/* 吸附的区块若比视口还高，允许自身内部滚动（条目少时不会触发）。 */
@media (min-height: 700px) {
  .recipe-related-recipes { max-height: calc(100vh - 40px); overflow-y: auto; }
}

/* 窄屏：sticky 在单栏堆叠下意义不大，改为普通流式区块 */
@media (max-width: 768px) {
  .recipe-related-recipes {
    position: static; max-height: none; overflow: visible;
    margin-top: 0; margin-bottom: 24px;
  }
  /* 单栏堆叠下不需要余量 */
  .recipe-side::after { display: none; }
}

/* ---------- 论道区：与 header 文字区同宽 ---------- */
/* 外框拉满容器（与标题区、两栏、收录灵草、免责声明左右边缘一致），
   内部的表单控件仍限宽，避免整行输入框过长影响填写。 */
.recipe-single .comments-area { max-width: none; margin: 60px 0 0; }
.recipe-single .comments-area .comment-form,
.recipe-single .comments-area .comment-list,
.recipe-single .comments-area #respond { max-width: 760px; }
.recipe-single .comments-area .comment-form input[type="text"],
.recipe-single .comments-area .comment-form input[type="email"],
.recipe-single .comments-area .comment-form input[type="url"] { max-width: 460px; }