@charset "UTF-8";
/* ==========================================================================
   图像格式PictureFormat · assets/css/newspaper.css
   阶段：P2 报纸版面（必须加载在 base.css 之后）

   纪律（违反即返工）：
     · 全程只消费 base.css 的设计令牌；本文件不新增任何十六进制色
       （唯一例外是 @media print 里的油墨定值 #000，由 P5 print.css 接管）。
     · 骨架（报头双线 / 头条 2fr:1fr / 正文分栏）三件套必须落地。
     · 金属职责：黄铜 --np-brass* 只做结构与仪式（框线/缎带/报头装饰），
       银 --np-silver* 只做功能与小件（角标/铆钉顶面）；各自 ≤5% 面积、
       互不贴邻、都不作正文文字色。
     · 断点：≥1200 三栏 / 768–1199 两栏 / <768 单栏；根字号 17px（≤600px 16px）。
     · 只追加，不覆盖 base.css 的任何数值。
   ========================================================================== */

/* ==========================================================================
   00 顶部令牌 —— 只扩展
   ========================================================================== */
:root {
  /* --- 版式字级（报纸层级；锚定根字号 17px / ≤600px 16px） --- */
  --fs-masthead: clamp(2.75rem, 2rem + 3.6vw, 4.25rem);  /* 刊名：全站唯一 ≥3rem */
  --fs-section:  1.05rem;                                 /* 版面名：头版/要闻/专栏/副刊 */
  --fs-headline: var(--fs-h1);                            /* 头条：复用 base 的 h1 clamp */
  --fs-subhead:  var(--fs-h2);                            /* 二级标题：复用 base 的 h2 clamp */
  --fs-deck:     var(--fs-lead);                          /* 导语/摘要 */
  --fs-body:     var(--fs-base);                          /* 正文 1rem（17px） */
  --fs-caption:  var(--fs-sm);                            /* 图注 */
  --fs-label:    var(--fs-xs);                            /* 标签/页脚 */

  /* --- 行高 / 字距（只补报纸缺的档） --- */
  --lh-masthead: 1.04;
  --lh-section:  1.2;
  --lh-caption:  1.5;
  --track-masthead: -0.005em;
  --track-section:  var(--track-caps);

  /* --- 报头双线（上粗 2px + 间距 3px + 下细 1px） --- */
  --np-rule-thick: 2px;
  --np-rule-thin:  1px;
  --np-rule-gap:   3px;
  --np-rule-color: var(--ink-strong);       /* 双线走墨色（结构），铜色留给小件 */
  --np-rule-hair:  var(--hairline) solid var(--rule);

  /* --- 多栏正文 --- */
  --np-col-width: 22ch;
  --np-col-gap:   var(--space-6);
  --np-col-rule:  var(--hairline) solid var(--border);
  --np-col-max:   3;

  /* --- 蒸汽朋克小件尺寸 --- */
  --np-gear:      48px;
  --np-gear-sm:   16px;
  --np-rivet:      5px;
  --np-rivet-gap: 24px;
  --np-corner:    12px;

  /* --- 金属职责别名（数值全部来自 base，防误用） --- */
  --np-brass:     var(--metal);
  --np-brass-hi:  var(--metal-hi);
  --np-silver:    var(--silver);
  --np-silver-hi: var(--silver-hi);
  --np-silver-lo: var(--silver-lo);

  --np-paper-noise: 1;    /* P5 纸纹开关占位 */
}

/* P9.5 报头自适应：站名 11 字 → 17 字（图像格式Pictureformat），刊名全断点保持单行。
   只动报头刊名字号令牌 --fs-masthead（全站唯一消费者 = .np-masthead__title），其它排版零改动。
   实测：768–810 原折两行（报头齿轮占位所致）→ 768–1023 收一档；≥1024 走原令牌（1440 视觉零变化）。 */
@media (max-width: 767px) {
  :root { --fs-masthead: clamp(1.6rem, 1.4rem + 2.1vw, 2.75rem); }
}
@media (min-width: 768px) and (max-width: 1023px) {
  :root { --fs-masthead: clamp(2.9rem, 1.3rem + 4.4vw, 4.25rem); }
}

/* ==========================================================================
   01 报纸编辑口径的小字：一律走衬线（EB Garamond 旧式数字），不用等宽
   ========================================================================== */
.np-meta,
.np-label,
.np-masthead__meta,
.np-pager,
.np-digest__sec,
.np-colophon__links,
.np-colophon__powered {
  font-family: var(--font-serif);
  font-size: var(--fs-label);
  letter-spacing: var(--track-caps);
  text-transform: uppercase;
  color: var(--text-muted);
  font-variant-numeric: oldstyle-nums;
}

/* 小字列表（署名行/页脚链接）：横排 + 中点分隔，且清零 base 的 ul/li 默认缩进 */
.np-meta--list {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: var(--space-1) var(--space-3);
  margin: 0;
  padding: 0;
  list-style: none;
}
.np-meta--list > li { margin: 0; }
.np-meta--list > li + li::before {
  content: "·";
  margin-right: var(--space-1);
  color: var(--rule);
}
.np-meta a { color: inherit; text-decoration: none; }
.np-meta a:hover { color: var(--text-strong); }

/* ==========================================================================
   02 站点导航条（保留原「首页 + 独立页面 + 搜索」功能，仅换皮）
   ========================================================================== */
.np-nav {
  border-bottom: var(--hairline) solid var(--border-soft);
}
.np-nav__inner {
  position: relative;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  gap: var(--space-2) var(--space-4);
  padding-block: var(--space-2);
}

/* 汉堡状态源：视觉隐藏但可聚焦（label 为点击目标） */
.np-nav__toggler-input {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: 0;
  padding: 0;
  opacity: 0;
  pointer-events: none;
}
.np-nav__toggler-btn {
  display: none;
  align-items: center;
  justify-content: center;
  width: 2.25rem;
  height: 2.25rem;
  color: var(--text);
  border: var(--hairline) solid var(--border);
  border-radius: var(--radius);
  cursor: pointer;
}
.np-nav__toggler-input:focus-visible + .np-nav__toggler-btn {
  outline: var(--focus-width) solid var(--focus-ring);
  outline-offset: var(--focus-offset);
}

/* F5 无障碍修正：桌面端汉堡控件（label）已 display:none，但 input 仍可被 Tab
   聚焦——键盘用户会停在一个看不见的控件上。桌面不需要 checkbox hack（.np-nav__menu
   本就 display:flex），故把 input 移出可聚焦序列；<768 汉堡展开逻辑不受影响。 */
@media (min-width: 768px) {
  .np-nav__toggler-input { display: none; }
}

.np-nav__menu {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-2) var(--space-4);
  margin: 0;
  padding: 0;
  list-style: none;
}
.np-nav__menu > li { margin: 0; }
.np-nav__menu a {
  color: var(--text);
  text-decoration: none;
  padding-block: var(--space-1);
  border-bottom: 2px solid transparent;
}
.np-nav__menu a:hover { color: var(--text-strong); }
.np-nav__menu a.is-active {
  color: var(--text-strong);
  border-bottom-color: var(--blue);
}

