/* ==========================================================================
   配色方案
   --------------------------------------------------------------------------
   和 style.css 里的「版式覆写」是同一套机制的第二个入口：
   一套方案 = 一组令牌值，挂在 <body> 上。
   由 inc/customize.php（AISH_Customize::body_class）按后台的选择加类名。

   ⚠ 加类名的那一侧做的是**白名单校验**，不是拼字符串。
     这个文件里出现过的后缀才可能被输出；后台存了个脏值也不会
     变成 body 上的任意类名。

   ─────────────────────────────────────────────────────────────────────
   为什么选择器是 body.aish-scheme-x 而不是 .aish-scheme-x
   ─────────────────────────────────────────────────────────────────────
   .layout-blog 那类版式覆写的权重是 (0,1,0)，和单个类选择器**相等**，
   谁生效完全取决于谁在文件里靠后。那是"动一下加载顺序就变天"的约定，
   而加载顺序被 enqueue 的依赖数组管着，改它的时候没人会想到配色。

   body.aish-scheme-x 是 (0,1,1)，稳定压过版式层，与文件顺序无关。

   ─────────────────────────────────────────────────────────────────────
   方案只动「面 / 墨 / 强调」，不动「形」
   ─────────────────────────────────────────────────────────────────────
   --shell / --read-measure / --gap-* / --radius 是版式的语言，
   换配色不该顺带把版式也换掉——那些令牌留在各版式自己的作用域里。

   ─────────────────────────────────────────────────────────────────────
   每一档的对比度都是量出来的，不是估的
   ─────────────────────────────────────────────────────────────────────
   规则和 style.css 一致：正文级文字 ≥ 4.5:1（WCAG AA），
   --ink-3 这种次要信息在它所在的**最浅的那个底**上也要过 4.5。

   工具有两个，一静一动：
     · _preview/colors.html —— 浏览器里打开，直接读本文件的 CSSOM，
       自己算、自己把不达标的色卡标红。改完色值肉眼过一眼用它。
     · _deliver/check-contrast.php —— 命令行，能进 CI 的那一个。
       它从本文件和 style.css 里读令牌，按 CSS 权重把三层作用域
       （:root / .layout-* / body.aish-*）叠成 90 种状态，
       每一档再套一遍硬指标表，逐条算。
       （组数不写在这里——它随指标条数变。第 1 节那行打的是实际数。）

   下面这些数字**是 check-contrast.php 打出来的**，不是手算的
   （第 4 节，直接复制粘贴过来）。它每次还会重算一遍——
   数字对不上就 FAIL，所以这张表不会像上一张那样悄悄过期。

   上一张表就是这么过期的：它上面写着"橙 4.67"，那是照**白底**量的，
   而橙档实际上要压在浅灰页面底和自家浅强调底上。两格都不在表里。

     --ink-3 三档面（默认版式，不选强调色）

       底色        压内容面   压页面底   压次级面
       默认底        5.05       5.05       4.70
       纯白          5.05       5.05       4.70
       浅灰          5.43       4.58       4.96
       暖白          6.53       5.99       5.69
       深色          6.25       6.80       5.66

     --ink 和 --ink-2 余量很大，不逐个记：实测最低的一格是
     暖白的 ink-2/次级面 6.53，离门槛还有 2 个点。
     真正贴着线走的只有 ink-3 这一列，所以盯它就够了。

     上面这张是"默认版式 × 五档底色"。.layout-blog 和 .layout-read
     各自**另挑了一套墨**（它们换了页面底），那一组在第 4 节的
     第二张表里按版式单独打——blog.css / single.css 的注释引的就是它。

     每档强调色（默认版式 + 默认底色）

       强调色    白字/实底  实底/白面  实底/页面底  实底/浅底  深档/浅底
       朱红        5.69       5.69       5.69        5.04      6.55
       橙          6.34       6.34       6.34        5.59      7.01
       墨蓝       11.57      11.57      11.57       10.29     13.13
       青          6.38       6.38       6.38        5.54      7.25
       紫          7.72       7.72       7.72        6.65      8.34

     （"实底/页面底"和"实底/白面"这两列在默认底色下是同一个数——
       :root 的 --bg 就是白。留着两列是因为选了别的底色方案之后它们
       会分开，而那时候这个表看的就不是这几行了，是第 1 节那一整张矩阵。）

   ⚠ 这一版**没有例外**：整张矩阵全过。上一版里那一批 4.33 / 3.65
     已经清掉了——修法不是改品牌色，是把 --accent 被派的两个差事拆开：
     品牌色继续当描边/浅底/图形（按 3:1 判，4.33 够），
     实底压字和当文字色改用 --accent-btn（按 4.5 判）。
     见 style.css :root 那段和下面"四件套"那一段。

   ⚠ 深色底那一组（下面 5 档 .aish-scheme-ink.aish-accent-*）也在这张
     矩阵里，同样全过。上面这张表只列了浅底那一组。

   ⚠ 入口卡色相（--tone-*）那张表**不在这里**，在 style.css 的 :root
     那一块：八对色相里浅色那套定义在那儿，这个文件只补深色底那一套
     （见下面 body.aish-scheme-ink）。两处加起来才是一整套，
     check-contrast.php 第 5 节把两套都打了。

   ⚠ 深色方案是最不成熟的一档。全站组件都是按浅底画的，
     令牌虽然全，但图片白边、投影、第三方嵌入这些不受令牌控制的地方
     在深底上会露出来。选它之前先整体翻一遍。
   ========================================================================== */

