/*
 * 设计令牌 —— 整套视觉气质的唯一来源。
 * 方案 B「当代艺文机构」:纯黑 + 纯白 + 单一信号色金黄。
 *
 * ## 色板不是我配的,是从他们自己的品牌素材里取的
 * 对 logo / banner / 播客封面 / 动态 logo 做像素聚类,结果:
 *   - 主体 89~100% 是 **纯黑 #000000** 与 **纯白**(全部素材都是单色)
 *   - 唯一的彩色是动态 logo 里的 **#f2b000**(H44 S100 V95)—— 就是海报上那个黄点
 * 所以这套黑白 + 金黄不是"设计风格选择",而是**把他们本来就有、却只存在于图片里的
 * 视觉语言搬进网站**。原先网站外壳是通用浅灰白,和海报像两个机构。
 *
 * ## 🚨 金黄的用法铁律(实测对比度,别踩)
 *   黄字 on 白底 = **1.91:1** → 连非文字的 3:1 都不到,**绝不可当白底上的文字或有意义图形**
 *   黑字 on 黄底 = **10.99:1** ✅ 这才是正确用法(与海报一致:黄块 + 黑字)
 *   黄字 on 黑底 = **10.99:1** ✅ 深色块上可用
 * → 金黄永远是**填充/底色/装饰条**,不是前景色。改色前先算,别凭眼睛。
 *
 * ## 与方案 A 的差别
 * A 是编辑部式的克制(灰阶 + 发丝线 + 大留白);B 靠**极端对比**建立气场:
 * 纯黑重线、直角、黑块反白、金黄作唯一信号。所以这里 radius 全 0、边框加粗。
 *
 * ## 仍在解决的生产站结构问题
 *   1 全站居中 + 等权重 → 无层级        → 字号阶梯 + --sp-*
 *   2 卡片图比例不一 → 网格发毛          → --card-media-ratio
 *   3 无分类线索,播客/讲座/观影靠读标题  → --tag-*
 *   4 文章页无日期/分类/作者              → 模板已补
 */