.np-nav__search form { display: flex; align-items: center; gap: var(--space-2); }
.np-nav__search input[type="search"] { width: 12rem; max-width: 100%; }
.np-nav__submit {
  padding: var(--space-1) var(--space-3);
  color: var(--text-strong);
  border: var(--hairline) solid var(--rule);
  border-radius: var(--radius);
  background: transparent;
}
.np-nav__submit:hover { background: var(--blue-pale); }

/* P3 抽屉入口：默认 hidden，由 drawer.js 接管后显示 */
.np-drawer-trigger {
  padding: var(--space-1) var(--space-3);
  color: var(--text-strong);
  border: var(--hairline) solid var(--rule);
  border-radius: var(--radius);
  background: transparent;
}
.np-drawer-trigger:hover { background: var(--blue-pale); }

/* ==========================================================================
   03 报头 Masthead（期号·日期 / 刊名 / 上粗下细双线 / 版面切换）
   ========================================================================== */
.np-masthead {
  text-align: center;
  padding-block: var(--space-5) var(--space-3);
}
.np-masthead__meta {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: var(--space-3);
  margin: 0;
  padding-block: var(--space-2);
  border-top: var(--hairline) solid var(--border-soft);
}
.np-masthead__date { color: var(--text-muted); text-decoration: none; }
.np-masthead__date:hover { color: var(--text-strong); }
.np-masthead__date time { font: inherit; }

.np-masthead__brandline {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-4);
  margin-block: var(--space-3);
}
.np-masthead__title {
  margin: 0;
  font-family: var(--font-cjk-black), var(--font-serif);   /* P8 字体波：报头刊名换自托管中文黑体 */
  font-size: var(--fs-masthead);
  font-weight: 700;              /* 600 → 700（黑体真 700；拉丁回落 EB Garamond 取最接近字重） */
  line-height: var(--lh-masthead);
  letter-spacing: var(--track-masthead);
  color: var(--np-masthead-ink);   /* P8.3：报头刊名 → 专用令牌（头像头发色），不再用全站 --text-strong */
}
.np-masthead__title a { color: inherit; text-decoration: none; }
.np-masthead__title a:hover { color: var(--link-hover); }
.np-masthead__logo { display: block; max-height: 1.6em; width: auto; }

/* 报头齿轮（黄铜，仅结构与仪式；面积远低于 5%） */
.np-masthead__ornament { flex: none; color: var(--np-brass); line-height: 0; }
.np-masthead__ornament .np-gear {
  display: block;
  width: var(--np-gear);
  height: var(--np-gear);
}

.np-masthead__desc {
  margin: var(--space-1) 0 0;
  font-size: var(--fs-deck);
  color: var(--text-muted);
  line-height: 1.7;
  max-width: none;
}

/* 上粗下细双线：border-box 下 height = 2 + 3 + 1 = 6px，中间正好留 3px */
.np-masthead__rule {
  position: relative;
  height: calc(var(--np-rule-thick) + var(--np-rule-gap) + var(--np-rule-thin));
  border-top: var(--np-rule-thick) solid var(--np-rule-color);
  border-bottom: var(--np-rule-thin) solid var(--np-rule-color);
  margin-block: var(--space-3);
}
/* 铆钉：双线两端（银只做顶面高光 + 暗部，底走灰 --rule） */
.np-masthead__rule::before,
.np-masthead__rule::after {
  content: "";
  position: absolute;
  top: 50%;
  width: var(--np-rivet);
  height: var(--np-rivet);
  margin-top: calc(var(--np-rivet) / -2);
  border-radius: 50%;
  background: var(--rule);
  box-shadow: inset 0 1px 0 var(--np-silver-hi), inset -1px -1px 0 var(--np-silver-lo);
}
.np-masthead__rule::before { left: 0; }
.np-masthead__rule::after { right: 0; }

/* 版面切换（小帽式样；当前版面黄铜下划线） */
.np-section-tabs {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: var(--space-2) var(--space-5);
  margin: 0;
  padding-block: var(--space-1);
}
.np-section-tabs__item {
  font-family: var(--font-serif);
  font-size: var(--fs-section);
  font-weight: 600;
  line-height: var(--lh-section);
  letter-spacing: var(--track-section);
  text-transform: uppercase;
  color: var(--text-muted);
  text-decoration: none;
  padding-block: var(--space-1);
  border-bottom: 2px solid transparent;
  transition: color var(--dur-fast) var(--ease), border-color var(--dur-fast) var(--ease);
}
.np-section-tabs__item:hover { color: var(--text-strong); }
.np-section-tabs__item.is-active {
  color: var(--text-strong);
  border-bottom-color: var(--np-brass);
}

/* ==========================================================================
   04 版面骨架
   ========================================================================== */
.np-main { padding-block: var(--space-5) var(--space-6); }

.np-issue {
  display: grid;
  gap: var(--space-5);
  grid-template-columns: minmax(0, 1fr);
}
.np-issue > * { min-width: 0; }

.np-issue__head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--space-2) var(--space-4);
  padding-bottom: var(--space-2);
  border-bottom: var(--hairline) solid var(--border);
}
.np-issue__kicker { margin: 0; }
.np-section-name {
  margin: 0;
  font-size: var(--fs-section);
  font-weight: 600;
  line-height: var(--lh-section);
  letter-spacing: var(--track-section);
  text-transform: uppercase;
  color: var(--text-strong);
}
.np-section-name:focus { outline: none; }

/* 头条区 2fr / 1fr（≥768 生效；更窄时自然塌为单列） */
@media (min-width: 768px) {
  .np-lead {
    display: grid;
    grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
    gap: var(--space-5);
    align-items: start;
  }
  .np-lead > * { min-width: 0; }
  .np-lead__side {
    border-left: var(--hairline) solid var(--border);
    padding-left: var(--space-5);
  }
}

/* 正文自动分栏（22ch + column-rule） */
.np-columns {
  column-width: var(--np-col-width);
  column-count: var(--np-col-max);
  column-gap: var(--np-col-gap);
  column-rule: var(--np-col-rule);
  overflow-wrap: break-word;
}
.np-columns p { orphans: 2; widows: 2; }
/* 分栏折断纪律：标题不落栏底，媒体/表格不跨栏断裂 */
.np-columns .np-title,
.np-columns .np-item__kicker { break-after: avoid-column; }
.np-columns .np-deck,
.np-columns .np-item__meta { break-before: avoid-column; }
.np-columns figure,
.np-columns img,
.np-columns blockquote,
.np-columns pre,
.np-columns table { break-inside: avoid; }

/* 头条「主文轨道」内的分栏：轨道比整版窄，栏数收一档，避免每行过窄 */
.np-lead__main .np-columns { column-count: 2; }
@media (max-width: 1199px) {
  .np-columns { column-count: 2; }
  .np-lead__main .np-columns { column-count: 1; }
}
@media (max-width: 767px) {
  .np-columns { column-count: 1; }
}

