/* ============================================================
   宠物日报 THE PAW TIMES · 报纸风视觉系统 v2
   深墨绿 + 米白 + 朱红 · 新闻机构配色
   版式语法：报头 ＋ 栏目名 ＋ 正文 ＋ 落款
   ============================================================ */

:root {
  --ink: #16382E;
  --ink-deep: #0D2921;
  --ink-soft: #2E5548;
  --paper: #F6F1E5;
  --paper-2: #EEE7D3;
  --paper-card: #FBF8EF;
  --accent: #C0431F;
  --accent-deep: #9E3416;
  --gold: #D9A05B;
  --text: #2B342F;
  --muted: #6C7A72;
  --rule: #CFC6AC;
  --rule-strong: #16382E;
  /* 思源自托管（assets/fonts/fonts-zh.css 中文页 / fonts-intl.css 英法页）；"PT Symbols" 只补思源缺的 ▾ 等符号；
     系统字体只列名字、不随站分发（苹方/宋体/雅黑无网页嵌入授权，绝不能自托管）。 */
  --serif: "Noto Serif SC", "PT Symbols", "Songti SC", "STSong", "SimSun", serif;
  --display: "Playfair Display", "Noto Serif SC", "PT Symbols", serif;
  --sans: "Noto Sans SC", "PT Symbols", -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif;
}

* { margin: 0; padding: 0; box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 64px; }
body {
  font-family: var(--serif);
  background: var(--paper);
  color: var(--text);
  line-height: 1.85;
  font-size: 16px;
  -webkit-font-smoothing: antialiased;
}
a { color: inherit; text-decoration: none; }
img { max-width: 100%; display: block; }
.wrap { max-width: 1120px; margin: 0 auto; padding: 0 24px; }
::selection { background: var(--accent); color: #fff; }

/* ---------------- 阅读进度条（文章页） ---------------- */
#read-progress {
  position: fixed; top: 0; left: 0; height: 3px; width: 0;
  background: var(--accent); z-index: 999; transition: width .1s linear;
}

/* ---------------- 版号系统 ---------------- */
.edition-tag {
  display: inline-flex; align-items: baseline; gap: 6px;
  font-family: var(--sans); font-size: 11px; letter-spacing: .12em;
  color: var(--paper); background: var(--ink);
  padding: 3px 10px; border-radius: 2px; white-space: nowrap;
}
.edition-tag small { opacity: .65; letter-spacing: .18em; }
.edition-tag.red { background: var(--accent); }
.edition-tag.outline { background: transparent; color: var(--ink); border: 1px solid var(--ink); }

/* ---------------- 顶栏 ---------------- */
.topbar { background: var(--ink-deep); color: var(--paper); font-family: var(--sans); font-size: 12.5px; letter-spacing: .06em; }
.topbar-inner { display: flex; justify-content: space-between; align-items: center; padding: 7px 0; gap: 16px; }
.topbar .t-date { opacity: .92; }
.topbar .t-mid { opacity: .55; letter-spacing: .2em; }
.topbar .t-fortune { opacity: .75; }
@media (max-width: 720px) { .topbar .t-mid, .topbar .t-fortune { display: none; } }

/* ---------------- 报头 ---------------- */
.masthead { background: var(--paper); border-bottom: 3px double var(--rule-strong); }
.masthead-inner {
  display: grid; grid-template-columns: 232px 1fr 232px; align-items: center;
  gap: 24px; padding: 22px 0 16px;
}
.mh-left, .mh-right {
  font-family: var(--sans); font-size: 12px; color: var(--muted); line-height: 2;
  border: 1px solid var(--rule); padding: 10px 14px; background: var(--paper-card);
  position: relative;
}
.mh-left b, .mh-right b { color: var(--ink); font-weight: 700; }
.mh-left::before, .mh-right::before {
  content: attr(data-label); position: absolute; top: -9px; left: 10px;
  background: var(--paper); padding: 0 8px;
  font-size: 10.5px; letter-spacing: .3em; color: var(--accent); font-weight: 700;
}
.mh-right { text-align: right; }
.mh-right::before { left: auto; right: 10px; }

.mh-center { text-align: center; display: flex; align-items: center; justify-content: center; gap: 18px; }
.mh-title {
  font-family: var(--serif); font-weight: 900;
  font-size: 58px; letter-spacing: .12em; color: var(--ink);
  line-height: 1.15; white-space: nowrap;
}
.mh-en { font-family: var(--display); font-size: 13px; letter-spacing: .42em; text-transform: uppercase; color: var(--accent); margin-top: 6px; }
.mh-slogan { font-family: var(--sans); font-size: 12px; color: var(--muted); letter-spacing: .28em; margin-top: 4px;
  white-space: nowrap; max-width: 100%; overflow: hidden; text-overflow: ellipsis; }
/* 拉丁文标语收紧字距，保证三语各一行，报头高度一致 */
html[lang="en"] .mh-slogan, html[lang="fr"] .mh-slogan { letter-spacing: .1em; }

.seal {
  width: 62px; height: 62px; flex: 0 0 auto;
  background: var(--accent); color: #FBF6EA;
  display: grid; grid-template-columns: 1fr 1fr; place-items: center;
  font-size: 21px; font-weight: 700; line-height: 1;
  padding: 7px; transform: rotate(-4deg);
  box-shadow: 2px 3px 0 rgba(13, 41, 33, .25);
  border-radius: 3px; user-select: none;
}
.seal span { display: block; }
@media (max-width: 960px) {
  .masthead-inner { grid-template-columns: 1fr; text-align: center; gap: 8px; padding: 12px 0 10px; min-height: 0; }
  .mh-title { font-size: 38px; }
  .mh-en { margin-top: 3px; }
  .mh-slogan { margin-top: 2px; }
  .mh-left, .mh-right { display: none; }
  .mh-title { font-size: 40px; }
}
@media (max-width: 480px) { .mh-title { font-size: 32px; letter-spacing: .08em; } .seal { width: 48px; height: 48px; font-size: 16px; } }

/* ---------------- 导航 ---------------- */
.nav { background: var(--paper); border-bottom: 1px solid var(--rule-strong); position: sticky; top: 0; z-index: 100; }
.nav::after { content: ""; display: block; height: 3px; background: var(--ink); margin-top: -4px; }
.nav-inner { display: flex; justify-content: center; align-items: center; position: relative; }
.nav a.nlink {
  font-family: var(--sans); font-size: 14.5px; font-weight: 500; letter-spacing: .12em;
  padding: 12px 20px 8px; color: var(--ink);
  border-bottom: 3px solid transparent; margin-bottom: -4px;
  transition: color .15s, border-color .15s;
}
.nav a.nlink:hover { color: var(--accent); }
.nav a.nlink.active { color: var(--accent); border-bottom-color: var(--accent); font-weight: 700; }
.nav-burger {
  display: none; background: none; border: 1px solid var(--rule-strong);
  font-family: var(--sans); font-size: 13px; letter-spacing: .2em;
  color: var(--ink); padding: 6px 14px; cursor: pointer; margin: 10px auto;
}
@media (max-width: 900px) {
  .nav-burger { display: block; }
  .nav-links { display: none; flex-direction: column; width: 100%; border-top: 1px solid var(--rule); }
  .nav-links.open { display: flex; }
  .nav a.nlink { border-bottom: 1px solid var(--rule); margin: 0; padding: 12px; text-align: center; }
  .nav a.nlink.active { border-bottom: 1px solid var(--accent); }
}

