/* ============================================================
   FJOJO 字体系统 v1.0 · 2026-11-05
   依据 style skill「第一层 字体库」：中文 Noto Serif SC，西文 EB Garamond，
   数字与标签用衬线＋等宽数字；中文正文行距 1.8，西文 1.6。
   本文件在 atlas / folio / nocturne 之后加载，只改字体与排版细节，
   不动颜色、布局、间距。设计切换（四个皮肤）仍然有效。
   ============================================================ */

/* ---------- 1 · 字体令牌：四个皮肤共用一套 ---------- */
:root,
html[data-design],
html[data-design="atlas"],
html[data-design="folio"],
html[data-design="nocturne"],
html[data-design] body,
html[data-design] body:is(.fj-shared, .fj-app),
body,
body.fj-shared,
body.fj-app{
  /* 西文：EB Garamond（自托管，家族名 Folio Garamond）；缺字再往下掉中文 */
  --fj-lat: "EB Garamond", "Folio Garamond", Garamond, Georgia, "Times New Roman";
  /* 中文：Noto Serif SC 可变字体（自托管分片）；系统宋体只作最后兜底 */
  --fj-cn: "Noto Serif SC Variable", "Folio SC", "Source Han Serif SC", "Songti SC", "STSong", "SimSun";
  --fj-serif: var(--fj-lat), var(--fj-cn), serif;
  /* 展示层：西文大标题用 Cormorant Garamond；全大写小题、编号用 Cinzel。
     两者都只在拉丁范围内生效，中文照旧落到 Noto Serif SC。 */
  --fj-display: "Cormorant Garamond", var(--fj-lat), var(--fj-cn), serif;
  --fj-caps: "Cinzel", var(--fj-lat), var(--fj-cn), serif;

  --font-ui: var(--fj-serif);
  --font: var(--fj-serif);
  --font-display: var(--fj-display);
  --font-serif: var(--fj-serif);
  --font-sans-cn: var(--fj-serif);
  --font-serif-cn: var(--fj-serif);
  --font-mono: var(--fj-serif);
  --font-ge: var(--fj-serif);
  --font-kai: var(--fj-serif);
  --font-biaosong: var(--fj-serif);
  --font-main: var(--fj-serif);
  --font-lat: var(--fj-lat);
  --font-cn: var(--fj-cn);
}

/* ---------- 2 · 基础排版 ---------- */
html{
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  font-kerning: normal;
  font-optical-sizing: auto;
  /* 日期、数字、统计一律等宽，纵向能对齐 */
  font-variant-numeric: tabular-nums;
  /* 没有的字重不要伪粗：EB Garamond 最高 600，叫 700 就落到 600，
     中英文视觉重量才对得上（style skill 中西混排第 1 条） */
  font-synthesis-weight: none;
}

body{ font-family: var(--font-ui); }

/* 中文正文行距 1.8；各设计自己写的行高（选择器更具体）照旧生效 */
:where(p, li, dd, dt, blockquote, figcaption){ line-height: 1.8; }

/* 大标题换行更均衡，正文避免孤字 */
:where(h1, h2, h3, h4){ text-wrap: balance; }
:where(p){ text-wrap: pretty; }

/* ---------- 3 · 全大写小题与编号：Cinzel 衬线＋宽字距 ---------- */
/* 用类选择器而不是 :where()：这些元素在皮肤里由 font 简写指定过字体，
   :where() 零特异性压不住，必须同权重靠加载顺序取胜。 */
.noc-kicker, .eyebrow, .section-tag, .dateline, .exhibition-label{
  font-family: var(--fj-caps);
  letter-spacing: .12em;
}

/* ---------- 4 · 明示保留的风格例外 ----------
   1. yuliao/shizheng 报纸风：报头与栏目标题用粗黑无衬线，是「报纸风」风格本体
      （style skill 报纸风条目：标题粗黑大号），不随全站衬线化改动。
   2. 终端代码风页面按需保留等宽字体。
   3. 各设计里写死的 font:…var(--font-*)  均自动继承上面的新栈。 */