/* ==========================================================================
   05 条目 / 正文 / 图注
   ========================================================================== */
.np-item { margin: 0; }
.np-item + .np-item { margin-top: var(--space-5); }

/* 长拉丁串/长网址不许撑破栏宽（中文无需处理，浏览器会任意断行） */
.np-masthead__title,
.np-title,
.np-deck,
.np-section-name,
.np-digest__link,
.np-masthead__desc { overflow-wrap: break-word; }

.np-item__kicker { margin: 0 0 var(--space-1); }

.np-title {
  margin: 0;
  font-family: var(--font-cjk-black), var(--font-serif);   /* P8 字体波：条目大标题换自托管中文黑体 */
  font-size: var(--fs-subhead);
  font-weight: 700;              /* 600 → 700——.np-item--lead .np-title 只覆盖字号/行高，自动继承本族+字重 */
  line-height: var(--lh-head);
  letter-spacing: var(--track-head);
  color: var(--text-strong);
}
.np-item--lead .np-title {
  font-size: var(--fs-headline);
  line-height: var(--lh-tight);
}

.np-deck {
  margin: var(--space-2) 0 0;
  font-size: var(--fs-deck);
  line-height: 1.8;
  color: var(--text-strong);
}
.np-item__meta { margin: var(--space-2) 0 0; }

.np-body { margin-top: var(--space-3); }
.np-body p { margin: 0; max-width: none; }
.np-body p + p { margin-top: var(--space-4); }

.np-caption {
  margin: var(--space-2) 0 0;
  font-size: var(--fs-caption);
  line-height: var(--lh-caption);
  color: var(--text-muted);
  max-width: none;
}

.np-empty {
  margin: 0;
  padding-block: var(--space-7);
  text-align: center;
  color: var(--text-muted);
  max-width: none;
}

/* 铜角（报头/头条框四角；仅描边，不填充） */
.np-corner { position: relative; }
.np-corner::before,
.np-corner::after {
  content: "";
  position: absolute;
  width: var(--np-corner);
  height: var(--np-corner);
  border: 1px solid var(--np-brass);
  pointer-events: none;
}
.np-corner::before { top: -1px; left: -1px; border-right: 0; border-bottom: 0; }
.np-corner::after { bottom: -1px; right: -1px; border-left: 0; border-top: 0; }

/* ==========================================================================
   06 版内分页
   ========================================================================== */
.np-pager {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: var(--space-2) var(--space-4);
  margin-top: var(--space-5);
  padding-top: var(--space-4);
  border-top: var(--hairline) solid var(--border);
}
.np-pager__step { color: var(--link); text-decoration: none; }
.np-pager__step:hover { color: var(--link-hover); text-decoration: underline; }
.np-pager__step.is-disabled { color: var(--text-muted); opacity: .65; }
.np-pager__pages {
  display: flex;
  gap: var(--space-1);
  margin: 0;
  padding: 0;
  list-style: none;
}
.np-pager__pages > li { margin: 0; }
.np-pager__num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 2.2em;
  padding: .15em .5em;
  color: var(--text);
  text-decoration: none;
  border: var(--hairline) solid var(--border);
  border-radius: var(--radius-sm);
}
.np-pager__num:hover { background: var(--blue-pale); }
.np-pager__num.is-active {
  background: var(--blue-deep);
  border-color: var(--blue-deep);
  color: var(--paper);
}

/* ==========================================================================
   07 本期要目（仅头版首页）
   ========================================================================== */
.np-digest {
  margin-top: var(--space-4);
  padding-top: var(--space-4);
  border-top: var(--hairline) solid var(--border);
}
.np-digest__title { margin: 0 0 var(--space-3); }
.np-digest__list {
  display: grid;
  gap: var(--space-2);
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr));
  margin: 0;
  padding: 0;
  list-style: none;
}
.np-digest__row {
  display: flex;
  gap: var(--space-2);
  align-items: baseline;
  margin: 0;
}
.np-digest__sec { flex: none; }
.np-digest__link { color: var(--link); text-decoration: none; }
.np-digest__link:hover { color: var(--link-hover); text-decoration: underline; }

/* ==========================================================================
   08 归档 / 博客列表（archive.php；与报纸头版隔离）
   ========================================================================== */
.np-archive__title {
  margin: 0 0 var(--space-5);
  font-size: var(--fs-h2);
}
.np-archive__item { margin: 0; }
.np-archive__headline {
  margin: 0;
  font-size: var(--fs-h3);
  line-height: var(--lh-head);
}
.np-archive__headline a { color: var(--text-strong); text-decoration: none; }
.np-archive__headline a:hover { color: var(--link-hover); }
.np-archive__meta { margin-top: var(--space-2); }
.np-archive__body { margin-top: var(--space-3); }
.np-archive__sep {
  border: 0;
  border-top: var(--hairline) solid var(--border-soft);
  margin-block: var(--space-5);
}

/* pageNav() 产出的通用分页（archive / search 复用） */
.page-navigator {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: var(--space-2);
  margin: var(--space-5) 0 0;
  padding: 0;
  list-style: none;
}
.page-navigator > li { margin: 0; }
.page-navigator a,
.page-navigator span {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 2.2em;
  padding: .15em .5em;
  color: var(--text);
  text-decoration: none;
  border: var(--hairline) solid var(--border);
  border-radius: var(--radius-sm);
}
.page-navigator a:hover { background: var(--blue-pale); }
.page-navigator .current {
  background: var(--blue-deep);
  border-color: var(--blue-deep);
  color: var(--paper);
}

/* ==========================================================================
   09 报脚 Colophon
   ========================================================================== */
.np-colophon {
  margin-top: var(--space-6);
  padding-block: var(--space-5);
  border-top: var(--hairline) solid var(--border);
}
.np-colophon__inner {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-3);
}
.np-colophon__brand { display: flex; align-items: center; gap: var(--space-3); }
.np-colophon__gear { flex: none; color: var(--np-brass); line-height: 0; }
.np-colophon__gear .np-gear {
  display: block;
  width: var(--np-gear-sm);
  height: var(--np-gear-sm);
}
.np-colophon__copy { margin: 0; max-width: none; }
.np-colophon__copy a { color: var(--link); text-decoration: none; }
.np-colophon__copy a:hover { color: var(--link-hover); }
.np-colophon__links { margin: 0; }
.np-colophon__powered { margin: 0; }
.np-colophon__powered a { color: inherit; text-decoration: none; }
.np-colophon__powered a:hover { color: var(--text-strong); }

/* ==========================================================================
   10 响应式（<768 报头退化：铜饰隐藏、期号日期堆叠居中）
   ========================================================================== */
