/* 文章排版：标题、正文、引用、表格、图片、脚注、上下篇导航、相关阅读 */

.post-header { margin-bottom: var(--sp-7); padding-bottom: var(--sp-6); border-bottom: 1px solid var(--rule); }
.post-header .kicker { margin-bottom: var(--sp-4); }
article h1 {
  margin: 0 0 var(--sp-4);
  font-size: var(--fs-4xl);
  line-height: 1.2;
  letter-spacing: var(--track-head);
  text-wrap: balance;
}
.post-header .post-tags { margin-top: var(--sp-4); }

.prose { font-size: 17px; line-height: 1.95; letter-spacing: 0; }
.prose > :first-child { margin-top: 0; }

.prose p { margin: 1.3em 0; }
.prose h2 {
  margin: 56px 0 20px;
  padding-top: 28px;
  border-top: 1px solid var(--rule);
  font-size: var(--fs-3xl);
  line-height: 1.25;
  letter-spacing: var(--track-head);
  scroll-margin-top: calc(var(--header-h) + 16px);
}
/* 页头已经有分隔线，紧随其后的第一个 h2 不再重复 */
.post-header + h2 { margin-top: 0; padding-top: 0; border-top: 0; }
.prose h3 {
  margin: 40px 0 12px;
  font-size: 20px;
  font-weight: 500;
  line-height: 1.4;
  letter-spacing: -0.01em;
  scroll-margin-top: calc(var(--header-h) + 16px);
}
.prose h4 { margin: 32px 0 8px; font-size: var(--fs-lg); font-weight: 500; }

.prose a {
  text-decoration: underline;
  text-decoration-color: var(--hairline);
  text-decoration-thickness: 1px;
  text-underline-offset: 3px;
  transition: text-decoration-color var(--dur) var(--ease);
}
.prose a:hover { text-decoration-color: var(--ink); }

.prose ul, .prose ol { margin: 1.3em 0; padding-left: 1.5em; }
.prose li { margin: 0.4em 0; }
.prose li::marker { color: var(--ink-muted); }

.prose blockquote {
  margin: 1.6em 0;
  padding: 2px 0 2px var(--sp-5);
  border-left: 2px solid var(--ink);
  color: var(--ink-muted);
}
/* pre-line 保留源文里的换行：引用块中相邻的几行不会被折叠成一段 */
.prose blockquote p { margin: 0.5em 0; white-space: pre-line; }

/* 以粗体标签开头的引用块是文档元信息（报告期、成稿等），做成信息面板而不是引文 */
.prose blockquote:has(> p:first-child > strong:first-child) {
  padding: var(--sp-4) var(--sp-5);
  border: 1px solid var(--hairline);
  background: var(--panel);
  color: var(--ink);
  font-size: var(--fs-md);
  line-height: 1.9;
}
.prose blockquote:has(> p:first-child > strong:first-child) p { margin: 0; text-wrap: pretty; }
/* keep-all：粗体标签只在标点和空格处换行，避免窄屏把「成稿」拆成两行，又不会让长句撑破版心 */
.prose blockquote:has(> p:first-child > strong:first-child) strong { word-break: keep-all; }

.prose strong { font-weight: 600; }

.prose hr { margin: 2.5em 0; }

/* 表格：渲染管线/脚本会把 <table> 包进 .table-wrap，避免窄屏撑爆视口 */
.prose .table-wrap {
  margin: 1.6em 0;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  border: 1px solid var(--hairline);
  background: var(--panel);
}
.prose table { width: 100%; margin: 1.6em 0; border-collapse: collapse; font-size: var(--fs-base); line-height: 1.6; }
.prose .table-wrap table { margin: 0; }
.prose th, .prose td { padding: 12px 16px; text-align: left; border-bottom: 1px solid var(--rule); }
.prose th { font-size: var(--fs-sm); font-weight: 500; color: var(--ink-muted); white-space: nowrap; border-bottom-color: var(--hairline); }
.prose tbody tr:last-child td { border-bottom: 0; }