/* ---------------- 今日导读（自动跑马灯） ---------------- */
.toc-strip { background: var(--paper-2); border-bottom: 1px solid var(--rule); }
.toc-wrap { display: flex; align-items: stretch; max-width: 1120px; margin: 0 auto; padding: 0 24px; }
.toc-label {
  font-family: var(--sans); font-size: 11.5px; font-weight: 700; letter-spacing: .3em;
  color: var(--accent); white-space: nowrap; padding: 9px 14px 9px 0;
  display: flex; align-items: center;
}
.toc-scroll {
  flex: 1; overflow: hidden; position: relative;
  -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 28px, #000 calc(100% - 28px), transparent 100%);
  mask-image: linear-gradient(90deg, transparent 0, #000 28px, #000 calc(100% - 28px), transparent 100%);
}
.toc-track { display: flex; width: max-content; animation: toc-marquee 48s linear infinite; }
.toc-strip:hover .toc-track { animation-play-state: paused; }
@keyframes toc-marquee { from { transform: translateX(0); } to { transform: translateX(-33.3333%); } }
@media (prefers-reduced-motion: reduce) { .toc-track { animation: none; } }
.toc-track a.toc-item {
  font-family: var(--sans); font-size: 12.5px; color: var(--ink);
  white-space: nowrap; padding: 9px 16px; border-left: 1px solid var(--rule);
  display: inline-flex; gap: 8px; align-items: baseline;
}
.toc-track a.toc-item:hover { color: var(--accent); }
.toc-track a.toc-item .t-no { font-size: 10.5px; color: var(--accent); font-weight: 700; letter-spacing: .08em; }
.toc-all {
  font-family: var(--sans); font-size: 12.5px; color: var(--muted); white-space: nowrap;
  display: flex; align-items: center; padding: 0 0 0 16px; margin-left: 4px;
  border-left: 1px solid var(--rule); background: var(--paper-2);
}
.toc-all:hover { color: var(--accent); }

/* ---------------- 版式通用 ---------------- */
.section { padding: 44px 24px 8px; }  /* 与 .wrap 的左右内边距一致（本规则在 .wrap 之后，会覆盖它的 padding） */
.sec-head {
  display: flex; align-items: baseline; gap: 14px;
  border-bottom: 3px double var(--rule-strong); padding-bottom: 8px; margin-bottom: 24px;
}
.sec-head h2 { font-size: 24px; font-weight: 900; letter-spacing: .14em; color: var(--ink); }
.sec-head .sec-en { font-family: var(--display); font-size: 12px; letter-spacing: .3em; text-transform: uppercase; color: var(--accent); }
.sec-head .sec-edition { margin-left: auto; }
.sec-head .sec-more { margin-left: 14px; font-family: var(--sans); font-size: 13px; color: var(--muted); white-space: nowrap; }
.sec-head .sec-more:hover { color: var(--accent); }

.kicker {
  display: inline-block; font-family: var(--sans); font-size: 12px; font-weight: 700;
  letter-spacing: .22em; color: var(--accent);
  border: 1px solid currentColor; padding: 2px 10px 2px 12px; border-radius: 2px;
  margin-bottom: 12px;
}
.byline { font-family: var(--sans); font-size: 12.5px; color: var(--muted); letter-spacing: .08em; display: flex; flex-wrap: wrap; gap: 6px 18px; margin: 14px 0 4px; }
.byline b { color: var(--ink); }

.btn {
  display: inline-block; font-family: var(--sans); font-size: 14px; font-weight: 700;
  letter-spacing: .18em; color: #FBF6EA; background: var(--accent);
  padding: 12px 30px; border-radius: 2px; border: 1px solid var(--accent);
  transition: background .15s, transform .15s;
}
.btn:hover { background: var(--accent-deep); transform: translateY(-1px); }
.btn-ghost { background: transparent; color: var(--ink); border: 1px solid var(--ink); }
.btn-ghost:hover { background: var(--ink); color: var(--paper); }
.btn-light { background: var(--paper); color: var(--ink); border-color: var(--paper); }
.btn-light:hover { background: var(--paper-2); color: var(--ink-deep); }

/* ---------------- 头版 ---------------- */
.front-grid { display: grid; grid-template-columns: 1.62fr 1fr; gap: 44px; padding: 36px 0 10px; }
@media (max-width: 900px) { .front-grid { grid-template-columns: 1fr; gap: 30px; } }

.headline { border: 1px solid var(--rule-strong); background: var(--paper-card); padding: 26px 30px 28px; position: relative; }
.headline::before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 4px; background: var(--ink); }
.headline .hl-meta { display: flex; justify-content: space-between; align-items: center; margin-bottom: 14px; }
.headline .hl-meta .kicker { margin-bottom: 0; }
.headline h1 {
  font-size: 35px; font-weight: 900; line-height: 1.45; letter-spacing: .02em;
  color: var(--ink); margin-bottom: 6px; text-wrap: balance;
}
.headline h1 a:hover { color: var(--accent); }
.headline .standfirst { font-size: 16px; color: var(--muted); margin: 10px 0 0; }
.headline .lead-photo { margin: 18px 0 6px; border: 1px solid var(--rule-strong); padding: 8px; background: #fff; }
.headline .lead-photo .ph {
  height: 230px; background: var(--ink); color: var(--paper);
  display: flex; align-items: center; justify-content: center; text-align: center;
  font-size: 15px; letter-spacing: .2em; opacity: .95; position: relative; overflow: hidden;
}
.headline .lead-photo .ph::before {
  content: ""; position: absolute; inset: 0;
  background:
    repeating-linear-gradient(45deg, transparent 0 22px, rgba(246,241,229,.05) 22px 24px),
    repeating-linear-gradient(-45deg, transparent 0 22px, rgba(246,241,229,.05) 22px 24px);
}
.headline .lead-photo .ph .ph-cat {
  font-size: 15px; letter-spacing: .4em; text-indent: .4em;
  border: 1px solid rgba(246,241,229,.55); padding: 8px 14px;
  margin-right: 18px; opacity: .85; white-space: nowrap;
}
.headline .lead-photo figcaption { font-family: var(--sans); font-size: 12px; color: var(--muted); padding-top: 8px; text-align: center; letter-spacing: .1em; }
.headline .excerpt { margin-top: 14px; }
.headline .excerpt p { margin-bottom: 12px; }
.headline .hl-actions { margin-top: 16px; display: flex; gap: 14px; align-items: center; flex-wrap: wrap; }
.headline .hl-actions .jump { font-family: var(--sans); font-size: 12.5px; color: var(--muted); }
@media (max-width: 900px) { .headline h1 { font-size: 27px; } .headline { padding: 20px 18px 22px; } }

/* 侧栏：今日速览（短讯三段式）。align-self:start —— 右栏高时不再把头条拉伸留白 */
.briefing { border: 3px double var(--rule-strong); background: var(--paper-card); padding: 20px 22px;
  align-self: start; }
.briefing .bf-head { display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid var(--rule); padding-bottom: 10px; margin-bottom: 6px; }
.briefing .bf-head h3 { font-size: 18px; letter-spacing: .3em; font-weight: 900; color: var(--ink); }
.briefing .bf-head small { display: block; font-family: var(--display); font-size: 10px; letter-spacing: .3em; color: var(--accent); font-weight: 700; margin-top: 2px; }
.brief-item { padding: 13px 0; border-bottom: 1px dashed var(--rule); font-size: 14.5px; counter-increment: brief; position: relative; }
.brief-item:last-of-type { border-bottom: 0; }
.brief-item .b-body { padding-left: 30px; }
.brief-item .b-body::before {
  content: counter(brief, decimal-leading-zero);
  position: absolute; left: 0; top: 15px;
  font-family: var(--display); font-size: 13px; font-weight: 700; color: var(--accent);
  border: 1px solid var(--accent); border-radius: 50%;
  width: 22px; height: 22px; display: flex; align-items: center; justify-content: center;
}
.brief-item .b-sign { display: block; text-align: right; font-family: var(--sans); font-size: 12px; color: var(--muted); margin-top: 6px; }
.brief-foot { border-top: 1px solid var(--rule); margin-top: 4px; padding-top: 10px; font-family: var(--sans); font-size: 11.5px; color: var(--muted); text-align: center; letter-spacing: .2em; }

/* 更正框 */
.corrections {
  border: 1px solid var(--accent); border-left: 5px solid var(--accent);
  background: var(--paper-card); padding: 16px 20px; margin-top: 22px;
}
.corrections h4 { font-size: 15px; letter-spacing: .3em; color: var(--accent); font-weight: 900; margin-bottom: 8px; }
.corrections h4 small { font-family: var(--display); font-size: 10px; letter-spacing: .25em; opacity: .7; margin-left: 8px; }
.corrections p { font-size: 13.5px; color: var(--text); margin-bottom: 6px; }
.corrections .c-note { font-family: var(--sans); font-size: 12px; color: var(--muted); }

/* ---------------- 今日版面（内页索引） ---------------- */
.ed-index { border-top: 3px double var(--rule-strong); }
.ed-row {
  display: grid; grid-template-columns: 76px 1.05fr 1.5fr auto; gap: 22px;
  padding: 20px 6px; border-bottom: 1px solid var(--rule); align-items: center;
  transition: background .15s;
}
.ed-row:hover { background: var(--paper-card); }
.ed-no { font-family: var(--display); font-size: 30px; font-weight: 900; color: var(--accent); line-height: 1; }
.ed-no small { display: block; font-family: var(--sans); font-size: 10.5px; color: var(--muted); letter-spacing: .3em; margin-top: 5px; }
.ed-desk h3 { font-size: 18px; font-weight: 900; color: var(--ink); letter-spacing: .1em; }
.ed-desk .ed-en { font-family: var(--display); font-size: 10px; letter-spacing: .22em; color: var(--accent); text-transform: uppercase; margin: 2px 0 5px; }
.ed-desk .ed-duty { font-family: var(--sans); font-size: 12px; color: var(--muted); }
.ed-latest h4 { font-size: 16.5px; font-weight: 900; line-height: 1.5; }
.ed-latest h4 a:hover { color: var(--accent); }
.ed-latest p { font-size: 13px; color: var(--muted); margin-top: 3px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.ed-latest .ed-none { font-size: 13px; color: var(--muted); }
.ed-go {
  font-family: var(--sans); font-size: 12.5px; color: var(--ink);
  border: 1px solid var(--rule-strong); padding: 7px 12px; white-space: nowrap;
  display: inline-block; transition: all .15s;
}
.ed-row:hover .ed-go { background: var(--ink); color: var(--paper); }
@media (max-width: 860px) {
  .ed-row { grid-template-columns: 52px 1fr auto; gap: 14px; padding: 16px 2px; }
  .ed-no { font-size: 22px; }
  .ed-latest { grid-column: 2 / 4; }
}
@media (max-width: 560px) { .ed-desk .ed-duty { display: none; } }

/* ---------------- 编辑部署名条 ---------------- */
.desk-strip {
  border: 1px solid var(--rule-strong); background: var(--paper-card);
  display: flex; align-items: center; gap: 18px; padding: 12px 22px; flex-wrap: wrap;
}
.desk-strip .ds-label {
  font-family: var(--sans); font-size: 11.5px; font-weight: 700;
  letter-spacing: .3em; color: var(--accent); white-space: nowrap;
}
.desk-strip .ds-names { font-family: var(--sans); font-size: 12.5px; color: var(--muted); letter-spacing: .04em; flex: 1; line-height: 2; }
.desk-strip .ds-names b { color: var(--ink); font-weight: 700; margin-right: 1px; }
.desk-strip a { font-family: var(--sans); font-size: 12.5px; color: var(--muted); white-space: nowrap; }
.desk-strip a:hover { color: var(--accent); }

/* ---------------- 编辑部 ---------------- */
.staff-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }
@media (max-width: 900px) { .staff-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 520px) { .staff-grid { grid-template-columns: 1fr; } }
.badge {
  border: 1px solid var(--rule-strong); background: var(--paper-card); padding: 18px 16px 14px;
  text-align: center; position: relative; transition: transform .18s, box-shadow .18s;
}
.badge:hover { transform: translateY(-3px); box-shadow: 0 10px 24px rgba(13,41,33,.12); }
.badge .b-char {
  width: 64px; height: 64px; margin: 0 auto 10px; border-radius: 50%;
  background: var(--ink); color: var(--paper);
  display: flex; align-items: center; justify-content: center;
  font-size: 30px; font-weight: 900; border: 3px double var(--paper);
  box-shadow: 0 0 0 1px var(--ink);
}
.badge.p0 .b-char { background: var(--accent); }
.badge .b-char.two { font-size: 21px; line-height: 1.18; letter-spacing: .02em; }
.badge h4 { font-size: 15.5px; font-weight: 900; color: var(--ink); letter-spacing: .06em; }
.badge .b-role { font-family: var(--sans); font-size: 12px; color: var(--accent); font-weight: 700; letter-spacing: .18em; margin: 2px 0 8px; }
.badge .b-desc { font-size: 12.5px; color: var(--muted); line-height: 1.7; }
.badge .b-tag {
  position: absolute; top: 8px; right: 8px; font-family: var(--sans);
  font-size: 10px; letter-spacing: .1em; color: var(--muted);
  border: 1px solid var(--rule); padding: 1px 6px; border-radius: 2px;
}

/* ---------------- 产品模块（日报 / 周刊，与订阅模块对齐） ---------------- */
.band-module { padding: 44px 0 0; }
.band-panel {
  background: var(--ink-deep); color: var(--paper);
  padding: 40px 44px;
  display: grid; grid-template-columns: 340px 1fr; gap: 48px;
  align-items: center; min-height: 470px;
}
.band-card .bc-headline { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.band-copy p { color: rgba(246,241,229,.82); font-size: 15px; margin-bottom: 20px; }
.band-copy .wb-actions { display: flex; gap: 14px; flex-wrap: wrap; }
@media (max-width: 860px) {
  .band-panel { grid-template-columns: 1fr; gap: 30px; padding: 30px 22px; min-height: 0; }
}
.band-card { background: var(--paper); color: var(--ink); padding: 20px 22px 14px; box-shadow: 8px 8px 0 rgba(0,0,0,.28); transform: rotate(-1.2deg); }
.band-card .bc-issue { font-family: var(--display); font-size: 11px; letter-spacing: .3em; color: var(--accent); font-weight: 700; }
.band-card h3 { font-size: 26px; font-weight: 900; letter-spacing: .16em; margin: 6px 0 2px; }
.band-card .bc-en { font-family: var(--sans); font-size: 10.5px; letter-spacing: .3em; color: var(--muted); }
.band-card hr { border: 0; border-top: 3px double var(--rule-strong); margin: 12px 0; }
.band-card .bc-kicker { font-family: var(--sans); font-size: 10.5px; font-weight: 700; letter-spacing: .2em; color: var(--accent); }
.band-card .bc-headline { font-weight: 900; font-size: 15.5px; line-height: 1.7; margin: 4px 0 10px; }
.band-card .bc-brief { font-size: 12px; color: var(--muted); line-height: 1.8; margin-bottom: 4px; }
.band-card ul { list-style: none; font-size: 13.5px; }
.band-card ul li { padding: 6px 0; border-bottom: 1px dashed var(--rule); }
.band-card ul li:last-child { border-bottom: 0; }
.band-card ul li b { color: var(--accent); font-family: var(--sans); font-size: 12px; margin-right: 8px; }
.band-card .bc-foot { font-family: var(--sans); font-size: 10px; color: var(--muted); letter-spacing: .15em; border-top: 1px dashed var(--rule); margin-top: 10px; padding-top: 8px; text-align: center; }
.band h2 { font-size: 26px; font-weight: 900; letter-spacing: .1em; margin-bottom: 14px; }
.band h2 small { display: block; font-family: var(--display); font-size: 12px; letter-spacing: .35em; color: var(--gold); margin-bottom: 6px; }
.band p { color: rgba(246,241,229,.82); font-size: 15px; margin-bottom: 20px; }
.band .wb-actions { display: flex; gap: 14px; flex-wrap: wrap; }

/* ---------------- 订阅 ---------------- */
.tiers-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; align-items: stretch; }
@media (max-width: 1100px) { .tiers-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 640px) { .tiers-grid { grid-template-columns: 1fr; } }
.tier {
  border: 1px solid var(--rule-strong); background: var(--paper-card);
  padding: 26px 26px 22px; display: flex; flex-direction: column; position: relative;
}
.tier.featured { background: var(--ink); color: var(--paper); border-color: var(--ink); box-shadow: 8px 8px 0 rgba(13,41,33,.2); }
.tier .t-name { font-size: 18px; font-weight: 900; letter-spacing: .16em; }
.tier .t-en { font-family: var(--display); font-size: 10.5px; letter-spacing: .3em; text-transform: uppercase; color: var(--accent); font-weight: 700; margin-top: 2px; }
.tier .t-price { font-size: 40px; font-weight: 900; color: var(--ink); margin: 14px 0 2px; font-family: var(--display); }
.tier .t-price small { font-size: 14px; font-family: var(--sans); color: var(--muted); letter-spacing: .1em; }
.tier.featured .t-price { color: var(--paper); }
.tier.featured .t-price small { color: rgba(246,241,229,.6); }
.tier .t-old { font-family: var(--sans); font-size: 12.5px; color: var(--muted); }
.tier ul { list-style: none; margin: 16px 0 22px; font-size: 14px; }
.tier ul li { padding: 7px 0 7px 22px; border-bottom: 1px dashed var(--rule); position: relative; }
.tier.featured ul li { border-bottom-color: rgba(246,241,229,.18); }
.tier ul li::before { content: "✓"; position: absolute; left: 0; color: var(--accent); font-weight: 700; }
.tier.featured ul li::before { color: var(--gold); }
.tier .t-cta { margin-top: auto; text-align: center; }
.tier .t-flag {
  position: absolute; top: -12px; right: 18px; background: var(--accent); color: #fff;
  font-family: var(--sans); font-size: 11.5px; letter-spacing: .2em; padding: 3px 12px; border-radius: 2px;
}

/* ---------------- CTA 带 ---------------- */
.cta-band { background: var(--ink-deep); color: var(--paper); text-align: center; margin-top: 50px; }
.cta-inner { padding: 54px 0; }
.cta-band h2 { font-size: 26px; font-weight: 900; letter-spacing: .12em; margin-bottom: 10px; }
.cta-band p { color: rgba(246,241,229,.75); margin-bottom: 26px; font-size: 15px; }
.cta-band .slogan-line { font-family: var(--sans); font-size: 12px; letter-spacing: .4em; color: var(--gold); margin-bottom: 16px; }

/* ---------------- 页脚 ---------------- */
footer { background: var(--ink-deep); color: rgba(246,241,229,.82); margin-top: 0; border-top: 4px solid var(--accent); }
.foot-grid { display: grid; grid-template-columns: 1.4fr 1fr 1fr 1fr; gap: 36px; padding: 44px 0 34px; }
@media (max-width: 860px) { .foot-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 520px) { .foot-grid { grid-template-columns: 1fr; } }
.foot-brand .fb-title { font-size: 22px; font-weight: 900; letter-spacing: .16em; color: var(--paper); }
.foot-brand .fb-en { font-family: var(--display); font-size: 11px; letter-spacing: .35em; color: var(--gold); margin: 4px 0 12px; }
.foot-brand p { font-size: 13px; line-height: 2; color: rgba(246,241,229,.6); }
footer h5 { font-family: var(--sans); font-size: 13px; letter-spacing: .25em; color: var(--paper); margin-bottom: 14px; font-weight: 700; }
footer ul { list-style: none; }
footer ul li { padding: 4px 0; }
footer ul a { font-size: 13.5px; color: rgba(246,241,229,.65); }
footer ul a:hover { color: var(--gold); }
.foot-bottom { border-top: 1px solid rgba(246,241,229,.14); padding: 16px 0 20px; }
.foot-bottom p { font-family: var(--sans); font-size: 12px; color: rgba(246,241,229,.45); text-align: center; line-height: 2.1; letter-spacing: .05em; }

/* ---------------- 文章页 ---------------- */
.article-shell { max-width: 760px; margin: 0 auto; padding: 40px 24px 30px; }
.article-head { text-align: center; border-bottom: 3px double var(--rule-strong); padding-bottom: 22px; margin-bottom: 26px; }
.article-head .ah-meta { display: flex; justify-content: center; gap: 10px; margin-bottom: 14px; }
.article-head .kicker { margin-bottom: 0; }
.article-head h1 { font-size: 33px; font-weight: 900; line-height: 1.5; color: var(--ink); text-wrap: balance; }
.article-head .standfirst { color: var(--muted); margin-top: 12px; font-size: 15.5px; max-width: 620px; margin-left: auto; margin-right: auto; }
.article-head .byline { justify-content: center; margin-top: 18px; }
.article-body { font-size: 16.5px; }
.article-body p { margin-bottom: 18px; text-align: justify; }
.article-body > p:first-of-type::first-letter {
  font-size: 3.1em; font-weight: 900; float: left; line-height: 1;
  padding: 6px 10px 0 0; color: var(--accent);
}
.article-body h2 { font-size: 20px; font-weight: 900; letter-spacing: .1em; color: var(--ink); margin: 30px 0 14px; padding-left: 12px; border-left: 4px solid var(--accent); }
.article-body blockquote {
  border-left: 3px double var(--accent); background: var(--paper-card);
  padding: 14px 20px; margin: 20px 0; color: var(--ink-soft); font-size: 15.5px;
}
.article-body .sign-off { text-align: right; color: var(--muted); font-family: var(--sans); font-size: 14px; margin: 28px 0 8px; letter-spacing: .1em; }
.article-body .sign-off b { color: var(--ink); }
.article-body table.file-table { width: 100%; border-collapse: collapse; margin: 20px 0; font-size: 14px; }
.article-body table.file-table th, .article-body table.file-table td { border: 1px solid var(--rule-strong); padding: 8px 14px; text-align: left; }
.article-body table.file-table th { background: var(--ink); color: var(--paper); font-family: var(--sans); font-weight: 500; letter-spacing: .15em; width: 30%; }
.article-body table.file-table td { background: var(--paper-card); }
.article-foot { border-top: 1px solid var(--rule); margin-top: 30px; padding-top: 18px; }
.article-nav { display: flex; justify-content: space-between; gap: 18px; margin-top: 20px; flex-wrap: wrap; }
.article-nav a { font-family: var(--sans); font-size: 13.5px; color: var(--ink); border: 1px solid var(--rule-strong); padding: 10px 16px; transition: all .15s; }
.article-nav a:hover { background: var(--ink); color: var(--paper); }

/* —— 六功能位在文章页的差异化版式 —— */
/* 头条评议：社论版式，标题下加双线与「社论」印 */
.page-article.col-editorial .article-head { border-bottom: 0; position: relative; padding-bottom: 26px; }
.page-article.col-editorial .article-head::after {
  content: ""; position: absolute; left: 10%; right: 10%; bottom: 0;
  border-bottom: 3px double var(--rule-strong);
}
.page-article.col-editorial .article-head .ah-meta::after {
  content: "社论"; font-family: var(--serif); font-weight: 900; font-size: 13px;
  color: var(--paper); background: var(--accent); border-radius: 2px;
  padding: 3px 8px; letter-spacing: .3em; text-indent: .3em; transform: rotate(-3deg);
  display: inline-block; box-shadow: 1px 2px 0 rgba(13,41,33,.25); margin-left: 8px;
}
/* 人类观察：现场条 */
.page-article.col-observation .article-head { text-align: left; border-bottom: 1px solid var(--rule-strong); }
.page-article.col-observation .article-head .ah-meta { justify-content: flex-start; }
.page-article.col-observation .article-head .standfirst { margin-left: 0; }
.page-article.col-observation .article-head .byline { justify-content: flex-start; }
.page-article.col-observation .article-head h1 { text-align: left; }
.page-article.col-observation .article-shell { position: relative; }
.page-article.col-observation .article-shell::before {
  content: "ON THE SCENE"; position: absolute; top: 52px; right: 0;
  writing-mode: vertical-rl; font-family: var(--display); font-size: 11px;
  letter-spacing: .5em; color: var(--rule); text-transform: uppercase;
}
/* 动物档案：卷宗版式 */
.page-article.col-file .article-shell { max-width: 800px; }
.page-article.col-file .article-head {
  border: 2px solid var(--rule-strong); outline: 1px solid var(--rule-strong); outline-offset: 3px;
  background: repeating-linear-gradient(0deg, var(--paper-card) 0 28px, rgba(22,56,46,.03) 28px 29px);
  padding: 26px 30px;
}
.page-article.col-file .article-body > p:first-of-type::first-letter { color: var(--ink); }
/* 城市通告：公文版式，居中标题上下粗线 */
.page-article.col-notice .article-head {
  border-bottom: 0; border-top: 4px solid var(--rule-strong); border-bottom: 4px solid var(--rule-strong);
  padding: 26px 0; margin-bottom: 30px; position: relative;
}
.page-article.col-notice .article-head::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: -8px;
  border-bottom: 1px solid var(--rule-strong);
}
.page-article.col-notice .article-body { text-align: justify; }
.page-article.col-notice .article-body p { text-indent: 2em; }
.page-article.col-notice .article-body p:first-of-type { text-indent: 0; }
.page-article.col-notice .article-body > p:first-of-type::first-letter { font-size: inherit; font-weight: inherit; float: none; padding: 0; color: inherit; }
/* 读者来信：信笺版式 */
.page-article.col-letters .article-body {
  background: repeating-linear-gradient(0deg, transparent 0 33px, rgba(192,67,31,.055) 33px 34px);
  padding: 6px 8px;
}
.page-article.col-letters .article-body blockquote { border-left-color: var(--gold); }
/* 本期更正：红框公告 */
.page-article.col-corrections .article-head { border-bottom-color: var(--accent); }
.page-article.col-corrections .article-body blockquote { border-left-color: var(--accent); }
/* 周刊文章：A/B面标记 */
.page-article.col-weekly .article-body h2 { border-left-color: var(--ink); }

