/* 文章页正文版式：经济学人风（参考《公众号排版笔记》第48期四个参数）
 *
 * 01 红色只画线：顶部红短线 / 章节红色序号 / 金句红竖线，不做色块铺底
 * 02 正文 16px · 行距 1.75 · 深灰 #2B2B29（不用纯黑）
 * 03 小标题 18px · 左对齐（不居中、不加图标）+ 红色序号 + 浅灰细线
 * 04 金句 22px 加粗 + 红竖线 · 无底色
 *
 * 只在文章页注入（site/lib/article.mjs），不影响列表页 / 首页。
 * 正文 HTML 已由 site/lib/article-format.mjs 清掉内联样式，这里负责统一版式。
 */

/* ---------- 页面骨架：让正文模块接管文章页主栏 ---------- */

/* 原来的文章标题模块（绝对定位、居中、24px）隐藏，标题改由正文模块内的 .eco-article 渲染，
   这样标题长度再怎么变都不会压到下面固定 top 的正文模块 */
#smv_tem_25_33 { display: none !important; }

/* 正文模块：从原本「让位标题」的 top:130px 上移到 64px，并在 880px 主栏里居中（left:98px） */
#smv_tem_26_24 {
  left: 98px !important;
  top: 64px !important;
  width: 684px !important;
  min-height: 0 !important;
}
/* 云梦模板的正文容器默认居中（text-align:center + 677px 容器），这里拉直 */
#tem_26_24_txt,
#tem_26_24_txt .w-detail,
#tem_26_24_txt .w-detailcontent,
#tem_26_24_txt .centerBox {
  text-align: left !important;
  max-width: none !important;
  width: 100% !important;
  margin: 0 !important;
  padding: 0 !important;
  font-size: inherit !important;
  font-family: inherit !important;
  color: inherit !important;
  line-height: inherit !important;
  letter-spacing: normal !important;
}

/* ---------- 版式变量 ---------- */
.eco-article {
  --eco-red: #C50F3C;
  --eco-ink: #2B2B29;
  --eco-ink-strong: #141414;
  --eco-gray: #9A958E;
  --eco-hairline: #E7E4DF;
  --eco-paper: #FAF9F7;
  --eco-serif: "Songti SC", "Source Han Serif SC", "Noto Serif CJK SC", "Source Han Serif CN",
    STSong, "SimSun", "Songti TC", serif;
  --eco-sans: "PingFang SC", "Microsoft YaHei", "微软雅黑", "Hiragino Sans GB",
    "Source Han Sans SC", "Noto Sans CJK SC", system-ui, sans-serif;
  font-family: var(--eco-sans);
  color: var(--eco-ink);
  font-size: 16px;
  line-height: 1.75;
  text-align: left;
  -webkit-font-smoothing: antialiased;
}