/* --------------------------------------------------------------------------
   一、底色方案（面 + 墨 + 线，成套给）
   -------------------------------------------------------------------------- */

/* —— 纯白 —— */
body.aish-scheme-white {
  --bg: #ffffff;
  --surface: #ffffff;
  --surface-2: #f5f7f8;

  --ink: #1b2634;
  --ink-2: #5c6878;
  /* 必须和 :root 那个值保持一致。
     这里是显式重写，不是继承——所以 :root 调深之后这里不会跟着动，
     漏改一处就会留下一档"看着是同一个白底、实际比别处浅一档"的墨。
     上一版就是这么漏的：#6b7280 压 --surface-2 只有 4.499:1。 */
  --ink-3: #696f7a;

  --line: #e4e8ee;
  --line-2: #d3dadf;
}

/* —— 浅灰 ——
   博客版式原本就是这一套。选中它 = 把博客的底色推广到全站。 */
body.aish-scheme-mist {
  --bg: #e9ecee;
  --surface: #ffffff;
  --surface-2: #f2f5f6;

  --ink: #13212c;
  --ink-2: #41525f;
  /* 必须比 :root 那一档深，不能继承：
     :root 的 #696f7a 压在 #e9ecee 上只有 4.21:1，而这一档方案的
     页面底就是 #e9ecee，站头副标题、时间戳、面包屑全在这一层上。
     用同一档墨色套所有浅底，是这里最容易犯的错——
     在纯白底上量着合格，换成灰底就整体掉下去。

     #5f6b79：页面底 4.58:1，白面 5.43:1，--surface-2 4.96:1。
     （.layout-blog 的页面底和这里一样，它自己也挑了一个值，
       见 style.css；两处不必相同，但都必须过自己那个底。） */
  --ink-3: #5f6b79;

  --line: #e2e6e8;
  --line-2: #d3dadf;
}

/* —— 暖白 —— */
body.aish-scheme-warm {
  --bg: #f7f5f0;
  --surface: #ffffff;
  --surface-2: #f2efe8;

  --ink: #1f1c17;
  /* 偏暖的次级墨。这套方案的线和面都不带蓝，用 :root 那个偏蓝的
     #5c6878 会在一页里混出两种灰，看得出来。 */
  --ink-2: #5a5449;
  --ink-3: #635d51;

  --line: #e9e5dc;
  --line-2: #d8d3c8;
}

/* —— 深色 ——
   整套反转，不是只把 --bg 调黑。只改 --bg 的话墨色还是深的，
   结果是深灰底压深灰字——页面能打开，但几乎读不了。 */