/* ---------------- 归档列表 ---------------- */
.archive-list { max-width: 860px; margin: 0 auto; }
.arch-item { display: flex; gap: 26px; padding: 24px 4px; border-bottom: 1px solid var(--rule); align-items: baseline; }
.arch-item .a-date { font-family: var(--sans); font-size: 12.5px; color: var(--muted); white-space: nowrap; letter-spacing: .06em; }
.arch-item .a-main { flex: 1; }
.arch-item h3 { font-size: 19px; font-weight: 900; color: var(--ink); }
.arch-item h3 a:hover { color: var(--accent); }
.arch-item p { font-size: 13.5px; color: var(--muted); margin-top: 4px; }
@media (max-width: 560px) { .arch-item { flex-direction: column; gap: 4px; } }

/* ---------------- 信纸 ---------------- */
/* 文档型页面（关于本报）的单一栏宽：808 = .letter-paper 的 760 + .wrap 左右各 24px 内边距，
   这样页内导航 / 版块头 / 卡片网格与信纸卡片的左右边缘完全对齐 */
.doc-col { max-width: 808px; }
.letter-paper {
  max-width: 760px; margin: 0 auto; background: var(--paper-card);
  border: 1px solid var(--rule-strong); padding: 46px 52px;
  box-shadow: 10px 10px 0 rgba(13,41,33,.08); position: relative;
}
@media (max-width: 560px) { .letter-paper { padding: 30px 22px; } }
.letter-paper h1 { font-size: 27px; font-weight: 900; color: var(--ink); margin-bottom: 4px; }
.letter-paper .lp-sub { font-family: var(--sans); font-size: 13px; color: var(--muted); letter-spacing: .1em; margin-bottom: 22px; }
.letter-paper p { margin-bottom: 16px; font-size: 15.5px; text-align: justify; }
.letter-paper h2 { font-size: 18px; font-weight: 900; letter-spacing: .12em; color: var(--ink); margin: 26px 0 10px; padding-left: 10px; border-left: 4px solid var(--accent); }
.letter-paper ol, .letter-paper ul { margin: 0 0 16px 1.6em; font-size: 15px; }
.letter-paper li { margin-bottom: 7px; }
.letter-paper .lp-sign { text-align: right; margin-top: 30px; font-family: var(--sans); font-size: 14.5px; color: var(--ink); }
.letter-paper .lp-sign b { font-size: 16px; }