@media (max-width: 767px) {
  .np-nav__toggler-btn { display: inline-flex; }
  .np-nav__inner { justify-content: space-between; }
  .np-nav__menu {
    display: none;
    width: 100%;
    flex-direction: column;
    align-items: flex-start;
    gap: var(--space-1);
    padding-block: var(--space-2);
  }
  .np-nav__toggler-input:checked ~ .np-nav__menu { display: flex; }
  .np-nav__search,
  .np-nav__search form { width: 100%; }
  .np-nav__search input[type="search"] { width: 100%; }

  .np-masthead__meta {
    flex-direction: column;
    align-items: center;
    gap: var(--space-1);
  }
  .np-masthead__ornament { display: none; }
  .np-masthead__title { font-size: var(--fs-masthead); }

  .np-colophon__inner { flex-direction: column; align-items: flex-start; }
}

@media (max-width: 1024px) {
  :root { --np-col-gap: var(--space-5); }
}

/* 降低动效：尊重系统偏好（base 已兜底，这里补标签过渡） */
@media (prefers-reduced-motion: reduce) {
  .np-section-tabs__item { transition: none; }
}

/* ==========================================================================
   11 打印锚点（报纸专属；具体版式由 P5 的 print.css 接管）
   ========================================================================== */
@media print {
  @page { margin: 12mm; }
  :root {
    --np-rule-color: #000;
    --np-col-gap: var(--space-4);
    --np-col-rule: var(--hairline) solid #000;
    --np-paper-noise: 0;
  }
  .np-section-tabs,
  .np-nav,
  .np-switcher,
  .np-pager,
  .np-drawer-trigger,
  .np-masthead__ornament,
  .np-colophon__gear,
  .np-gear,
  .np-masthead__rule::before,
  .np-masthead__rule::after { display: none !important; }
  .np-masthead__rule { border-block-color: #000; }
  .np-columns { column-count: 2; }
  .np-card,
  .np-lead,
  .np-item { break-inside: avoid; }
}

/* ==========================================================================
   12 P1 配置面板联动：铜色装饰开关（brassOrnament）
   ※ 由 header.php 在 <html> 上输出 data-np-brass="off" 触发；
     把黄铜降为结构灰（形状保留、不位移），黄铜 / 银面积纪律不变。
     这里同时重申 --metal*，因为 base.css 的 .ornament / .rule--brass 走的是它。
   ========================================================================== */
[data-np-brass="off"] {
  --np-brass:    var(--rule);
  --np-brass-hi: var(--rule);
  --metal:       var(--rule);
  --metal-hi:    var(--rule);
}


/* ==========================================================================
   13 P5 质感与铜饰（纸纹颗粒 / 铜角 / 铆钉 / feather 图标）
   —— 本轮所有 P5 规则集中于此，绝不触碰冻结的 base.css；
      不新增任何十六进制色：金属一律走 --np-brass* / --np-silver* / --rule 令牌，
      故 12 区的 [data-np-brass="off"] 可整体把铜饰降为结构灰；
      纹理与图标走内联 SVG data URI（零外链，满足 E2 / D4）。
   ========================================================================== */

/* ---- 13.1 纸纹 + 油墨颗粒（D1）--------------------------------------------
   两枚内联 SVG feTurbulence（data URI）：高频「油墨颗粒」+ 中频「纸面微噪」。
   挂 body::before 固定装饰层：pointer-events:none 不挡交互、不参与布局；
   z-index:-1 使其落在纸底（body 背景已上提为画布底）之上、正文之下，绝不遮内容。
   桌面端实时渲染；低端移动端退化见 13.5（R2）。 */
body::before {
  content: "";
  position: fixed;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  background-image:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='ink'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23ink)' opacity='0.6'/%3E%3C/svg%3E"),
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='320' height='320'%3E%3Cfilter id='paper'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.5' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='320' height='320' filter='url(%23paper)' opacity='0.4'/%3E%3C/svg%3E");
  background-repeat: repeat, repeat;
  background-size: 160px 160px, 320px 320px;
  opacity: calc(.28*var(--np-paper-noise, 1));
  mix-blend-mode: multiply;
}

/* ---- 13.2 铜角落到 .np-corner（D2）----------------------------------------
   P2 已在 .np-corner 铺好黄铜角托（见 06 区前的 .np-corner::before/::after）；
   此处补「角端铜铆钉」：radial-gradient 四分之一圆点压在角托的内顶点，
   走 --np-brass 令牌（随铜饰开关降灰），为背景层、不影响文本流。 */
.np-corner {
  background-image:
    radial-gradient(circle at 0 0, var(--np-brass) 1.6px, transparent 1.8px),
    radial-gradient(circle at 100% 100%, var(--np-brass) 1.6px, transparent 1.8px);
  background-repeat: no-repeat, no-repeat;
}

/* ---- 13.3 铆钉落在分隔线端点 / 栏线交叉处（D3）-----------------------------
   沿用既有令牌 --np-rivet / --np-rivet-gap 与「银只做小件顶面」口径；
   只在装饰层（绝对定位伪元素）绘制，不进文本流、不改排版。
   —— 报头双线两端铆钉见 03 区 .np-masthead__rule::before/::after（P2 已落，勿重复）。
   注：.np-columns 是多栏容器，用「绝对定位伪元素」以免扰乱分栏流。 */
.np-columns,
.np-digest,
.np-pager {
  position: relative;
}
.np-columns::before,
.np-columns::after,
.np-digest::before,
.np-digest::after,
.np-pager::before,
.np-pager::after {
  content: "";
  position: absolute;
  top: 0;
  width: var(--np-rivet);
  height: var(--np-rivet);
  margin-top: calc(var(--np-rivet) / -2);
  border-radius: 50%;
  background: var(--rule);
  box-shadow: inset 0 1px 0 var(--np-silver-hi), inset -1px -1px 0 var(--np-silver-lo);
  pointer-events: none;
}
.np-columns::before,
.np-digest::before,
.np-pager::before { left: 0; }
.np-columns::after,
.np-digest::after,
.np-pager::after { right: 0; }

/* ---- 13.4 feather 图标（B；授权范围仅此三类）------------------------------
   授权：第八节【答复 3】解锁 .feather-calendar / .feather-folder / .feather-message
   （含 url()），其余冻结基线不动。图标为手绘内联 SVG（data URI）单色轮廓，
   经 mask 取形 + background-color:currentColor 上色，不硬编码任何色值；
   图标落在 ::before 伪元素内（纯装饰，不进可访问树），其更高特异性顺带取代
   .np-meta--list 的「·」分隔（P2 为 li+li::before），因而不增 padding、
   不改行高、不改换行行为。 */
.np-meta--list > li.feather-calendar::before,
.np-meta--list > li.feather-folder::before,
.np-meta--list > li.feather-message::before {
  content: "";
  display: inline-block;
  width: 1em;
  height: 1em;
  margin-right: 0.4em;
  vertical-align: -0.14em;
  background-color: currentColor;
  -webkit-mask: var(--np-feather-icon) center / contain no-repeat;
  mask: var(--np-feather-icon) center / contain no-repeat;
}
.np-meta--list > li.feather-calendar {
  --np-feather-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='18' rx='2' ry='2'/%3E%3Cline x1='16' y1='2' x2='16' y2='6'/%3E%3Cline x1='8' y1='2' x2='8' y2='6'/%3E%3Cline x1='3' y1='10' x2='21' y2='10'/%3E%3C/svg%3E");
}
.np-meta--list > li.feather-folder {
  --np-feather-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z'/%3E%3C/svg%3E");
}
.np-meta--list > li.feather-message {
  --np-feather-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8z'/%3E%3C/svg%3E");
}