body.aish-scheme-ink {
  color-scheme: dark;

  --bg: #14181d;
  --surface: #1b2027;
  --surface-2: #222831;

  --ink: #eef1f4;
  --ink-2: #b6bfc9;
  --ink-3: #97a1ac;

  --line: #2a313a;
  --line-2: #3a434e;

  /* —— 实底上的字色，必须跟着翻面 ——
     这是深色方案最容易漏的一处，漏了也不会有人报：
     全站九个地方（搜索按钮、主按钮、当前页码、阅读页的页码和
     标签 hover、评论提交、分类徽标）都是「--accent 当底 + 白字」。
     深色方案里 --accent 已经换成了浅色（下面那组），
     白字压上去只剩 1.8～2.6:1——按钮上的字几乎看不见，
     而那恰好是全站点击率最高的那几个元素。

     浅色方案里这个值是白，深色方案里必须是深色。所以那九处
     写的都是 var(--on-accent)，不是 #fff。 */
  --on-accent: #14181d;

  /* —— 强调色也必须有默认值 ——
     后台那两个下拉框是**独立**的：完全可以只把底色选成深色，
     强调色留在「跟随版式默认」。那时候 body 上只有 aish-scheme-ink，
     下面那组 .aish-scheme-ink.aish-accent-x 一条都不命中，
     --accent / --accent-soft 就照旧继承 :root 或版式那一套，
     也就是**浅底专用的那套**。

     后果不是"配色不搭"，是一块浅粉底（--accent-soft #fdeeeb）
     压在深色页面上，而这套方案的 --ink 是浅色的：
     两者对比度 1.00:1，落在上面的字直接消失。
     而 ::selection、.aib-badge、.read-tags 都用这一对。

     所以这里补上自带的默认三件套——就是朱红那一档的深色变体，
     和 body.aish-scheme-ink.aish-accent-vermilion 逐字相同：
     单独选"深色"等于"深色 + 品牌色"。 */
  --accent: #ff7a63;
  --accent-dk: #ff9a86;
  --accent-soft: #3a2019;
  /* 这一档不涉及「亮朱红压不住」的问题：浅色方案里 --accent 太亮是缺陷，
     深色方案里 --accent 本来就该亮。所以实底/文字档 = 品牌档，逐字相同。
     仍然显式写出，理由同 .layout-blog。 */
  --accent-btn: #ff7a63;

  /* —— 入口卡色相也必须换 ——
     style.css 的 :root 里那八对 --tone-* 是按**浅底**挑的：
     够深，才压得住白面。搬到深底上要求正好反过来——
     --tone-slate #4e6480 压在 #1b2027 上只有 2.4:1，卡片顶上
     那道 3px 描边直接看不见。同一个色值不可能两头都满足，
     所以这里另给一组，和强调色是同一个道理。

     第三条指标在这一档最紧：--ink-2 在这里是**浅**的（#b6bfc9），
     所以 -soft 必须够深，#b6bfc9 压上去才有 4.5:1。上面那几个
     -soft 看着比"浅色底"那个词该有的样子暗，就是这个原因。 */
  --tone-blue:   #7fb0ff;  --tone-blue-soft:   #1b2740;
  --tone-cyan:   #5fd0e8;  --tone-cyan-soft:   #133037;
  --tone-indigo: #a99cf5;  --tone-indigo-soft: #1f1f42;
  --tone-violet: #cf9aee;  --tone-violet-soft: #2a1c3d;
  --tone-amber:  #e8b04a;  --tone-amber-soft:  #33260f;
  --tone-rose:   #f08fa8;  --tone-rose-soft:   #3a1d27;
  --tone-green:  #6fd39b;  --tone-green-soft:  #12301f;
  --tone-slate:  #a8bcd0;  --tone-slate-soft:  #212a33;

  /* 投影也要换。默认那两条是 rgba(27,38,52,…)——深底上的深投影
     等于没有投影，浮层会看起来"糊"在页面上。 */
  --shadow-1: 0 1px 2px rgba(0, 0, 0, .5), 0 4px 12px -6px rgba(0, 0, 0, .6);
  --shadow-2: 0 2px 4px rgba(0, 0, 0, .55), 0 14px 32px -12px rgba(0, 0, 0, .7);

  /* 遮罩同理，而且这里更容易写错。
     :root 那个值是 rgba(27,38,52,.45)——**深墨色**压一层，
     它成立的前提是底下那一页是白的。深色方案的页面底是 #14181d，
     照抄一个"深墨色"上去等于什么都没压：把同一个深度再压一遍，
     合成之后还是 #14181d，遮罩和背景是同一个颜色。

     这一档给的是**纯黑**，不是深墨（和上面两条投影同一个取法）。
     纯黑压在 #14181d 上才真的把页面推下去，而对话框自己那层
     #1b2027 没变——两边的明度差因此变大，浮层才浮得起来。

     0.62 比浅色方案那 0.45 重：深底上的明度差本来就小，
     按浅色那个力度压，差值还是看不出来。 */
  --scrim: rgba(0, 0, 0, .62);
}