/* ---------------- 报告日 ---------------- */
.report-hero { background: var(--ink); color: var(--paper); text-align: center; padding: 60px 24px 54px; position: relative; overflow: hidden; }
/* 「4.1」水印只属于动物报告日；此前挂在 .report-hero 上，特刊页与空期次页也跟着显示了一个无关的日期 */
.report-hero.has-mark::before {
  content: "4.1"; position: absolute; right: -30px; bottom: -60px;
  font-family: var(--display); font-size: 300px; font-weight: 900;
  color: rgba(246,241,229,.05); line-height: 1;
}
/* 只有标题、没有导语的页头（如已有内容的特刊列表）：收掉多余留白 */
.report-hero.is-slim { padding: 30px 24px 28px; }
.report-hero.is-slim h1 { font-size: 34px; letter-spacing: .16em; margin: 10px 0 0; }
.report-hero .rh-en { font-family: var(--display); font-size: 13px; letter-spacing: .5em; color: var(--gold); text-transform: uppercase; }
.report-hero h1 { font-size: 44px; font-weight: 900; letter-spacing: .2em; margin: 14px 0 10px; }
.report-hero p { color: rgba(246,241,229,.75); max-width: 640px; margin: 0 auto; font-size: 15.5px; }
.ritual-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; margin: 34px 0; }
@media (max-width: 860px) { .ritual-grid { grid-template-columns: 1fr; } }
.ritual { border: 1px solid var(--rule-strong); background: var(--paper-card); padding: 24px; }
.ritual .r-num { font-family: var(--display); font-size: 34px; font-weight: 900; color: var(--accent); line-height: 1; }
.ritual h3 { font-size: 17px; font-weight: 900; color: var(--ink); margin: 12px 0 8px; letter-spacing: .08em; }
.ritual p { font-size: 13.5px; color: var(--muted); }

/* ---------------- FAQ / 表单 ---------------- */
.faq { max-width: 760px; margin: 30px auto 0; }
.faq details { border: 1px solid var(--rule-strong); background: var(--paper-card); margin-bottom: 12px; padding: 0 20px; }
.faq summary { cursor: pointer; font-weight: 900; padding: 14px 0; font-size: 15.5px; color: var(--ink); letter-spacing: .05em; list-style: none; position: relative; padding-right: 30px; }
.faq summary::after { content: "+"; position: absolute; right: 4px; color: var(--accent); font-size: 18px; top: 50%; transform: translateY(-52%); }
.faq details[open] summary::after { content: "−"; }
.faq details p { padding: 0 0 16px; font-size: 14px; color: var(--text); }

.form-row { margin-bottom: 16px; }
.form-row label { display: block; font-family: var(--sans); font-size: 13px; letter-spacing: .1em; color: var(--ink); margin-bottom: 6px; font-weight: 700; }
.form-row input, .form-row textarea, .form-row select {
  width: 100%; border: 1px solid var(--rule-strong); background: var(--paper-card);
  font-family: var(--serif); font-size: 15px; padding: 11px 14px; color: var(--text); border-radius: 2px;
}
.form-row input:focus, .form-row textarea:focus { outline: 2px solid var(--accent); outline-offset: 1px; }
.form-tip { font-family: var(--sans); font-size: 12.5px; color: var(--muted); margin-top: 8px; }

/* ---------------- 404 ---------------- */
.err-404 { max-width: 700px; margin: 70px auto; text-align: center; }
.err-404 .e-code { font-family: var(--display); font-size: 110px; font-weight: 900; color: var(--ink); line-height: 1; }
.err-404 h1 { font-size: 24px; letter-spacing: .3em; color: var(--accent); margin: 18px 0 12px; }
.err-404 p { color: var(--muted); margin-bottom: 28px; }

/* ---------------- 动画 ---------------- */
@keyframes rise { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }
.rise { animation: rise .6s ease both; }
.rise.d1 { animation-delay: .08s; } .rise.d2 { animation-delay: .16s; } .rise.d3 { animation-delay: .24s; }

@media print {
  .topbar, .nav, .toc-strip, footer, #read-progress, .article-nav { display: none !important; }
  body { background: #fff; }
}

/* ---------------- 顶栏语言切换 ---------------- */
.lang-sw a { color: var(--paper); margin-left: 8px; letter-spacing: .12em; }

/* ---------------- 周刊 A面/B面/交叉 ---------------- */
.ab-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; margin: 24px 0; }
@media (max-width: 760px) { .ab-grid { grid-template-columns: 1fr; } }
.ab-card { border: 1px solid var(--rule-strong); background: var(--paper-card); padding: 20px 20px 16px; position: relative; }
.ab-card::before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 3px; background: var(--ink); }
.ab-card:nth-child(2)::before { background: var(--accent); }
.ab-tag { font-family: var(--sans); font-size: 11px; font-weight: 700; letter-spacing: .3em; color: var(--accent); }
.ab-card h3 { font-size: 16.5px; font-weight: 900; color: var(--ink); margin: 6px 0 8px; letter-spacing: .08em; }
.ab-card p { font-size: 13.5px; color: var(--text); line-height: 1.9; text-align: justify; }