/* ---- 13.5 低端移动端退化（R2）--------------------------------------------
   <768px：双纹理降为单层低频纸纹、再降透明，减轻合成压力。
   若实测仍偏重，可把本块改为 body::before { display: none; }（关闭方案）。 */
@media (max-width: 767px) {
  body::before {
    background-image:
      url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='320' height='320'%3E%3Cfilter id='paper'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.5' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='320' height='320' filter='url(%23paper)' opacity='0.4'/%3E%3C/svg%3E");
    background-size: 320px 320px;
    opacity: calc(.2*var(--np-paper-noise, 1));
  }
}

/* ==== 14 P5.1 齿轮纹样 · 只追加，不覆盖既有数值（资产与设计注记见 inc/ornaments.php） ==== */
/* 14.1 令牌：取 §3.2 表内定值 —— §10.1 的 color-mix 写法实测更深（line 约 2.69:1），
   会越过 §3.3 的 2.60:1 硬顶。实测比值见 inc/ornaments.php 文件头。 */
:root {
  --np-gear-body:      #9FB6BE;
  --np-gear-body-soft: #AEBABA;
  --np-gear-line:      #8397A1;   /* ★2.54:1 上限 */
  --np-gear-vein:      #98A7AC;
  --np-gear-water:     #C3CAD0;
  --np-gear-stud-hi:   #E4E8EB;
  --np-gear-stud-lo:   #93A0AC;
  --np-gear-opacity:   1;
  --np-gear-density:   1;   /* off 档归零；其余档靠 --np-gear-opacity 调浓淡（§A7） */
  --np-gear-scale:     1;   /* §A6 第三钮：大小系数（>1.10 触 A3 第 2 条，慎动） */
  --np-gear-md:  clamp(64px,  10vmin,  96px);
  --np-gear-lg:  clamp(120px, 18vmin, 160px);
  --np-gear-xl:  clamp(160px, 26vmin, 240px);
  --np-gear-2xl: clamp(240px, 34vmin, 360px);
  --np-gear-field:   linear-gradient(transparent, transparent);   /* 兜底：未注入时 0 输出 */
  --np-gear-detail:  linear-gradient(transparent, transparent);
  --np-gear-detail2: linear-gradient(transparent, transparent);   /* P5.2 掩膜兜底（header.php 注入） */
  --np-gear-mid:     linear-gradient(transparent, transparent);
  --np-gear-spur:    linear-gradient(transparent, transparent);
  --np-gear-ux:      linear-gradient(transparent, transparent);
}

/* 14.2 暗色：三路齐全（对齐 base.css 结构）；暗色 line 2.40:1 略低于明色 2.54 */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --np-gear-body:      #3B4857;
    --np-gear-body-soft: #33424F;
    --np-gear-line:      #4A5F72;
    --np-gear-vein:      #475869;
    --np-gear-water:     #26313C;
    --np-gear-stud-hi:   #6E7D8C;
    --np-gear-stud-lo:   #333F4A;
  }
}
:root[data-theme="dark"] {
  --np-gear-body:      #3B4857;
  --np-gear-body-soft: #33424F;
  --np-gear-line:      #4A5F72;
  --np-gear-vein:      #475869;
  --np-gear-water:     #26313C;
  --np-gear-stud-hi:   #6E7D8C;
  --np-gear-stud-lo:   #333F4A;
}
/* theme.css 的 customize 块已同步这 7 个明色值，否则该模式残留暗色齿轮 */

/* 14.3 齿轮层（§10.3）：mask 取形 + 变量上色；左簇 32T 实心⊕18T 线辐，右簇 24T 实心。
   「顶 0 → 65% 高 1.0」的上淡下实已烘焙在资产内部（见 inc/ornaments.php）。
   前提：body 无 transform / filter / opacity / isolation */
body::after {
  content: "";
  position: fixed;
  inset: 0;
  z-index: -1;                 /* 纸纹之上、正文之下 */
  pointer-events: none;        /* 必须，否则吞掉链接点击 */
  opacity: calc(var(--np-gear-opacity)*var(--np-gear-density));
  -webkit-mask:
    var(--np-gear-field)  left  calc(var(--np-gear-2xl)*-.48) bottom calc(var(--np-gear-2xl)*-.45) / calc(var(--np-gear-2xl)*var(--np-gear-scale)) auto no-repeat,
    var(--np-gear-detail) right calc(var(--np-gear-xl)*-.55) bottom calc(var(--np-gear-xl)*-.40) / calc(var(--np-gear-xl)*var(--np-gear-scale)) auto no-repeat;
          mask:
    var(--np-gear-field)  left  calc(var(--np-gear-2xl)*-.48) bottom calc(var(--np-gear-2xl)*-.45) / calc(var(--np-gear-2xl)*var(--np-gear-scale)) auto no-repeat,
    var(--np-gear-detail) right calc(var(--np-gear-xl)*-.55) bottom calc(var(--np-gear-xl)*-.40) / calc(var(--np-gear-xl)*var(--np-gear-scale)) auto no-repeat;
  background-image:
    linear-gradient(var(--np-gear-body), var(--np-gear-body)),
    linear-gradient(var(--np-gear-line), var(--np-gear-line));
  background-position: left calc(var(--np-gear-2xl)*-.48) bottom calc(var(--np-gear-2xl)*-.45),
                       right calc(var(--np-gear-xl)*-.55) bottom calc(var(--np-gear-xl)*-.40);
  background-size: calc(var(--np-gear-2xl)*var(--np-gear-scale)) auto,
                   calc(var(--np-gear-xl)*var(--np-gear-scale)) auto;
}
/* 出画量改「尺寸相对系数」calc(尺寸令牌 × −k)：水平出画率恒 = k（field 48% / detail 55%），
   不再随视口与 mask-size 双重漂移（修 P5.1「1024–1365 出画超 60%」，附录 v1.1 A4） */

/* 14.4 档位开关（§9 / §A5 / §A7）：opacity 随档位**下调**（令牌一律不加深，只往纸色乘性衰减）。
   档高则层多 → 单枚越淡：subtle/normal 1.00、dense .82、ultra .68；最坏三重压仍 ≤2.60/2.40 */