/* --------------------------------------------------------------------------
   二、强调色
   --------------------------------------------------------------------------
   四件套必须一起给：
     --accent       品牌色：描边、浅底、装饰条、插图
     --accent-btn   实底（上面压字）和当文字色用的一档
     --accent-dk    hover / 按下，必须比 --accent-btn 更深
     --accent-soft  浅色底（选中态、标签底）
   只给 --accent 的话，hover 和浅底会停在默认那一套色上——
   鼠标一悬停颜色就跳到另一个色系，看起来像样式坏了。

   --accent-btn 为什么每一档都要写：它定义在 :root 和版式作用域里，
   不写就继承到**朱红那一档的值**。橙版式的按钮长成砖红，
   没有报错、没有警告，只有凑近看才发现。下面 check-contrast.php
   会逐块核对"凡定义 --accent 的块必须同时定义 --accent-btn"。
   -------------------------------------------------------------------------- */

/* 朱红那一档：品牌亮朱红压不住字，实底/文字档退到原来 hover 那一档
   #bf3220，hover 再顺次下移到 #a02a19。三档深浅：#de3f27 > #bf3220 > #a02a19。 */
body.aish-accent-vermilion { --accent: #de3f27; --accent-btn: #bf3220; --accent-dk: #a02a19; --accent-soft: #fdeeeb; }

/* 橙那一档同理，只是原因不同：它的 #c94b06 在**白底**上是够的（4.67），
   但"当链接文字"用的底不是白底——浅灰方案是 #e9ecee，暖白是 #f7f5f0。
   #c94b06 压在它们上面只有 3.94 / 4.29，压在自家浅强调底 #fdeee4 上
   只有 4.12。这是照白底挑色、却把色用在非白底上的必然结果，
   和朱红是同一个病的两种症状。

   走法也和朱红一样：--accent-btn 接管原来 --accent-dk 的 #a83c04，
   --accent-dk 顺次下移到 #8f3303。品牌色 #c94b06 不动，仍然给
   描边、浅底、入口卡图标那些按 3:1 判的位置。 */
body.aish-accent-orange    { --accent: #c94b06; --accent-btn: #a83c04; --accent-dk: #8f3303; --accent-soft: #fdeee4; }
body.aish-accent-navy      { --accent: #1e3a5c; --accent-btn: #1e3a5c; --accent-dk: #16293f; --accent-soft: #eef2f7; }
body.aish-accent-teal      { --accent: #0b6b62; --accent-btn: #0b6b62; --accent-dk: #08584f; --accent-soft: #e4f2f0; }
body.aish-accent-violet    { --accent: #5b3fa8; --accent-btn: #5b3fa8; --accent-dk: #4a3390; --accent-soft: #f0ecfa; }

/* —— 深色底上的强调色 ——
   上面那组是按浅底选的：深到能在白底上压得住 4.5:1。
   深底上要求正好相反——要**浅**，否则深蓝压深灰底直接看不见。
   同一个色值不可能两头都满足，所以这里另给一组。

   只有「深色底 + 某个强调色」同时选中时才会命中，
   两条类选择器叠起来权重 (0,2,1)，压过上面单独那一层。 */
/* 这五档的 --accent-btn 一律 = --accent：
   深底上的强调色是浅的，「浅底压深字」和「浅色当文字」两个位置
   本来就都够（--on-accent 在这一层是 #14181d）。 */
body.aish-scheme-ink.aish-accent-vermilion { --accent: #ff7a63; --accent-btn: #ff7a63; --accent-dk: #ff9a86; --accent-soft: #3a2019; }
body.aish-scheme-ink.aish-accent-orange    { --accent: #ff9a4d; --accent-btn: #ff9a4d; --accent-dk: #ffb37a; --accent-soft: #3a2413; }
body.aish-scheme-ink.aish-accent-navy      { --accent: #8fb8e8; --accent-btn: #8fb8e8; --accent-dk: #aacbf0; --accent-soft: #1b2637; }
body.aish-scheme-ink.aish-accent-teal      { --accent: #5fd3c6; --accent-btn: #5fd3c6; --accent-dk: #86e0d6; --accent-soft: #16302e; }
body.aish-scheme-ink.aish-accent-violet    { --accent: #b9a3f0; --accent-btn: #b9a3f0; --accent-dk: #cdbcf6; --accent-soft: #261f3d; }