/* ---------- 顶部：红短线 + 标题 + 元信息 ---------- */
.eco-article .eco-rule {
  width: 44px;
  height: 4px;
  background: var(--eco-red);
  margin: 0 0 24px;
}
.eco-article .eco-title {
  margin: 0 0 16px;
  padding: 0;
  font-family: var(--eco-serif);
  font-size: 34px;
  line-height: 1.36;
  font-weight: 700;
  color: var(--eco-ink-strong);
  letter-spacing: 0.01em;
  text-align: left;
  word-break: break-word;
}
.eco-article .eco-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0 10px;
  font-size: 13px;
  line-height: 1.8;
  color: var(--eco-gray);
  letter-spacing: 0.02em;
}
.eco-article .eco-meta .eco-sep { color: #D8D3CC; }
.eco-article .eco-meta .eco-cat { color: #6E6961; }

/* 导语（站点摘要）：左侧红竖线，和正文拉开层级 */
.eco-article .eco-lede {
  margin: 28px 0 0;
  padding: 14px 0 0;
  border: 0;
  border-top: 1px solid var(--eco-hairline);
  font-family: var(--eco-serif);
  font-size: 17px;
  line-height: 1.9;
  color: #6E6961;
}

/* ---------- 正文 ---------- */
.eco-article .eco-body {
  margin-top: 34px;
  counter-reset: eco-sec;
  font-size: 16px;
  line-height: 1.75;
  color: var(--eco-ink);
}
.eco-article .eco-body > :first-child { margin-top: 0; }

.eco-article .eco-body p {
  margin: 0 0 1.15em;
  font-size: 16px;
  line-height: 1.75;
  color: var(--eco-ink);
  text-align: left;
  text-indent: 0;
  word-break: break-word;
  overflow-wrap: break-word;
}
.eco-article .eco-body p:last-child { margin-bottom: 0; }

/* 加粗只提字重与墨色，不用彩色 */
.eco-article .eco-body strong,
.eco-article .eco-body b {
  font-weight: 600;
  color: var(--eco-ink-strong);
}
.eco-article .eco-body em,
.eco-article .eco-body i { font-style: italic; }

/* 链接：不要蓝色，红色下划线（线，不是色块） */
.eco-article .eco-body a {
  color: inherit;
  text-decoration: none;
  border-bottom: 1px solid rgba(227, 18, 11, 0.35);
}
.eco-article .eco-body a:hover {
  color: var(--eco-red);
  border-bottom-color: var(--eco-red);
}

/* 小标题：18px、左对齐、浅灰细线、红色序号 */
.eco-article .eco-body h2,
.eco-article .eco-body h3,
.eco-article .eco-body h4 {
  margin: 46px 0 14px;
  padding: 0 0 10px;
  border-bottom: 1px solid var(--eco-hairline);
  font-family: var(--eco-sans);
  font-size: 18px;
  line-height: 1.55;
  font-weight: 700;
  color: var(--eco-ink-strong);
  text-align: left;
  letter-spacing: 0.01em;
}
.eco-article .eco-body > h2:first-child,
.eco-article .eco-body > h3:first-child { margin-top: 4px; }

.eco-article .eco-body--numbered h2 {
  position: relative;
  padding-left: 42px;
  counter-increment: eco-sec;
}
/* 固定信息栏（关于/议程/教授简介…）：有小标题样式，但不吃 01/02 编号 */
.eco-article .eco-body--numbered h2.eco-h2--plain {
  padding-left: 0;
  counter-increment: none;
}
.eco-article .eco-body--numbered h2.eco-h2--plain::before { display: none; }
.eco-article .eco-body--numbered h2::before {
  content: counter(eco-sec, decimal-leading-zero);
  position: absolute;
  left: 0;
  top: 0;
  font-family: var(--eco-serif);
  font-size: 18px;
  line-height: 1.55;
  font-weight: 600;
  letter-spacing: 0.04em;
  color: var(--eco-red);
}

/* 金句：22px 加粗 + 红竖线，无底色 */
.eco-article .eco-body blockquote {
  margin: 34px 0;
  padding: 2px 0 2px 20px;
  border-left: 4px solid var(--eco-red);
  background: none;
  font-size: 22px;
  line-height: 1.62;
  font-weight: 700;
  color: var(--eco-ink-strong);
  text-align: left;
}
.eco-article .eco-body blockquote p {
  margin: 0;
  font-size: inherit;
  line-height: inherit;
  font-weight: inherit;
  color: inherit;
}
.eco-article .eco-body blockquote p + p { margin-top: 0.6em; }
/* 多段落的引用（公众号「引用」外壳常包 3 段正文）不是金句，降回正文级 */
.eco-article .eco-body blockquote:has(p + p) {
  font-size: 17px;
  line-height: 1.7;
  font-weight: 600;
  margin: 28px 0;
  padding-left: 16px;
  border-left-width: 3px;
}
/* 外链视频/微信视频号嵌入被中和后（无 src）不要留空框 */
.eco-article .eco-body iframe:not([src]),
.eco-article .eco-body video:not([src]):not(:has(> source)) { display: none; }

/* 图片：整段只有一张图 → 通栏块级；行内小图标保持基线对齐 */
.eco-article .eco-body img {
  display: inline-block;
  max-width: 100%;
  height: auto;
  vertical-align: middle;
  border: 0;
}
.eco-article .eco-body p > img:only-child,
.eco-article .eco-body section > img:only-child,
.eco-article .eco-body div > img:only-child {
  display: block;
  margin: 0 auto;
}
/* 图片的上下留白交给所在段落，方便「连续图」单独收窄 */
.eco-article .eco-body p:has(> img:only-child) { margin: 26px 0; }
/* 连续图（公众号长图常被切成多张）：彼此只留 8px，避免被正文段距撑开。
   两侧都要压，否则 26px 的 margin-bottom 会和 8px 的 margin-top 折叠成 26px */
.eco-article .eco-body p:has(> img:only-child) + p:has(> img:only-child) { margin-top: 8px; }
.eco-article .eco-body p:has(> img:only-child):has(+ p > img:only-child) { margin-bottom: 8px; }

/* 列表 */
.eco-article .eco-body ul,
.eco-article .eco-body ol {
  margin: 0 0 1.15em;
  padding-left: 1.5em;
  font-size: 16px;
  line-height: 1.75;
}
.eco-article .eco-body li { margin: 0.25em 0; }
.eco-article .eco-body li::marker { color: #B6AFA6; }

/* 表格：细线、无重色 */
.eco-article .eco-body table {
  width: 100%;
  margin: 28px 0;
  border-collapse: collapse;
  font-size: 14px;
  line-height: 1.65;
}
.eco-article .eco-body th,
.eco-article .eco-body td {
  padding: 8px 10px;
  border: 1px solid var(--eco-hairline);
  text-align: left;
  vertical-align: top;
  color: var(--eco-ink);
}
.eco-article .eco-body th { background: var(--eco-paper); font-weight: 600; }

/* 分割线 / 代码 / 视频 */
.eco-article .eco-body hr {
  margin: 34px 0;
  border: 0;
  border-top: 1px solid var(--eco-hairline);
}
.eco-article .eco-body pre {
  margin: 26px 0;
  padding: 16px 18px;
  background: var(--eco-paper);
  overflow: auto;
  font-size: 13px;
  line-height: 1.7;
}
.eco-article .eco-body code {
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 0.92em;
  color: #6E6961;
}
.eco-article .eco-body pre code { color: inherit; font-size: inherit; }
.eco-article .eco-body iframe,
.eco-article .eco-body video {
  display: block;
  width: 100%;
  max-width: 100%;
  margin: 28px auto;
  border: 0;
  aspect-ratio: 16 / 9;
}

/* 兜底：万一有残留内联样式（例如表格、iframe 分支），统一压回正文色阶 */
.eco-article .eco-body span,
.eco-article .eco-body section,
.eco-article .eco-body div {
  font-family: inherit;
  color: inherit;
}

/* ---------- 图注 / 图表标题 ---------- */
.eco-article .eco-body p.eco-caption {
  margin: 6px 0 16px;
  font-family: var(--eco-sans);
  font-size: 13px;
  line-height: 1.7;
  color: #8d8a84;
  letter-spacing: 0.01em;
  text-align: left;
}
/* 图表标题（图上方）稍微深一点、和图片贴紧 */
.eco-article .eco-body p.eco-caption--label {
  margin: 22px 0 8px;
  font-size: 14px;
  font-weight: 600;
  color: #55534e;
}
/* 连续图注（注 + 来源）之间收紧 */
.eco-article .eco-body p.eco-caption + p.eco-caption {
  margin-top: -10px;
}
.eco-article .eco-body img + p.eco-caption,
.eco-article .eco-body picture + p.eco-caption {
  margin-top: 8px;
}

/* ------------------------------------------------------------------
 * 旧模板（云梦镜像）会给 #smv_Main / #mainContentWrapper 等容器写死高度，
 * 正文一变短就比内容大，多出来的那截会把页脚顶起来、页面底部留一大片空白。
 * 这里统一交给内容决定高度，并让页面只有一个滚动容器（html/body 不再各自滚动）。
 * 2026-11-10 加：跟 article-layout.js 的 fitChain/clampDoc 互为兜底。
 * ---------------------------------------------------------------- */
#smv_Main,
#mainContentWrapper,
#smv_MainContent,
.smvContainer,
.smvWrapper {
  height: auto !important;
  min-height: 0 !important;
}
html,
body {
  overflow: visible !important;
}

/* 「编者按」卡（公众号里是图片，已 OCR 转文字） */
.eco-body .eco-note{margin:26px 0 30px;padding:22px 24px 8px;background:#EFF5FA;border-left:4px solid #0B5FA5;border-radius:2px}
.eco-body .eco-note .eco-note-label{margin:0 0 14px;font-size:15px;font-weight:600;color:#0B5FA5;letter-spacing:.18em}
.eco-body .eco-note p{margin:0 0 12px;font-size:16px;line-height:1.85;color:#2B2B29;letter-spacing:.01em}
@media (max-width:640px){.eco-body .eco-note{padding:18px 16px 6px}}

/* 视频清晰度切换（video-quality.js） */
.vq-host{position:relative;display:block}
.vq-host>video{display:block;width:100%}
.vq-wrap{position:absolute;top:12px;right:12px;z-index:5}
.vq-btn{appearance:none;border:0;border-radius:3px;padding:5px 10px;font-size:12px;line-height:1;
  color:#fff;background:rgba(0,0,0,.55);cursor:pointer;letter-spacing:.02em;backdrop-filter:blur(4px)}
.vq-btn:hover{background:rgba(0,0,0,.72)}
.vq-menu{position:absolute;top:calc(100% + 6px);right:0;min-width:86px;display:none;flex-direction:column;
  background:rgba(20,20,20,.94);border-radius:4px;padding:4px;box-shadow:0 6px 20px rgba(0,0,0,.28)}
.vq-menu.is-open{display:flex}
.vq-item{appearance:none;border:0;background:none;color:#e8e8e8;text-align:left;padding:7px 10px;font-size:12px;
  border-radius:3px;cursor:pointer;white-space:nowrap}
.vq-item:hover{background:rgba(255,255,255,.12)}
.vq-item[aria-checked="true"]{color:#E3120B;font-weight:600}
.vq-item[aria-checked="true"]::after{content:" ·";color:#E3120B}
@media (max-width:640px){.vq-wrap{top:8px;right:8px}.vq-btn{padding:4px 8px}}