.prose figure { margin: 1.8em 0; }
.prose img { border: 1px solid var(--rule); }
.prose figure img, .prose figure svg { display: block; width: 100%; background: var(--panel); }
.prose figcaption { margin-top: var(--sp-2); text-align: center; font-family: var(--font-mono); font-size: var(--fs-xs); color: var(--ink-muted); }

.footnotes { margin-top: 3em; padding-top: 1.5em; border-top: 1px solid var(--rule); font-size: var(--fs-base); color: var(--ink-muted); }
.footnotes ol { padding-left: 1.4em; }
.footnote-ref { margin-left: 1px; font-size: 0.75em; vertical-align: super; }

/* ---------- 文章尾部 ---------- */
.post-footer { margin-top: var(--sp-7); padding-top: var(--sp-5); border-top: 1px solid var(--rule); }
.post-footer .post-tags { margin-bottom: var(--sp-4); }
.tag-link {
  display: inline-flex;
  align-items: center;
  height: 24px;
  padding: 0 10px;
  border: 1px solid var(--hairline);
  background: var(--panel);
  color: var(--ink-muted);
  font-size: var(--fs-xs);
  transition: color var(--dur) var(--ease), border-color var(--dur) var(--ease);
}
.tag-link:hover { color: var(--ink); border-color: var(--ink); text-decoration: none; }

.post-nav { display: grid; grid-template-columns: 1fr 1fr; gap: var(--sp-4); margin: var(--sp-7) 0 var(--sp-5); }
.post-nav-prev, .post-nav-next { min-width: 0; }
.post-nav-prev:has(a), .post-nav-next:has(a) { padding: var(--sp-4); border: 1px solid var(--hairline); background: var(--panel); transition: border-color var(--dur) var(--ease); }
.post-nav-prev:has(a):hover, .post-nav-next:has(a):hover { border-color: var(--ink); }
.post-nav-next { text-align: right; }
.post-nav-label { display: block; margin-bottom: var(--sp-1); font-family: var(--font-mono); font-size: var(--fs-xs); letter-spacing: var(--track-label); text-transform: uppercase; color: var(--ink-muted); }
.post-nav a { font-size: var(--fs-lg); }
.post-nav a:hover { text-decoration: underline; text-underline-offset: 3px; }

.related-posts { margin: var(--sp-7) 0 var(--sp-4); }
.prose .related-posts h2 { display: flex; align-items: center; gap: var(--sp-2); margin: 0 0 var(--sp-3); padding: 0; border: 0; font-family: var(--font-mono); font-size: var(--fs-xs); letter-spacing: var(--track-label); text-transform: uppercase; color: var(--ink-muted); }
.prose .related-posts h2::before { content: ""; width: 8px; height: 8px; background: var(--signal); }
.related-posts ul { list-style: none; margin: 0; padding: 0; border: 1px solid var(--hairline); background: var(--panel); }
.related-posts li { padding: var(--sp-3) var(--sp-4); border-bottom: 1px solid var(--rule); }
.related-posts li:last-child { border-bottom: 0; }
.related-posts li:hover { background: color-mix(in srgb, var(--tint) 30%, transparent); }
.related-posts a { font-size: var(--fs-lg); }
.related-summary { display: block; margin-top: 2px; color: var(--ink-muted); font-size: var(--fs-sm); }

@media (max-width: 640px) {
  /* 表格保持内容宽度并横向滑动，不压成细长列 */
  .prose td { min-width: 7em; }
  article h1 { font-size: var(--fs-3xl); }
  .prose { font-size: 16px; line-height: 1.9; }
  .prose h2 { font-size: var(--fs-2xl); }
  .post-nav { grid-template-columns: 1fr; }
  .post-nav-next { text-align: left; }
}