[data-np-gear="subtle"] { --np-gear-opacity: 1.00; }
[data-np-gear="normal"] { --np-gear-opacity: 1.00; }
[data-np-gear="dense"]  { --np-gear-opacity: .82;  }
[data-np-gear="ultra"]  { --np-gear-opacity: .68;  }
[data-np-gear="off"]    { --np-gear-density: 0;    }
[data-np-gear="off"] body::after { display: none; }
/* subtle = §2.2「右下 1 枚」：只留 detail 一层 mask + 一层色 */
[data-np-gear="subtle"] body::after {
  -webkit-mask: var(--np-gear-detail) right calc(var(--np-gear-xl)*-.55) bottom calc(var(--np-gear-xl)*-.40) / calc(var(--np-gear-xl)*var(--np-gear-scale)) auto no-repeat;
          mask: var(--np-gear-detail) right calc(var(--np-gear-xl)*-.55) bottom calc(var(--np-gear-xl)*-.40) / calc(var(--np-gear-xl)*var(--np-gear-scale)) auto no-repeat;
  background-image: linear-gradient(var(--np-gear-line), var(--np-gear-line));
  background-position: right calc(var(--np-gear-xl)*-.55) bottom calc(var(--np-gear-xl)*-.40);
  background-size: calc(var(--np-gear-xl)*var(--np-gear-scale)) auto;
}
/* 锚点逃生开关（§4.2）；blend 可选，※ 验收时禁启用（§3.3） */
[data-np-gear-anchor="document"] body::after { position: absolute; }
[data-np-gear-blend="ink"] body::after { mix-blend-mode: multiply; }

/* 14.5 断点（§5.2）+ 自动降级（§9）：≥1200 全量 / 1024–1199 见 §14.8（去 E 位）/
   768–1023 只留右下 1 枚 / <768・强制色・打印 整层消失 */
@media (max-width: 1023px) {
  body::after {
    -webkit-mask: var(--np-gear-detail) right calc(var(--np-gear-lg)*-.55) bottom calc(var(--np-gear-lg)*-.40) / calc(var(--np-gear-lg)*var(--np-gear-scale)) auto no-repeat;
            mask: var(--np-gear-detail) right calc(var(--np-gear-lg)*-.55) bottom calc(var(--np-gear-lg)*-.40) / calc(var(--np-gear-lg)*var(--np-gear-scale)) auto no-repeat;
    background-image: linear-gradient(var(--np-gear-line), var(--np-gear-line));
    background-position: right calc(var(--np-gear-lg)*-.55) bottom calc(var(--np-gear-lg)*-.40);
    background-size: calc(var(--np-gear-lg)*var(--np-gear-scale)) auto;
  }
}
@media (max-width: 767px)      { body::after { display: none; } }
@media (forced-colors: active) { body::after { display: none; } }
@media print                   { body::after { display: none !important; } }
/* 768–1023 留右下单枚（24T），不取 §10.5 的 field 左簇；理由见 inc/ornaments.php 文件头 */

/* 14.6 B/C 位仪式齿轮走 np_gear_svg() + --np-brass（§10.6；既有规则已满足，不重复声明） */

/* 14.7 齿轮保护区：§12 要求 --ink-mute 小字（water 3.31 / body 2.59 / line 1.80
   压齿轮都不达 AA）覆盖率 = 0、§2.4 要求不与铜角 .np-corner 同点 → 给这些盒铺
   「纸色微降」底（96% 纸 + 4% 黑 = 实测带纹纸面中位色，差 ≤2/255 不可辨）。 */