:root {
  /* —— 表面:高对比,不用灰阶过渡 —— */
  --paper:        #ffffff;   /* 页面底:纯白,海报感 */
  --surface:      #ffffff;   /* 内容卡 */
  --inset:        #f4f2ed;   /* 卡内再嵌一层(极轻暖灰,唯一的"层次"手段) */
  --ink-block:    #000000;   /* 反白块:黑底白字,用于强调页头/区块 */

  /* —— 线:方案 B 用重线而非发丝线 —— */
  --line:         #000000;
  --line-w:       1px;       /* 常规分隔 */
  --line-w-bold:  3px;       /* 结构性分隔(页头/页脚/区块边界) */
  --line-soft:    rgba(0, 0, 0, 0.14);  /* 卡片内部次级分隔 */

  /* —— 墨色阶梯(全部实测 ≥4.5:1 on 白) —— */
  --ink:          #000000;   /* 标题/正文  21.00:1 */
  --ink-muted:    #45403a;   /* 次要文字   10.26:1 */
  --ink-faint:    #6b645c;   /* 元信息      5.83:1 */
  --on-dark:      #ffffff;   /* 黑块上的文字 21.00:1 */

  /* —— 唯一信号色:金黄。只作填充,见上面铁律 —— */
  --signal:       #f2b000;
  --signal-deep:  #c08800;   /* 白底 3.11:1,用于列表标记等非文字图形 */
  --on-signal:    #000000;   /* 压在黄底上的文字,10.99:1 */

  /* —— 分类色标:统一「黑块反白」,当前分类/强调项用黄块黑字 ——
        不给每个分类配不同彩色:那会破坏黑白+单一信号色的纪律,
        也会因为运营新建分类而失控。区分靠文字本身,强调靠金黄。 */
  --tag-bg:            #000000;
  --tag-fg:            #ffffff;
  --tag-bg-featured:   #f2b000;
  --tag-fg-featured:   #000000;

  /* —— 字号阶梯:方案 B 拉得更狠,靠尺寸差建立气场 —— */
  --fs-hero:      clamp(34px, 6vw, 68px);
  --fs-h1:        clamp(27px, 3.6vw, 42px);
  --fs-h2:        clamp(21px, 2.4vw, 28px);
  --fs-card:      18px;
  --fs-body:      17px;
  --fs-meta:      13px;
  --fs-micro:     11px;

  --lh-tight:     1.06;      /* 大标题贴紧,海报感 */
  --lh-heading:   1.22;
  --lh-body:      1.8;       /* CJK 正文需要大行高 */

  /* —— 字距:近似海报那种压扁/紧排的展示字 ——
        没有外链字体(check-theme.sh 禁止:生产站依赖 Google Fonts 是已知脆弱点),
        所以用「重字重 + 负字距」在系统 CJK 字体上逼近压缩感。 */
  --ls-display:   -0.02em;
  --ls-label:     0.14em;    /* 小标签反过来放开,拉出秩序感 */

  /* —— 间距 —— */
  --sp-1: 4px;  --sp-2: 8px;  --sp-3: 12px; --sp-4: 16px;
  --sp-5: 24px; --sp-6: 32px; --sp-7: 48px; --sp-8: 72px; --sp-9: 112px;

  /* —— 直角:方案 B 不用圆角 —— */
  --radius-lg: 0;
  --radius-md: 0;
  --radius-sm: 0;

  /* —— 版面 —— */
  --measure:      66ch;
  --container:    1280px;
  --card-media-ratio: 3 / 2;   /* 统一卡片图比例,解决生产站网格发毛 */

  /* —— 深色块上的白色叠加 ——
        这套设计里黑块很多(报头/页脚/抽屉/下拉/pullquote),块上需要几档比纯白弱的层级。
        以前这些是散在 theme.css 里的 9 处硬编码 rgba,而且值是随手写的:
        0.86 / 0.82 / 0.7 / 0.6 / 0.45 / 0.28 / 0.22 —— 四个「次要文字」的透明度彼此
        只差几个百分点,不是设计决策,是四次各写各的。收成下面四档。
        (对比度都在黑底上算过:0.82 ≈ 11:1、0.62 ≈ 7.3:1,都远超 4.5:1。) */
  --on-dark-muted:        rgba(255, 255, 255, 0.82);  /* 黑块上的次要文字 */
  --on-dark-faint:        rgba(255, 255, 255, 0.62);  /* 更弱:占位符、hover 里的计数 */
  --line-on-dark:         rgba(255, 255, 255, 0.28);  /* 黑块上的分隔线 */
  --field-border-on-dark: rgba(255, 255, 255, 0.45);  /* 黑块上的输入框边框 */

  /* —— 打印专用:纸永远是白的,墨永远是黑的 ——
        刻意**不复用** --paper / --ink:那两个跟着调性走,
        将来若换成深色主题,打印会糊成一片实心黑。打印这两条是硬约束,不参与换肤。 */
  --print-bg:  #ffffff;
  --print-ink: #000000;

  /* —— 字体:全部系统栈,零外链(见 check-theme.sh 门禁) —— */
  /* 栈里必须同时列出三套平台的**真实家族名**,否则会掉进 fontconfig 的兜底。
     实测(CDP 的 CSS.getPlatformFontsForNode):原先的栈在 Linux 上一个都匹配不上
     —— PingFang/Hiragino 是 macOS 的、Microsoft YaHei 是 Windows 的,
     而 "Noto Sans SC" 这个名字**并不存在**(Debian/Ubuntu 的 fonts-noto-cjk
     提供的是 "Noto Sans CJK SC"、Adobe 那份叫 "Source Han Sans SC")。
     结果中文落到 **Noto Sans CJK JP**,用日文字形渲染简体汉字(「直」「骨」等写法不同),
     而且 CI runner 的兜底顺序未必与本机一致 —— 视觉基线会两边对不上。 */
  --font-sans: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei",
               "Noto Sans SC", "Noto Sans CJK SC", "Source Han Sans SC",
               system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif;
  --font-serif: "Songti SC", "STSong",
                "Noto Serif SC", "Noto Serif CJK SC", "Source Han Serif SC",
                Georgia, serif;
  /* 展示字用无衬线重字重 —— 海报那套是几何无衬线,不是宋体 */
  --font-display: var(--font-sans);
  /* 注意实际能拿到多重:中文字族普遍没有 >700 的字面 ——
     PingFang SC 最重只到 Semibold(600)、Microsoft YaHei 最重 Bold(700)、
     系统 Noto CJK 通常只有 Regular+Bold。所以 800 在**绝大多数读者设备上等于 Bold**,
     只有装了 fonts-noto-cjk-extra 的少数 Linux 桌面才会落到 Black(900)。
     写 800 是「有多重就用多重」的渐进增强,不是保证能拿到 800。
     (视觉基线因此锁在无 -extra 的容器环境 —— 那才是读者看到的。) */
  --fw-display: 800;
}