/* ---------------- 集团条（全站全局导航） ---------------- */
.groupbar { background: var(--ink-deep); color: var(--paper); font-family: var(--sans); font-size: 12.5px; }
.gb-inner { display: flex; align-items: center; gap: 18px; padding: 8px 24px; max-width: 1120px; margin: 0 auto; }
.gb-brand { color: var(--paper); display: flex; align-items: baseline; gap: 8px; white-space: nowrap; }
.gb-brand b { font-family: var(--serif); font-weight: 900; font-size: 15px; letter-spacing: .18em; }
.gb-brand span { font-family: var(--display); font-size: 9.5px; letter-spacing: .22em; color: var(--gold); text-transform: uppercase; }
.gb-sites { display: flex; gap: 4px; }
.gb-sites a { color: rgba(246,241,229,.62); padding: 3px 12px; border-radius: 2px; letter-spacing: .18em; }
.gb-sites a:hover { color: #fff; }
.gb-sites a.on { color: #fff; background: var(--accent); font-weight: 700; }
.gb-right { margin-left: auto; display: flex; align-items: center; gap: 12px; flex-wrap: nowrap; min-width: 0; }
.gb-sub { color: var(--paper); border: 1px solid rgba(246,241,229,.35); padding: 2px 12px; border-radius: 2px; letter-spacing: .1em; flex: 0 0 auto; white-space: nowrap; }
.gb-sub:hover { background: var(--accent); border-color: var(--accent); }
/* 宜忌条：日期固定在左，只有宜忌正文在放不下时横向滚动（跑马灯），悬停暂停 */
.gb-note { color: rgba(246,241,229,.45); white-space: nowrap; letter-spacing: .05em;
  flex: 0 1 auto; min-width: 0; display: flex; align-items: center; gap: 8px; overflow: hidden; }
.gb-note-date { flex: 0 0 auto; color: rgba(246,241,229,.62); }
.gb-note-scroll { flex: 0 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.gb-note.marquee .gb-note-scroll { display: flex; text-overflow: clip;
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 14px, #000 calc(100% - 14px), transparent);
  mask-image: linear-gradient(90deg, transparent, #000 14px, #000 calc(100% - 14px), transparent); }
.gb-note.marquee .gb-note-in { flex: 0 0 auto; padding-right: 56px; animation: gb-scroll 26s linear infinite; }
.gb-note.marquee:hover .gb-note-in { animation-play-state: paused; }
@keyframes gb-scroll { from { transform: translateX(0); } to { transform: translateX(-100%); } }
@media (prefers-reduced-motion: reduce) { .gb-note.marquee .gb-note-in { animation: none; } }
.lang-sw { flex: 0 0 auto; white-space: nowrap; }
.lang-sw a { color: var(--paper); margin-left: 7px; letter-spacing: .12em; opacity: .5; }
.lang-sw a.on { opacity: 1; font-weight: 700; }
@media (max-width: 900px) { .gb-note, .gb-brand span { display: none; } .gb-inner { gap: 10px; } }

/* ---------------- 面包屑位置条 ---------------- */
.crumbbar { background: var(--paper-2); border-bottom: 1px solid var(--rule); }
.crumb-inner { display: flex; align-items: center; gap: 10px; padding: 6px 24px; max-width: 1120px; margin: 0 auto; font-family: var(--sans); font-size: 12px; letter-spacing: .08em; color: var(--muted); }
.crumb-inner a { color: var(--muted); }
.crumb-inner a:hover { color: var(--accent); }
.crumb-inner b { color: var(--accent); font-weight: 700; }
.crumb-inner .sep { color: var(--rule); }

/* ---------------- 刊头自指 ---------------- */
a.mh-link { display: block; color: inherit; }
a.mh-link:hover { opacity: .92; }

/* ---------------- 刊头高度统一（六站一致） ---------------- */
.masthead-inner { min-height: 164px; }
@media (max-width: 1180px) {
  .masthead-inner { grid-template-columns: 200px 1fr 200px; }
  .mh-left, .mh-right { font-size: 11px; line-height: 1.9; padding: 9px 12px; }
}
.mh-left, .mh-right { line-height: 2.1; }

/* ---------------- 集团条搜索框 ---------------- */
.gb-search { margin: 0 6px; flex: 0 1 auto; min-width: 0; }
.gb-search input {
  width: 210px; max-width: 100%; padding: 4px 12px;
  border: 1px solid rgba(246,241,229,.3); border-radius: 2px;
  background: rgba(246,241,229,.08); color: var(--paper);
  font-family: var(--sans); font-size: 12px; letter-spacing: .05em;
}
.gb-search input::placeholder { color: rgba(246,241,229,.45); letter-spacing: .1em; }
.gb-search input:focus { outline: 1px solid var(--gold); background: rgba(246,241,229,.14); }
@media (max-width: 1280px) { .gb-search input { width: 150px; } }
@media (max-width: 1080px) { .gb-search input { width: 120px; } }
@media (max-width: 900px) { .gb-note { display: none; } }
@media (max-width: 760px) { .gb-search { display: none; } }
@media (max-width: 560px) {
  .gb-inner { gap: 8px; padding: 8px 16px; }
  .gb-brand b { font-size: 13px; letter-spacing: .1em; }
  .gb-right { gap: 8px; }
  .gb-login, .gb-sub { padding: 2px 8px; letter-spacing: .04em; }
}
@media (max-width: 420px) {
  .gb-inner { gap: 6px; padding: 7px 12px; font-size: 11.5px; }
  .gb-brand b { font-size: 12px; letter-spacing: .04em; }
  .gb-brand span { display: none; }
  .gb-right { gap: 6px; }
  .gb-login, .gb-sub { padding: 2px 6px; letter-spacing: 0; }
  .lang-sw a { margin-left: 5px; letter-spacing: .06em; }
}

/* ===============================================================
   v12 · 版面样张卡：日报 A3–A8 与周刊目录统一预览版式
   =============================================================== */
.ed-blocks { display: grid; grid-template-columns: repeat(2, 1fr); gap: 30px 38px; }
.ed-block { border-top: 3px solid var(--ink); padding-top: 14px; display: flex; flex-direction: column; gap: 12px; }
.eb-head { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.eb-title h3 { margin: 0; font-size: 20px; line-height: 1.3; }
.eb-en { display: block; font-size: 11px; color: var(--muted); letter-spacing: .12em; text-transform: uppercase; margin-top: 3px; }
.eb-duty { margin-left: auto; font-size: 12px; color: var(--muted); text-align: right; }
.eb-card { background: var(--paper-card); border: 1px solid var(--rule); padding: 18px 20px; flex: 1; display: flex; flex-direction: column; gap: 9px; }
.eb-card h4 { margin: 0; font-size: 18px; line-height: 1.45; font-family: var(--serif); }
.eb-card h4 a { color: inherit; text-decoration: none; }
.eb-card h4 a:hover { color: var(--accent); }
.eb-stand { margin: 0; color: var(--muted); font-size: 13.5px; line-height: 1.7; }
.eb-excerpt { margin: 0; font-size: 14px; line-height: 1.85; color: var(--ink-soft); }
.eb-meta { display: flex; gap: 14px; flex-wrap: wrap; font-size: 12px; color: var(--muted); border-top: 1px dashed var(--rule); padding-top: 9px; margin-top: auto; }
.eb-go { font-size: 13px; font-weight: 700; color: var(--accent); text-decoration: none; letter-spacing: .02em; }
.eb-go:hover { text-decoration: underline; }
.eb-more { font-size: 13px; color: var(--ink-soft); text-decoration: none; border-top: 1px dashed var(--rule); padding-top: 9px; }
.eb-more:hover { color: var(--accent); }
.eb-more span { color: var(--accent); }
.eb-lock { font-size: 12px; color: var(--muted); border-top: 1px dashed var(--rule); padding-top: 9px; margin-top: auto; letter-spacing: .04em; }
.eb-empty h4 { color: var(--muted); font-weight: 600; }
@media (max-width: 900px) { .ed-blocks { grid-template-columns: 1fr; gap: 22px; } }
.nav-links .nlink { white-space: nowrap; }
.gb-login { color: rgba(246,241,229,.85); border: 1px solid rgba(246,241,229,.35); padding: 2px 12px; border-radius: 2px; letter-spacing: .1em; background: transparent; flex: 0 0 auto; white-space: nowrap; }
.gb-login:hover { background: var(--accent); border-color: var(--accent); color: #fff; }

/* v13 · 日期/期号导航条 */
.datebar { background: var(--paper-2); border-bottom: 1px solid var(--rule); }
.datebar-inner { display: flex; align-items: center; gap: 14px; padding: 7px 24px; flex-wrap: wrap; font-size: 13px; }
.db-date { font-weight: 700; color: var(--ink); letter-spacing: .04em; }
.db-issue { color: var(--accent); font-weight: 600; }
.db-spacer { flex: 1; }
.db-arr { color: var(--ink); text-decoration: none; border: 1px solid var(--rule); border-radius: 2px; padding: 2px 10px; background: var(--paper); font-size: 12.5px; }
.db-arr:hover { border-color: var(--accent); color: var(--accent); }
.db-arr.off { opacity: .35; pointer-events: none; }
.db-jump { border: 1px solid var(--rule); background: var(--paper); border-radius: 2px; padding: 3px 8px; font-size: 12.5px; color: var(--ink); max-width: 300px; }

/* v14 · 本期要目 */
.it-item { padding: 9px 2px; border-bottom: 1px dashed var(--rule); }
.it-item a { color: var(--ink); text-decoration: none; font-family: var(--serif); font-size: 14.5px; line-height: 1.65; display: block; }
.it-item a:hover { color: var(--accent); }
.it-item .tag { font-size: 11px; color: var(--muted); border: 1px solid var(--rule); border-radius: 2px; padding: 0 6px; margin-right: 8px; font-family: var(--sans); white-space: nowrap; }

/* ===============================================================
   v15 · 报纸体例零件（依据 docs/新闻网站对比：63 站对比研究，方案 A 头版型）
   直角、1px 栏线、无 emoji、密度优先 —— 与宠物垂直站的 App 感划清界限
   =============================================================== */

/* 零件 1 · 日期期号带（报头下方全宽一条） */
.issueband { background: var(--paper-2); border-bottom: 1px solid var(--rule-strong); font-family: var(--sans); }
.ib-inner { display: flex; align-items: center; gap: 10px; padding: 7px 24px; max-width: 1120px; margin: 0 auto;
  font-size: 12.5px; letter-spacing: .04em; color: var(--muted); }
.ib-date { color: var(--ink); font-weight: 600; white-space: nowrap; }
.ib-issue { color: var(--accent); font-weight: 600; white-space: nowrap; }
.ib-sep { color: var(--rule-strong); }
.ib-note { display: flex; align-items: center; gap: 8px; min-width: 0; flex: 0 1 auto; color: var(--muted); }
.ib-note .gb-note-scroll { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.ib-note .gb-note-in { white-space: nowrap; }
.ib-nav { display: flex; align-items: center; gap: 8px; white-space: nowrap; }
.ib-nav.ib-right { margin-left: auto; }        /* 右端控件（总览 / 下一期）推到最右 */
.ib-right { display: flex; align-items: center; gap: 8px; margin-left: auto; }
/* 按钮盒子必须低于带子文字行（12.5px × 1.7 ≈ 21px），否则会把条带撑高 —— 加按钮前是 21.2px 高 */
.ib-nav .db-arr { line-height: 18px; padding: 0 8px; }
@media (max-width: 900px) { .ib-note, .ib-sep-note { display: none; } }
@media (max-width: 760px) {
  .ib-inner { gap: 8px; font-size: 12px; }
  /* 长刊名（法/英周刊）改为截断而不是换行：带子始终一行，两端箭头位置不跳动 */
  .ib-issue { max-width: 42vw; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
}
@media (max-width: 560px) {
  /* 极窄屏只留「日期 ＋ 上一期 ＋ 总览 ＋ 下一期」 */
  .ib-issue, .ib-sep, .ib-sep-note { display: none; }
  .ib-date { max-width: 32vw; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .ib-nav { gap: 6px; }
  .ib-nav .db-arr { padding: 0 6px; }
}

/* 零件 2 · 纯文字短讯带（版号 ＋ 栏目角标 ＋ 标题一行）
   行内不放时间戳：编辑保存时刻不是出版时刻，「今天活着」的证据由眉线带承担 */
.wire-list { border-top: 1px solid var(--rule); }
.wire-item { display: grid; grid-template-columns: 26px auto 1fr; gap: 8px; align-items: baseline;
  padding: 8px 0; border-bottom: 1px dashed var(--rule); }
/* 栏目归档行的第一栏是带框的连载号（№ 001 / A-041），按内容定宽，
   否则 26px 的轨道会把编号挤出边框 */
.wire-item.wire-archive { grid-template-columns: max-content auto 1fr; }
.w-no { font-family: var(--display); font-size: 11px; letter-spacing: .06em; color: var(--accent); }
.w-col { font-size: 11px; color: var(--ink-soft); border: 1px solid var(--rule); padding: 1px 5px;
  white-space: nowrap; text-align: center; letter-spacing: .04em; }
.w-title { font-family: var(--serif); font-size: 14.5px; color: var(--ink); line-height: 1.6; }
.w-title:hover { color: var(--accent); }
/* 栏目归档行右侧：出处（刊物＋期号）· 会员角标 · 出版日期 */
.w-meta { justify-self: end; display: flex; align-items: center; gap: 10px;
  font-family: var(--sans); font-size: 12px; color: var(--muted); white-space: nowrap; }
.w-pub { font-size: 11.5px; color: var(--ink-soft); }
.w-lock, .cc-lock { font-family: var(--sans); font-size: 10.5px; letter-spacing: .08em; color: var(--accent);
  border: 1px solid var(--accent); border-radius: 2px; padding: 0 5px; vertical-align: 2px; white-space: nowrap; }
.cc-lock { margin-right: 6px; }
.crumb-plain { color: var(--muted); }
@media (max-width: 760px) {
  /* 窄屏：出处/会员/日期另起一行，挂在标题下方 */
  .wire-item.wire-archive { grid-template-columns: max-content 1fr; }
  .wire-item.wire-archive .w-meta { grid-column: 2; justify-self: start; flex-wrap: wrap; gap: 4px 8px; }
}

/* 栏目归档页底部「其他栏目」/ 周刊过刊的期次入口（此前这三个类没有样式，
   标签会挤成一整行，且长标签在窄屏撑破版心） */
.issue-chips { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.chip-label { font-family: var(--sans); font-size: 12px; letter-spacing: .12em; color: var(--muted); }
.chip { font-family: var(--sans); font-size: 12.5px; color: var(--ink); background: var(--paper-card);
  border: 1px solid var(--rule); border-radius: 2px; padding: 3px 10px; white-space: nowrap; }
.chip:hover { border-color: var(--accent); color: var(--accent); }

/* 零件 3 · 电头（通讯社格式） */
.dateline { font-family: var(--sans); font-size: 12px; color: var(--muted); letter-spacing: .04em; margin: 8px 0 0; }

/* 零件 4 · 记者角标 */
.by-badge { font-family: var(--sans); font-size: 12px; color: var(--ink-soft); border: 1px solid var(--rule);
  padding: 1px 7px; margin-right: 9px; }

/* 零件 6 · 周刊本期封面卡 */
.cover-card { border: 1px solid var(--ink); background: var(--paper-card); padding: 20px 22px; position: relative; }
.cover-card::before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 3px; background: var(--accent); }
.cover-card .cc-issue { font-family: var(--display); font-size: 11px; letter-spacing: .3em; color: var(--accent); text-transform: uppercase; }
.cover-card h3 { font-family: var(--serif); font-size: 23px; font-weight: 900; line-height: 1.5; margin: 8px 0 12px; }
.cover-card h3 a { color: var(--ink); }
.cover-card h3 a:hover { color: var(--accent); }
.cover-card ul { list-style: none; }
.cover-card li { font-size: 13.5px; color: var(--text); padding: 6px 0; border-top: 1px dashed var(--rule); }
.cover-card li b { display: inline-block; min-width: 64px; color: var(--muted); font-weight: 600; }
.cover-card .cc-foot { margin-top: 12px; padding-top: 10px; border-top: 1px solid var(--rule);
  font-size: 12px; color: var(--muted); display: flex; gap: 10px; align-items: center; }
.tag.member { border-color: var(--gold); color: #8a6420; }

/* 零件 11 · 编号化常设栏目 */
.cols-module { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); border: 1px solid var(--ink); background: var(--paper-card); }
.col-card { padding: 14px 16px; border-right: 1px solid var(--rule); }
.col-card:last-child { border-right: 0; }
.cc-head { display: flex; justify-content: space-between; align-items: baseline; gap: 8px;
  border-bottom: 1px solid var(--rule); padding-bottom: 6px; margin-bottom: 9px; }
.cc-name { font-size: 13px; font-weight: 700; color: var(--ink); letter-spacing: .1em; }
.cc-no { font-family: var(--display); font-size: 12px; color: var(--accent); letter-spacing: .08em; white-space: nowrap; }
.cc-title { display: block; font-family: var(--serif); font-size: 14.5px; line-height: 1.65; color: var(--ink); }
.cc-title:hover { color: var(--accent); }
.cc-more { display: block; margin-top: 10px; font-size: 12px; color: var(--accent); }
@media (max-width: 900px) { .cols-module { grid-template-columns: 1fr 1fr; }
  .col-card { border-bottom: 1px solid var(--rule); } .col-card:nth-child(2n) { border-right: 0; } }

/* 编辑部一行 · 订阅一行 */
.desk-line { display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
  border-top: 1px solid var(--rule); border-bottom: 1px solid var(--rule); padding: 13px 0; }
.desk-chip { width: 31px; height: 31px; display: inline-flex; align-items: center; justify-content: center;
  border: 1px solid var(--ink); font-family: var(--serif); font-size: 15px; color: var(--ink); background: var(--paper-card); }
.desk-note { font-size: 12.5px; color: var(--muted); margin-left: 8px; }
.sub-line { display: flex; align-items: center; gap: 18px; justify-content: space-between; flex-wrap: wrap;
  border: 1px solid var(--ink); padding: 16px 20px; background: var(--paper-card); }
.sub-line p { font-size: 14px; color: var(--text); max-width: 720px; }

/* 零件 8 · 页脚固定虚构声明块 */
.foot-notice { border-top: 1px solid rgba(246,241,229,.22); margin-top: 24px; padding-top: 15px; }
.foot-notice h5 { font-family: var(--sans); font-size: 11.5px; letter-spacing: .22em; color: var(--gold); margin-bottom: 7px; }
.foot-notice p { font-size: 12px; color: rgba(246,241,229,.62); line-height: 1.9; max-width: 920px; }

/* 主页首屏与版块小注 */
.home-front { padding-top: 26px; }
.sec-head .sec-note { font-size: 12px; color: var(--muted); margin-left: auto; }

/* 窄屏：报头收紧，让首屏顺序成为「期号带 → 头条 → 短讯列表」 */
@media (max-width: 900px) {
  .masthead-inner { min-height: 0; padding: 12px 0 10px; grid-template-columns: 1fr; }
  .mh-en { margin-top: 3px; }
  .masthead-inner, .mh-link, .mh-center, .mh-center > div { min-width: 0; }
  .mh-slogan { max-width: 100%; }
}
@media (min-width: 481px) and (max-width: 900px) { .mh-title { font-size: 38px; } }
@media (max-width: 480px) { .mh-en { letter-spacing: .3em; font-size: 12px; } }
@media (max-width: 760px) {
  .sec-head { flex-wrap: wrap; gap: 4px 10px; }
  .sec-head .sec-note { margin-left: 0; }
  .seal { width: 44px; height: 44px; font-size: 15px; }
}
/* 长刊名报头：桌面 44px，窄屏逐级收小（原来写死内联 44px，手机上会溢出） */
.mh-title.mh-long { font-size: 44px; letter-spacing: .04em; }
@media (max-width: 960px) { .mh-title.mh-long { font-size: 34px; } }
@media (max-width: 560px) { .mh-title.mh-long { font-size: 28px; letter-spacing: .02em; } }
@media (max-width: 560px) {
  .mh-center { gap: 10px; }
  .seal { width: 40px; height: 40px; font-size: 14px; }
}
@media (max-width: 400px) { .mh-title.mh-long { font-size: 23px; } }
@media (max-width: 560px) {
  .mh-center { gap: 8px; }
  .mh-center > div { min-width: 0; overflow: hidden; }
}
.masthead { overflow: hidden; }   /* 印章有轻微旋转，避免其视觉外框把页面撑宽 1px */

/* ===============================================================
   v16 · 读整期（全文视图）：A1 通栏 + 版位三栏，窄屏两栏/单栏
   与打印页（private/print）共用同一份标记结构
   =============================================================== */
.read-wrap { padding: 30px 24px 40px; }
.read-head { border-bottom: 3px double var(--rule-strong); padding-bottom: 16px; margin-bottom: 18px; }
.rh-kicker { font-family: var(--sans); font-size: 11.5px; letter-spacing: .3em; color: var(--accent); }
.read-head h1 { font-family: var(--serif); font-size: 34px; font-weight: 900; letter-spacing: .06em; color: var(--ink); margin: 8px 0 6px; }
.rh-meta { font-family: var(--sans); font-size: 13px; color: var(--muted); }
.rh-actions { display: flex; align-items: center; gap: 14px; margin-top: 14px; flex-wrap: wrap; }
.rh-hint { font-family: var(--sans); font-size: 12px; color: var(--muted); }
.rh-back { font-family: var(--sans); font-size: 13px; color: var(--muted); margin-left: auto; }
.rh-back:hover { color: var(--accent); }

.read-toc { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap;
  border-top: 1px solid var(--rule); border-bottom: 1px solid var(--rule); padding: 9px 0; margin-bottom: 22px; }
.rt-label { font-family: var(--sans); font-size: 11.5px; letter-spacing: .22em; color: var(--muted); }
.rt-item { font-family: var(--serif); font-size: 13.5px; color: var(--ink); padding: 1px 8px; border: 1px solid var(--rule); }
.rt-item b { font-family: var(--display); font-size: 11px; color: var(--accent); margin-right: 6px; }
.rt-item:hover { border-color: var(--ink); color: var(--accent); }

.read-lead { border-bottom: 2px solid var(--ink); padding-bottom: 22px; margin-bottom: 26px; }
.rl-meta { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 12px; }
.rl-title { font-family: var(--serif); font-size: 40px; font-weight: 900; line-height: 1.35; color: var(--ink); margin: 10px 0; }
.rl-title a { color: var(--ink); }
.rl-title a:hover { color: var(--accent); }
.rl-stand { font-family: var(--serif); font-size: 17px; line-height: 1.8; color: var(--muted); margin-bottom: 12px; }
.rl-byline, .ra-byline { font-family: var(--sans); font-size: 12.5px; color: var(--muted); margin-bottom: 10px; }
.rl-byline span, .ra-byline span { margin-right: 14px; }
.read-lead .read-body { column-count: 2; column-gap: 44px; column-rule: 1px solid var(--rule); }

.read-sec { margin-bottom: 30px; }
.read-sec-head { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap;
  border-top: 2px solid var(--ink); border-bottom: 1px solid var(--rule); padding: 7px 0; margin-bottom: 14px; }
.rs-tag { font-family: var(--sans); font-size: 11.5px; font-weight: 700; color: var(--paper); background: var(--accent); padding: 1px 7px; }
.rs-name { font-family: var(--serif); font-size: 20px; font-weight: 900; color: var(--ink); letter-spacing: .1em; }
.rs-sub { font-family: var(--display); font-size: 11px; letter-spacing: .22em; color: var(--muted); text-transform: uppercase; }
.rs-no { font-family: var(--sans); font-size: 12px; color: var(--accent); margin-left: auto; }
.rs-duty { font-family: var(--sans); font-size: 11.5px; color: var(--muted); }
.read-cols { display: block; }
.read-art { margin-bottom: 24px; padding-bottom: 18px; border-bottom: 1px dashed var(--rule); }
.read-art:last-child { border-bottom: 0; }
.read-art .read-body { column-count: 3; column-gap: 34px; column-rule: 1px solid var(--rule); }
.read-body[data-locked] { column-count: 1; }
.ra-title { font-family: var(--serif); font-size: 19px; font-weight: 900; line-height: 1.45; color: var(--ink); margin-bottom: 6px; }
.ra-title a { color: var(--ink); }
.ra-title a:hover { color: var(--accent); }
.ra-stand { font-size: 13px; line-height: 1.75; color: var(--muted); margin-bottom: 8px; }
.read-art .read-body { font-size: 14.5px; line-height: 1.85; }
.read-art .read-body p { margin-bottom: 10px; text-align: justify; }
.read-art .read-body h2 { font-size: 15.5px; font-weight: 900; color: var(--ink); margin: 12px 0 6px;
  padding-left: 8px; border-left: 3px solid var(--accent); }
.read-art .read-body blockquote { border-left: 2px solid var(--accent); background: var(--paper-card);
  padding: 8px 12px; margin: 10px 0; font-size: 13.5px; }
.read-art .read-body .sign-off { text-align: right; color: var(--muted); font-size: 12.5px; }

/* 会员锁定块 */
.lock-block { border: 1px solid var(--rule); background: var(--paper-card); padding: 14px 16px; }
.lock-tag { display: inline-block; font-family: var(--sans); font-size: 11px; letter-spacing: .18em;
  color: #8a6420; border: 1px solid var(--gold); padding: 0 6px; margin-bottom: 8px; }
.lock-block p { font-size: 13px; line-height: 1.8; color: var(--muted); }
.lock-actions { display: flex; align-items: center; gap: 12px; margin-top: 10px; flex-wrap: wrap; }
.lock-login { font-family: var(--sans); font-size: 12.5px; color: var(--muted); }
.lock-login:hover { color: var(--accent); }

@media (max-width: 1080px) {
  .read-art .read-body { column-count: 2; column-gap: 26px; }
  .read-lead .read-body { column-count: 1; }
  .rl-title { font-size: 32px; }
}
@media (max-width: 760px) {
  .read-art .read-body { column-count: 1; }
  .read-wrap { padding: 20px 18px 30px; }
  .read-head h1 { font-size: 26px; }
  .rl-title { font-size: 27px; }
  .rs-no, .rs-duty { margin-left: 0; }
}

/* 整版会员门槛横幅（公开态显示，会员正文填充后由前端移除） */
.read-gate { border: 1px solid var(--ink); border-left: 4px solid var(--accent); background: var(--paper-card);
  padding: 18px 20px; margin-bottom: 24px; }
.rg-tag { display: inline-block; font-family: var(--sans); font-size: 12px; font-weight: 700;
  letter-spacing: .16em; color: #8a6420; border: 1px solid var(--gold); padding: 1px 8px; margin-bottom: 10px; }
.read-gate p { font-size: 14px; line-height: 1.85; color: var(--text); max-width: 760px; }
.rg-actions { display: flex; align-items: center; gap: 14px; margin-top: 14px; flex-wrap: wrap; }
.rg-login, .rg-pdf { font-family: var(--sans); font-size: 13px; color: var(--muted); }
.rg-login:hover, .rg-pdf:hover { color: var(--accent); }
.rg-pdf { border-bottom: 1px dashed var(--rule); }
body.is-member .read-gate { display: none; }
/* 会员状态确认前隐藏门槛横幅：避免先闪"订阅会员/登录"再切换（main.js gateSettled 落地） */
.pt-me-unknown .read-gate, .pt-gate-pending .read-gate { visibility: hidden; }

/* v17 · 常设栏目的编号显示（原版面导览带已改为 .edition-line 一行细字） */
.cc-count { font-family: var(--sans); font-size: 12px; color: var(--muted); margin-top: 4px; }
.cc-count.cc-big { font-family: var(--display); font-size: 26px; color: var(--ink); line-height: 1.2; margin-top: 2px; }
.cc-note { font-size: 12.5px; color: var(--muted); line-height: 1.7; }

/* A2 速览版：整期页里的短讯卡 */
.brief-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 0; border: 1px solid var(--ink); background: var(--paper-card); }
.brief-card { padding: 14px 16px; border-right: 1px solid var(--rule); }
.brief-card:last-child { border-right: 0; }
.brief-card .bc-body { font-size: 13.5px; line-height: 1.85; color: var(--text); }
.brief-card .bc-body p { margin-bottom: 8px; }
.brief-card .sign-off { text-align: right; color: var(--muted); font-size: 12px; }
@media (max-width: 900px) { .brief-card { border-right: 0; border-bottom: 1px solid var(--rule); } }

/* ===============================================================
   v18 · 十二版制：短版条目 · 头版指针（报眼版次表已取消 —— 改为 A2 速览版内容栏）
   =============================================================== */
/* 版头条数（长版卡片与短版条目通用） */
.eb-count { font-family: var(--sans); font-size: 11.5px; color: var(--muted); letter-spacing: .04em; }

/* 短版（速览/数据/财经/启事/天气/更正）：整版通栏 ＋ 条目按栏流动 */
.ed-block.is-short { grid-column: 1 / -1; }
.ed-block.is-short .sb-list { column-count: 3; column-gap: 28px; column-rule: 1px solid var(--rule);
  border-top: 1px solid var(--rule); padding-top: 14px; }
.sb-item { break-inside: avoid; margin-bottom: 16px; }
.sb-title { margin: 0 0 5px; font-size: 15px; line-height: 1.5; font-family: var(--serif); font-weight: 700;
  overflow-wrap: anywhere; }
.sb-title a { color: inherit; text-decoration: none; }
.sb-title a:hover { color: var(--accent); }
.sb-body { font-size: 13px; line-height: 1.85; color: var(--ink-soft); }
.sb-body p { margin-bottom: 7px; }
.sb-body blockquote { border-left: 2px solid var(--accent); background: var(--paper-card);
  padding: 6px 10px; margin: 8px 0; font-size: 12.5px; }
.sb-body .sign-off { text-align: right; color: var(--muted); font-size: 12px; }
.sb-meta { display: flex; gap: 10px; align-items: baseline; flex-wrap: wrap;
  font-family: var(--sans); font-size: 11.5px; color: var(--muted); margin-top: 5px; }
.sb-no { color: var(--accent); letter-spacing: .04em; }
/* 通栏长版（副刊/连载体）：整版宽，摘要分两栏排 */
.ed-block.is-wide { grid-column: 1 / -1; }
.ed-block.is-wide .eb-excerpt { column-count: 2; column-gap: 34px; column-rule: 1px solid var(--rule); }
@media (max-width: 900px) { .ed-block.is-wide .eb-excerpt { column-count: 1; } }
@media (max-width: 1180px) { .ed-block.is-short .sb-list { column-count: 2; } }
@media (max-width: 760px) { .ed-block.is-short .sb-list { column-count: 1; column-rule: 0; } }

/* 整期视图/打印里的短版：条目两栏流动，每条正文单栏（不再被三栏切断） */
.read-shorts { column-count: 2; column-gap: 34px; column-rule: 1px solid var(--rule); }
.read-short { break-inside: avoid; margin-bottom: 20px; }
.read-short .read-body { column-count: 1; font-size: 14.5px; line-height: 1.85; }
.read-short .read-body p { margin-bottom: 10px; text-align: justify; }
.read-short .read-body .sign-off { text-align: right; color: var(--muted); font-size: 12.5px; }
.rs-title { margin: 0 0 6px; font-size: 16px; line-height: 1.5; font-weight: 900; font-family: var(--serif); }
.rs-title a { color: inherit; text-decoration: none; }
.rs-title a:hover { color: var(--accent); }
.rs-serial { font-family: var(--sans); font-size: 11px; font-weight: 400; color: var(--accent); }
@media (max-width: 900px) { .read-shorts { column-count: 1; column-rule: 0; } }

/* ===============================================================
   v19 · 头版右栏回归内容 · 版次行一行细字 · 版块式出口
   =============================================================== */
/* 版次行：一行细字，取代原来的 12 个胶囊按钮（仍是 12 个栏目归档页的入口） */
.edition-line { border-top: 1px solid var(--rule); border-bottom: 1px solid var(--rule);
  padding: 9px 0; margin: 20px 0 2px; font-family: var(--sans); font-size: 12px;
  line-height: 2; color: var(--muted); }
.el-label { letter-spacing: .2em; color: var(--ink); margin-right: 10px; }
.el-item { color: var(--muted); text-decoration: none; }
.el-item:hover { color: var(--accent); }

/* 版块式出口（零件 5）：更多城市通告 → */
.eb-exit { display: inline-block; margin-top: 10px; font-family: var(--sans); font-size: 12.5px;
  color: var(--accent); text-decoration: none; }
.eb-exit:hover { text-decoration: underline; }
.ed-block.is-short .eb-exit { margin-top: 4px; }

/* 文章页栏目名：链到该栏目归档 */
.kicker-link { color: inherit; text-decoration: none; border-bottom: 1px solid var(--rule); }
.kicker-link:hover { color: var(--accent); border-bottom-color: var(--accent); }

/* ===============================================================
   v20 · 日报页 = 整期摘要版：A1 通栏头条卡（保留头版权重）
   网页日报 = 整期摘要版（免费）／ /read/ = 整期全文版（免费）／ PDF = 会员附加
   =============================================================== */
.ed-block.is-lead { grid-column: 1 / -1; border-top-width: 4px; }
.lead-card { background: var(--paper-card); border: 1px solid var(--rule); padding: 16px 22px 18px; }
.lc-title { margin: 0 0 6px; font-family: var(--serif); font-size: 32px; font-weight: 900;
  line-height: 1.45; letter-spacing: .02em; color: var(--ink); text-wrap: balance; }
.lc-title a { color: inherit; text-decoration: none; }
.lc-title a:hover { color: var(--accent); }
.lc-stand { margin: 0; font-size: 15px; line-height: 1.75; color: var(--muted); }
.lc-byline { display: flex; flex-wrap: wrap; gap: 6px 18px; align-items: center;
  font-family: var(--sans); font-size: 12.5px; color: var(--muted); letter-spacing: .08em; margin: 10px 0 0; }
.lc-byline b { color: var(--ink); }
/* 摘要只给一段、通栏下分两栏 —— 否则首屏只剩这一条 */
.lc-excerpt { margin-top: 8px; column-count: 2; column-gap: 34px; column-rule: 1px solid var(--rule); }
.lc-excerpt p { font-size: 14.5px; line-height: 1.9; color: var(--ink-soft); margin: 0 0 10px; text-align: justify; }
.lc-actions { margin-top: 12px; display: flex; gap: 16px; align-items: center; flex-wrap: wrap; }
.lc-actions .btn { padding: 9px 20px; font-size: 13.5px; }
.lc-jump { font-family: var(--sans); font-size: 12.5px; color: var(--muted); text-decoration: none; }
.lc-jump:hover { color: var(--accent); }
@media (max-width: 900px) {
  .lc-title { font-size: 27px; }
  .lead-card { padding: 18px 18px 20px; }
  .lc-excerpt { column-count: 1; column-rule: 0; }
}
/* 速览入口行（首页要闻带末行）：与其他要闻行区分，提示这是折叠入口 */
.wire-item.wire-more { border-bottom: 0; }
.wire-item.wire-more .w-title { color: var(--accent); }

/* 整期页：收紧顶部留白，让首屏容得下 A1 头条卡与 A2 版头 */
.issue-page { padding-top: 20px; }
.issue-page .sec-head { margin-bottom: 14px; }

/* 记者角标可点：链到「关于本报」的名册锚点（同色同框，只加 hover 反馈） */
a.by-badge { color: inherit; text-decoration: none; }
a.by-badge:hover { border-color: var(--accent); color: var(--accent); }

/* ===============================================================
   v21 · 编辑部头像：名册填了图就用图，没填仍是文字头像（深色圆里的一个字）
   =============================================================== */
.badge .b-avatar { width: 64px; height: 64px; margin: 0 auto 10px; border-radius: 50%;
  object-fit: cover; display: block; background: var(--paper); border: 1px solid var(--ink); }
a.desk-chip { text-decoration: none; color: var(--ink); }
a.desk-chip:hover { border-color: var(--accent); }
.desk-chip img { width: 100%; height: 100%; object-fit: cover; display: block; }

/* ===============================================================
   v22 · 会员稿的公开预览 ＋ 特刊/往期头版卡片样式
   =============================================================== */
/* 会员稿正文区：先给一小段开头预览，再进入会员门槛。
   预览与门槛同在一个 [data-locked] 容器里 —— 会员态由 JS 整段替换，预览随之消失。 */
.lock-preview { margin: 0 0 14px; font-size: 15px; line-height: 1.9; color: var(--ink-soft); text-align: justify; }
.lock-preview::after { content: "…"; color: var(--muted); }
.read-short .lock-preview { font-size: 14px; }

/* 特刊列表与往期头版的卡片（.sp-grid/.sp-card/.s-* 此前没有任何样式，卡片是裸的） */
.sp-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 18px; }
.sp-card { display: flex; flex-direction: column; background: var(--paper-card);
  border: 1px solid var(--ink); padding: 16px 18px 14px; }
.s-no { font-family: var(--sans); font-size: 11.5px; letter-spacing: .16em; color: var(--accent); }
.sp-card h3 { margin: 6px 0 0; font-family: var(--serif); font-size: 19px; font-weight: 900; line-height: 1.45; }
.sp-card h3 a { color: var(--ink); text-decoration: none; }
.sp-card h3 a:hover { color: var(--accent); }
.s-excerpt { margin: 8px 0 0; font-size: 13.5px; line-height: 1.8; color: var(--ink-soft); }
.s-meta { margin-top: 10px; font-family: var(--sans); font-size: 12px; color: var(--muted); }
.s-link { margin-top: 10px; font-family: var(--sans); font-size: 12.5px; color: var(--accent); text-decoration: none; }
.s-link:hover { text-decoration: underline; }

/* 无障碍：只给读屏与搜索引擎看的标题（日报/周刊门户此前没有 H1，特刊门户有 —— 统一） */
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }

/* ---------------- 第三轮审查修复（2026-09-25） ---------------- */
/* 二级标题降级：原为 h1（每页只保留一个 H1 的无障碍约束），视觉与原 .letter-paper h1 一致 */
.doc-h2 { font-size: 27px; font-weight: 900; color: var(--ink); margin-bottom: 4px; }
/* 特刊页头的整刊 PDF 按钮（会员；匿名点击跳订阅） */
.rh-pdf { margin: 6px 0 0; }
.rh-pdf .btn { display: inline-block; }

/* 页头登录态：状态未知（首次访问，localStorage 尚无缓存）时先隐藏，等 main.js 定名后显示 */
.pt-me-unknown .gb-login { visibility: hidden; }

/* 季节性导航项：窗口期内红色标识，与常设栏目区分 */
.nav-links a.nlink.seasonal { color: var(--accent); font-weight: 700; }

/* —— 结账 CTA（Paddle 凭据配齐后由构建自动切换的套餐卡支付表单）—— */
.checkout-cta{display:flex;flex-direction:column;gap:8px;margin:8px 0 2px}
.checkout-cta input[type=email]{width:100%;box-sizing:border-box;padding:9px 12px;
  border:1px solid #CFC6AC;border-radius:6px;background:#FBF8EF;color:#16382E;font:inherit}
.checkout-cta input[type=email]:focus{outline:2px solid #C0431F;outline-offset:1px}
.checkout-cta .btn{align-self:flex-start;cursor:pointer}

/* —— 三档定价（Paddle PricePreview + overlay 结账）—— */
.pp-wrap{margin:6px 0}
.pp-toggle{display:inline-flex;border:1px solid #CFC6AC;border-radius:999px;overflow:hidden;margin:0 0 18px;background:#FBF8EF}
.pp-toggle button{border:0;background:transparent;padding:9px 22px;font:inherit;cursor:pointer;color:#16382E}
.pp-toggle button.on{background:#1F3D2E;color:#FBF8EF;font-weight:700}
.pp-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;align-items:stretch}
@media(max-width:900px){.pp-grid{grid-template-columns:1fr}}
.pp-card{border:1px solid #CFC6AC;border-radius:10px;padding:22px;background:#FBF8EF;display:flex;flex-direction:column;position:relative}
.pp-card.pp-featured{border-color:#1F3D2E;border-width:2px}
.pp-flag{position:absolute;top:-11px;right:14px;background:#C0431F;color:#fff;font-size:12px;padding:2px 10px;border-radius:999px}
.pp-card h3{margin:0 0 4px;font-size:20px;color:#16382E}
.pp-desc{color:#3D4440;margin:0 0 12px}
.pp-price{margin:0 0 12px;min-height:44px}
.pp-amount{font-size:34px;font-weight:800;color:#16382E}
.pp-per{color:#6C7A72;font-size:14px}
.pp-feats{margin:0 0 16px;padding-left:18px;color:#3D4440;line-height:1.8;text-align:left}
.pp-card .btn{margin-top:auto;cursor:pointer}
.t-cta2{margin-top:8px}
.t-cta2 .btn{width:100%}
.t-cta2 .plan-email{width:100%;box-sizing:border-box;padding:8px 10px;border:1px solid #CFC6AC;border-radius:6px;background:#FBF8EF;color:#16382E;font:inherit;margin-bottom:6px}

/* —— 套餐卡：订阅价 / 单次价切换 ——
   两个价格 span 一律继承卡片主题色（.tier .t-price / .tier.featured .t-price），
   不要给 .pp-show-once 单独设色：深色 featured 卡上会变成深底深字（历史 bug）。*/
/* CTA 区固定两行按钮高的下限（按钮 1 行 46px / 2 行 66px）：
   按钮文案随语言与状态变化（fr「Achat unique (sans reconduction)」带 .18em 字距后约 310px，
   窄卡上换两行；「S'abonner (reconduction)」一行），不设下限会带动卡片与整行网格高度跳动。*/
.tier .t-cta{min-height:66px;display:flex;align-items:flex-end}
.tier .t-cta .btn{width:100%;cursor:pointer}
/* —— 精选集横幅 —— */
.coll-band{display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap;border:1px solid #CFC6AC;border-left:4px solid #C0431F;border-radius:10px;background:#FBF8EF;padding:20px 22px;margin:20px 0 6px}
.cb-left{max-width:620px;text-align:left}
.cb-tag{display:inline-block;background:#C0431F;color:#fff;font-size:12px;padding:2px 10px;border-radius:999px;margin-bottom:8px}
.cb-left .doc-h2{margin:0 0 6px}
.cb-left p{margin:0;color:#3D4440;line-height:1.7}
.cb-right{display:flex;flex-direction:column;align-items:flex-start;gap:8px}
.cb-right .btn{cursor:pointer}
.cb-free{color:#C0431F;font-size:13.5px;text-decoration:none;border-bottom:1px dashed #C0431F;white-space:nowrap}

/* —— 自动续费 / 单次 双态分段选择器（醒目不突兀：胶囊分段 + 选中填充；深浅卡各自配色）—— */
.pp-switch{display:flex;border:1px solid #CFC6AC;border-radius:999px;overflow:hidden;margin:12px 0 8px;background:#F1EADA}
.pp-opt{flex:1;border:0;background:transparent;padding:8px 10px;font:inherit;font-size:13px;line-height:1.35;color:#16382E;cursor:pointer;white-space:nowrap}
.pp-opt.on{background:#1F3D2E;color:#FBF8EF;font-weight:700}
.pp-opt:first-child{border-right:1px solid rgba(207,198,172,.6)}
.tier.featured .pp-switch{background:rgba(251,248,239,.10);border-color:rgba(251,248,239,.35)}
.tier.featured .pp-opt{color:#FBF8EF;opacity:.8}
.tier.featured .pp-opt.on{background:#FBF8EF;color:#16382E;opacity:1}
.tier.featured .pp-opt:first-child{border-right-color:rgba(251,248,239,.25)}
/* 状态确认文案：固定两行高（12.5px × 1.55 × 2 ≈ 38.75px）。
   切换时 on/off 文案长度不同、换行数可能不同；无固定高度会带动卡片与整行网格高度跳动
   （实测：中文 31 字 vs 30 字在某个卡片宽度下正好 2 行 vs 1 行）。 */
.pp-renew-tip{font-size:12.5px;margin:0 0 12px;text-align:left;line-height:1.55;color:#6C7A72;min-height:38.75px}
.tier.featured .pp-renew-tip{color:rgba(251,248,239,.78)}

/* —— 年度精选集：栏目横幅 + 卷页「购买 / 下载」区（按年鉴权，已购者只见下载）—— */
.coll-band .cb-right .help{color:var(--muted);font-size:12.5px;letter-spacing:.06em}
.coll-buy{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;
  border:1px solid var(--ink);border-left:4px solid var(--accent);border-radius:10px;
  background:var(--card,#FBF8EF);padding:18px 22px;margin:0 0 18px;text-align:left}
.cb-buy-left{max-width:620px;text-align:left}
.cb-buy-left .doc-h2{margin:6px 0 6px}
.cb-buy-left p{margin:0 0 4px;color:#3D4440;line-height:1.7}
.cb-buy-left .help{color:var(--muted);font-size:12.5px;margin-top:6px}
.cb-buy-right{display:flex;flex-direction:column;align-items:flex-start;gap:8px;min-width:180px}
.cb-buy-right .btn{cursor:pointer;white-space:nowrap}
.cb-note{margin:14px 0 0;flex:1 1 100%;color:var(--muted);font-size:12.5px}
.cb-note.is-err{color:var(--accent)}
.cb-pending{display:inline-block;font-size:13px;color:var(--muted);border:1px dashed var(--rule,#CFC6AC);
  border-radius:999px;padding:8px 14px}
@media(max-width:700px){.coll-buy{flex-direction:column;align-items:flex-start}
  .cb-buy-right{width:100%}.cb-buy-right .btn{width:100%;text-align:center}}

/* —— 法律页面（Paddle 审核：服务条款 / 退款政策 / 隐私政策）—— */
.legal-wrap{max-width:820px}
.legal-wrap h1{font-family:var(--display,var(--sans));font-size:30px;color:var(--ink);letter-spacing:.06em;margin:8px 0 2px}
.legal-en{font-family:var(--display);font-size:11px;letter-spacing:.26em;text-transform:uppercase;color:var(--accent);margin-bottom:14px}
.legal-intro{color:#3D4440;line-height:1.85;text-align:justify;border-left:3px solid var(--accent);
  background:var(--card,#FBF8EF);padding:12px 16px;border-radius:0 6px 6px 0;margin:0 0 18px}
.legal-meta{display:grid;grid-template-columns:150px 1fr;gap:6px 14px;border:1px solid var(--rule,#CFC6AC);
  border-radius:8px;padding:14px 18px;background:var(--card,#FBF8EF);font-size:13.5px;margin:0 0 24px}
.legal-meta .lm-k{color:var(--muted);font-size:12.5px;letter-spacing:.06em}
.legal-sec{margin:0 0 22px}
.legal-sec h2{font-size:16px;color:var(--ink);letter-spacing:.06em;margin:0 0 8px;
  border-bottom:1px dashed var(--rule,#CFC6AC);padding-bottom:6px}
.legal-sec p{color:#3D4440;line-height:1.9;margin:0 0 10px;text-align:justify}
.legal-sec b{color:var(--ink)}
.legal-nav{margin:26px 0 8px;padding-top:14px;border-top:1px solid var(--rule,#CFC6AC);font-size:13.5px;color:var(--muted)}
.legal-nav a{color:var(--accent);text-decoration:none;border-bottom:1px dashed var(--accent);margin-left:8px}
@media(max-width:700px){.legal-meta{grid-template-columns:1fr}.legal-meta .lm-k{margin-top:6px}}
/* 结账前的合规提示（条款 / 退款 / Paddle 记录商户） */
.legal-consent{font-size:12.5px;color:var(--muted);line-height:1.7;margin:14px 0 0;flex:1 1 100%}
.legal-consent a{color:var(--accent);text-decoration:none;border-bottom:1px dashed var(--accent)}

/* —— 整期 PDF 下载的内联提示（未登录／无权益／尚未生成：就地说明，不再把用户甩到订阅页）—— */
.pdf-note{display:block;flex:1 1 100%;font-family:var(--sans);font-size:12.5px;line-height:1.7;
  color:var(--muted);margin-top:8px}
.pdf-note.is-err{color:var(--accent)}
.pdf-note a{color:inherit;text-decoration:none;border-bottom:1px dashed currentColor}
.pdf-note a:hover{color:var(--accent)}
[data-busy]{opacity:.6;cursor:progress;pointer-events:none}