@media (min-width: 768px) {
  .np-meta,
  .np-label,
  figcaption,
  .np-corner,
  .np-colophon__links,
  .np-colophon__powered { background-color: color-mix(in srgb, var(--paper) 96%, #000 4%); }
}

/* ==== 14.8 P5.2 密度加强（附录 v1.1 A7）· dense=7 枚 / ultra=10 枚 ====
   出画量一律「尺寸相对系数」calc(尺寸令牌 × −k) → 水平出画率恒 = k；层片段收进 --g* 令牌守 §12 门。 */
:root {
  --gF:   var(--np-gear-field)   left  calc(var(--np-gear-2xl)*-.48) bottom calc(var(--np-gear-2xl)*-.45) / calc(var(--np-gear-2xl)*var(--np-gear-scale)) auto no-repeat;
  --gD2:  var(--np-gear-detail2) right calc(var(--np-gear-xl)*-.55) bottom calc(var(--np-gear-xl)*-.40) / calc(var(--np-gear-xl)*var(--np-gear-scale)) auto no-repeat;
  --gM:   var(--np-gear-mid)     right calc(var(--np-gear-xl)*-.45) top 58vh / calc(var(--np-gear-xl)*var(--np-gear-scale)) auto no-repeat;
  --gS:   var(--np-gear-spur)    left  calc(var(--np-gear-md)  *  .30) bottom calc(var(--np-gear-md)  *  .45) / calc(var(--np-gear-md)*var(--np-gear-scale)) auto no-repeat;
  --gU:   var(--np-gear-ux)      left  calc(var(--np-gear-lg)*-.35) top 40vh / calc(var(--np-gear-lg)*var(--np-gear-scale)) auto no-repeat;
  --gFp:  left  calc(var(--np-gear-2xl)*-.48) bottom calc(var(--np-gear-2xl)*-.45);
  --gD2p: right calc(var(--np-gear-xl)*-.55) bottom calc(var(--np-gear-xl)*-.40);
  --gMp:  right calc(var(--np-gear-xl)*-.45) top 58vh;
  --gSp:  left  calc(var(--np-gear-md)  *  .30) bottom calc(var(--np-gear-md)  *  .45);
  --gUp:  left  calc(var(--np-gear-lg)*-.35) top 40vh;
  --gFs:  calc(var(--np-gear-2xl)*var(--np-gear-scale)) auto;
  --gD2s: calc(var(--np-gear-xl)*var(--np-gear-scale)) auto;
  --gMs:  calc(var(--np-gear-xl)*var(--np-gear-scale)) auto;
  --gSs:  calc(var(--np-gear-md)*var(--np-gear-scale)) auto;
  --gUs:  calc(var(--np-gear-lg)*var(--np-gear-scale)) auto;
  --gCb: linear-gradient(var(--np-gear-body),var(--np-gear-body));
  --gCl: linear-gradient(var(--np-gear-line),var(--np-gear-line));
  --gCv: linear-gradient(var(--np-gear-vein),var(--np-gear-vein));
  --gCw: linear-gradient(var(--np-gear-water),var(--np-gear-water));
}
@media (min-width: 1024px) {
  [data-np-gear="dense"] body::after,
  [data-np-gear="ultra"] body::after {
    -webkit-mask: var(--gF), var(--gD2), var(--gM), var(--gS);
            mask: var(--gF), var(--gD2), var(--gM), var(--gS);
    background-image: var(--gCb), var(--gCl), var(--gCv), var(--gCw);
    background-position: var(--gFp), var(--gD2p), var(--gMp), var(--gSp);
    background-size: var(--gFs), var(--gD2s), var(--gMs), var(--gSs);
  }
}
@media (min-width: 1200px) {
  [data-np-gear="ultra"] body::after {
    -webkit-mask: var(--gF), var(--gD2), var(--gM), var(--gS), var(--gU);
            mask: var(--gF), var(--gD2), var(--gM), var(--gS), var(--gU);
    background-image: var(--gCb), var(--gCl), var(--gCv), var(--gCw), var(--gCv);
    background-position: var(--gFp), var(--gD2p), var(--gMp), var(--gSp), var(--gUp);
    background-size: var(--gFs), var(--gD2s), var(--gMs), var(--gSs), var(--gUs);
  }
}
/* 1024–1199：dense/ultra 去 E 位那枚（mid）—— 补 v1.0 §5.2 缺口（A4），留 field/detail2/spur */
@media (min-width: 1024px) and (max-width: 1199px) {
  [data-np-gear="dense"] body::after,
  [data-np-gear="ultra"] body::after {
    -webkit-mask: var(--gF), var(--gD2), var(--gS);
            mask: var(--gF), var(--gD2), var(--gS);
    background-image: var(--gCb), var(--gCl), var(--gCw);
    background-position: var(--gFp), var(--gD2p), var(--gSp);
    background-size: var(--gFs), var(--gD2s), var(--gSs);
  }
}

/* ==== 15 P5.3 文章间分隔线（齿轮 × 线条）· 只追加 · 完整设计注记见 inc/newspaper.php 的 np_sep() ====
   形态：线断在齿轮两侧、齿轮即「接头」（线不穿过齿轮）；线 1px 实线+两端 12% 淡出，齿轮 12px 居中、
   rotate(22.5deg)=8T 半齿距，纯 CSS mask（无 mask-composite，零新资产）。
   层级身份（不得反序）：报头双线（墨色 ≈14.3:1）> 栏线 --rule（≈2.30:1）> 分隔线（≈2.07:1）；
     --np-sep-line / --np-sep-node 走 var() 引用齿轮令牌 → 暗色与 customize 自动跟随，theme.css 零改动。
   开关：跟随 gearPattern 的「存在性」，不跟随「浓淡」——off 时线退化为通长纯线、齿轮被透明 mask 天然关掉；
     其余档恒定 1 枚齿轮，不乘 --np-gear-opacity（12px 再乘 .82 会糊）。
   响应式：※ 本层是「结构线」，与 body::after 齿轮「纹样」层是两层不同的东西 ——
     <768 纹样层 display:none（纹样「退」），本层必须保留（结构线「进」），只把中缝 gap 收到 8px。 */
:root {
  --np-sep-line:  var(--np-gear-vein);
  --np-sep-node:  var(--np-gear-line);
  --np-sep-h:     12px;
  --np-sep-gap:   10px;
  --np-sep-inset: calc(var(--np-sep-h) / 2 + var(--np-sep-gap));   /* 16px */
  --np-sep-asset: linear-gradient(transparent, transparent);       /* 兜底：未注入 = 0 输出 */
}

/* 15.0b P5.4 暗色：只压低 --np-sep-line，使其 ≤ 暗色栏线 --rule（1.57:1）——
   硬规则「分隔线 ≤ 栏线 ≤ 报头」须明暗各自成立（明色 2.07 ≤ 2.30 本就成立）。
   齿轮节点 --np-sep-node 是纹样，不受此序约束，仍守 2.40 顶：结构线退让、节点作锚。
   三路齐全 ＝ 本媒体查询 + [data-theme="dark"] + theme.css customize 回映射。 */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) { --np-sep-line: #38414D; }   /* 实测 1.535:1 < 1.57:1，且 ≥ 线性下限 1.15:1 */
}
:root[data-theme="dark"] { --np-sep-line: #38414D; }

.np-archive__sep,
.np-sep {
  border: 0;
  position: relative;
  height: var(--np-sep-h);
  margin: calc(var(--space-5) - var(--np-sep-h) / 2) 0;            /* 块向 19.5；行内清零＝去掉 <hr> 的 UA auto（grid 里 auto 会让它塌成 0 宽） */
}

/* 线：左右两段各 50% − inset；中缝留 2×inset = 齿轮直径 + 2×gap */
.np-archive__sep::before,
.np-sep::before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: calc(50% - .5px);
  height: 1px;
  background-image:
    linear-gradient(to right, transparent 0, var(--np-sep-line) 12%, var(--np-sep-line)),
    linear-gradient(to left,  transparent 0, var(--np-sep-line) 12%, var(--np-sep-line));
  background-repeat: no-repeat;
  background-position: left center, right center;
  background-size: calc(50% - var(--np-sep-inset)) 100%;
}

/* 齿轮：单独 mask 层（纹样），居中于线；旋转半齿距 */
.np-archive__sep::after,
.np-sep::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  width: var(--np-sep-h);
  height: var(--np-sep-h);
  margin: calc(var(--np-sep-h) / -2) 0 0 calc(var(--np-sep-h) / -2);
  background-color: var(--np-sep-node);
  transform: rotate(22.5deg);
  -webkit-mask: var(--np-sep-asset) center / contain no-repeat;
          mask: var(--np-sep-asset) center / contain no-repeat;
}

[data-np-gear="off"] { --np-sep-inset: 0; }   /* 关档：线通长、齿轮 0 输出 */

/* 15.1 报纸版面「版块线」：真 <hr> 落在 .np-issue 的 grid 流里会多吃一格 gap（--space-5）→
   负 margin 把该格压到 0 高、并把紧随其后的块的 margin-top 减掉一格 gap，净距与原值一致（实测 Δ = 0）。 */
.np-issue > .np-sep { margin-block: calc(var(--np-sep-h) / -2 - var(--space-5) / 2); }
.np-issue > .np-sep + *        { margin-block-start: calc(var(--space-5) * -1); }
.np-issue > .np-sep + .np-pager  { margin-block-start: 0; }
.np-issue > .np-sep + .np-digest { margin-block-start: calc(var(--space-4) - var(--space-5)); }

@media (max-width: 767px) { :root { --np-sep-gap: 8px; } }   /* inset 14px，齿轮仍 12px */

@media (forced-colors: active) {
  .np-archive__sep::after,
  .np-sep::after { display: none; }
  .np-archive__sep::before,
  .np-sep::before { background-image: none; background-color: CanvasText; }
}

/* 15.2 打印：结构线留、纹样关（线 100% 黑通长，齿轮 0 输出） */
@media print {
  :root { --np-sep-line: #000; --np-sep-inset: 0; }
  .np-archive__sep::after,
  .np-sep::after { display: none !important; }
  .np-archive__sep::before,
  .np-sep::before { background-image: none !important; background-color: #000; }
  .np-archive__sep,
  .np-sep { margin-block: 0; height: 1px; }
  /* P5.4 修回归：上一句把「打印端归档条目间距」从 52px 压到 1px。归档族在此恢复条目间距——
     黑线居中于原间距（25.5+1+25.5＝52px，与原版一致）；报纸 .np-sep 走 grid gap、无此问题，不补。
     ※ 屏幕端边距 calc(--space-5 − --np-sep-h/2)＝19.5 是配 12px 盒的；打印端盒高已收成 1px，
       沿用 19.5 只剩 40px，达不到验收的 52px，故取 --space-5（＝25.5）→ 实测 52px。 */
  .np-archive__sep { margin-block: var(--space-5); }
  .np-issue > .np-sep { margin-block: 0; }
  .np-issue > .np-sep + * { margin-block-start: 0; }
  .np-sep--pager { display: none; }   /* .np-pager 打印端本就不输出（print.css §1），其版块线一并撤掉 */
}

/* ==========================================================================
   16 P9.1 条目图（图文版式）· 只追加

   取图规则见 inc/data.php 的 np_item_image()：正文首图 → 附件首张 → 无。
   无图时 np_render_item() **不输出 <figure>**，本节规则全部不生效（结构与 P9.1 前一致）。

   版式（业主 P9.1 三条口径，实测栏宽 1440 视口）：
     · 宽位 = 头条位 .np-item--lead（.np-lead__main，实测 ≈726px）：
       文字整块在左、图在右，图**明显小于**文字块（34% / ≤280px）—— 填实「太空」那处。
     · 窄位 = 其余一切有图条目（分栏 .np-columns .np-item ≈349px、次条位
       .np-lead__side ≈363px）：这个宽硬套左右会挤成窄条 → **统一「文上图下小图」**，
       图上限 18rem、不超过栏宽、居中（不拉满）。
     · 竖图/方图：用 max-height（42vh / ≤320px）+ object-fit:contain 压高度，
       **等比、不裁切**（业主画作不可裁）；宽度不足时按比例回缩，不产生空框。
   ========================================================================== */
.np-item__text { min-width: 0; }   /* flex/grid 子项防溢出：长标题可断行 */

.np-figure { margin: 0; }
.np-figure__img {
  display: block;
  width: 100%;
  height: auto;                 /* 等比 */
  max-width: 100%;
  max-height: min(42vh, 320px);
  object-fit: contain;          /* 兜底：任何情况下不裁切、不变形 */
  object-position: center;
}
.np-figure > .np-caption { margin-top: var(--space-2); }

/* 窄位（含移动端一切）：文上图下小图 */
.np-item--hasimg > .np-figure {
  margin-top: var(--space-3);
  max-width: min(100%, 18rem);  /* 「图片缩小」：不拉满栏宽 */
  margin-inline: auto;          /* 图块居中 */
}

/* 宽位（头条）· 桌面：文字整块在左、图在右 */
@media (min-width: 768px) {
  .np-item--lead.np-item--hasimg {
    display: flex;
    align-items: flex-start;
    gap: var(--space-5);
  }
  .np-item--lead.np-item--hasimg > .np-item__text { flex: 1 1 auto; min-width: 0; }
  .np-item--lead.np-item--hasimg > .np-figure {
    flex: 0 0 auto;               /* 图不参与拉伸 */
    width: 34%;                   /* 明显小于文字块，非半壁对半 */
    max-width: 280px;
    margin-top: 0;
    margin-inline: 0;             /* 桌面右列：靠右轨对齐，不居中 */
  }
  /* 图占右列后正文轨道变窄，双栏会挤 → 收成单栏（阅读优先） */
  .np-item--lead.np-item--hasimg .np-body.np-columns { column-count: 1; }
}

/* ==========================================================================
   17 P9.2 首页接真实文章后的版式降级（只追加）

   首页条目改为 Typecho 真实文章后，条数不再恒为 4，会出现少于 4 条的页：
     · 本页只有 1 条 → 头条区没有「次条」；若仍套 2fr/1fr 网格，右侧会空一整列
       （破洞）→ .np-lead--solo 让头条横贯整宽；
     · 分栏位不足 3 条 → 固定 3 栏会把条目挤在左侧、右边空栏（破洞）
       → .np-columns--solo / --duo 按实际条数收栏。
   只新增类，不动 §16 图文版式与既有 .np-lead / .np-columns 规则。
   ========================================================================== */
@media (min-width: 768px) {
  .np-lead--solo { grid-template-columns: minmax(0, 1fr); }
}
.np-columns--solo { column-count: 1; }
.np-columns--duo { column-count: 2; }

/* 真实文章的条目标题带链接（np_render_item() 有 permalink 时输出 <a>）：
   标题保持「大标题」观感，不变成链接蓝。 */
.np-title a { color: inherit; text-decoration: none; }
.np-title a:hover { color: var(--link-hover); text-decoration: underline; }

/* ==========================================================================
   18 P9.4 条目「图片位置」· Typecho 自定义字段 np_img_pos · 只追加

   字段（后台 → 写文章 → 自定义字段；英文 key，本站实测 Typecho 的字段名规则为
   ^[_a-zA-Z][_a-zA-Z0-9]*$（admin/custom-fields.php:22/48）→ **不能带连字符**，故用下划线）：
     np_img_pos = right | below | none     （大小写 / 中英文宽容；缺省 = right）
     · right（默认）：§16 现状不变（宽位文左图右 / 窄位文上图下）；
     · below        ：图框置于文字块正下方（不再走右栏 flex）；图不给满宽、左对齐（≤28rem）；
     · none         ：不输出 <figure>（DOM 里连 <figure> 都没有）→ 文字块加 .np-item--noimg。
   解析见 inc/data.php 的 np_item_img_pos()；类名由 inc/newspaper.php 的 np_render_item() 施加。
   本节只**新增** .np-item--img-below / .np-item--noimg；§16 与既有规则一行未改。
   ========================================================================== */

/* ---- 18.1 below：图在文字正下方（覆盖 §16 宽位的「文左图右」flex） ---- */
@media (min-width: 768px) {
  .np-item--lead.np-item--img-below.np-item--hasimg { display: block; }
  .np-item--lead.np-item--img-below.np-item--hasimg > .np-figure {
    flex: none;                    /* 退出 flex（父已 block，双保险） */
    width: auto;                   /* 覆盖 §16 的 width:34% */
    max-width: min(100%, 28rem);   /* 「图片缩小」：图不给满宽，上限 448px */
    margin-top: var(--space-3);    /* 与上方文字留一档间距 */
    margin-inline: 0;              /* 左对齐（不居中） */
  }
}

/* ---- 18.2 none（无图）：仅放大「宽位（头条）」的字号，让文字铺满整宽、不再显空 ---- */
/* 只作用于 .np-item--lead.np-item--noimg（宽位 + 无图）；窄位无图条目与移动端**不动**。 */
@media (min-width: 768px) {
  /* none 的无图头条：正文放弃「头条双栏」（一条短稿分双栏会把字挤在左半 → 更空），收成单栏。 */
  .np-item--lead.np-item--noimg .np-body.np-columns { column-count: 1; }
  .np-item--lead.np-item--noimg .np-title {
    font-size: clamp(2.2rem, 1.1rem + 4.7vw, 4.6rem);
    line-height: 1.14;
  }
  .np-item--lead.np-item--noimg .np-deck {
    font-size: clamp(1.1rem, 0.9rem + 1vw, 1.5rem);
    line-height: 1.9;
  }
  .np-item--lead.np-item--noimg .np-body {
    font-size: clamp(1.05rem, 0.8rem + 1.15vw, 1.5rem);
    line-height: 2;
  }
}
