/* ===== 机构配色主题（2026-10-23）=====
 * 机构在后台三选一，存 homepage.theme，由 /api/assess/org-home 下发；
 * 前端由 applyTheme() 写到 <html data-org-theme="…"> 与 <body data-org-theme="…">。
 *
 * 使用方：website/org-home.html（真实机构页）、website/org-demo.html（官方演示页）。
 * 两页共用本文件 —— **不要**再把主题变量抄回各自的内联 <style> 里：
 * 抄一份就有两个真相，改了 A 忘了 B 就是「后台能选、某个页面不生效」。
 *
 * ⚠ 引用位置：本文件通过 <link> 引入，而设计系统是**内联 <style> 且紧贴 </head>**
 *   （scripts/sync_design_system.js 强制这个布局，勿改）。所以本文件的规则**永远先于**
 *   设计块到达，同特异性时会被设计块反超。
 *   ⇒ 因此本文件所有选择器都刻意抬到 (0,1,1) 或更高，靠**特异性**取胜，不靠位置：
 *       设计系统 `:root{…}`                      (0,1,0)
 *       本文件   `html:root,html[data-org-theme]` (0,1,1)  ✅ 赢
 *       设计系统 `:is([data-ciku-ui="public"],…)` (0,1,0)（命中 <body>）
 *       本文件   `body[data-org-theme=x]`          (0,1,1)  ✅ 赢
 *   把 `html[data-org-theme=x]` 改回 `[data-org-theme=x]` 会让三套主题全部失效，
 *   症状又是「按钮还是设计系统那个紫」—— 这一条是最容易踩回来的坑，别动。
 *   完整踩坑过程：2026-10-23 连续三次（放错位置 → 只写 html 没写 body → 特异性不足）。
 *   设计系统的 :root 与本文件同为特异性 (0,1,0)，谁在后谁生效。2026-10-23 实测踩到：
 *   放设计块之前，三套主题渲染出来全是设计系统值，而 --cta-* 因为设计系统没定义
 *   反而生效 —— 症状是「CTA 变绿了、按钮还是紫的」，极易误判成缓存/没发布，白查一轮。
 *   ⇒ 覆盖的必须是源头 --ciku-brand；--primary / --brand / --blue 全是它的派生。
 *
 * ⚠ 还要压过 body 级重定义：设计系统的
 *   `:is([data-ciku-ui="public"],[data-ciku-public="assessment"]){--ciku-brand:#4f46e5;…}`
 *   命中两页的 <body data-ciku-ui="public">。自定义属性遵守「就近生效」——
 *   它写在 body 上，即便 <html> 上写了主题值，后代元素读到的仍是 body 那一份。
 *   2026-10-23 实测：只写 [data-org-theme=x] 时 --brand 在 <html> 上已是 #1F6B4F，
 *   但按钮渲染仍是 #4f46e5。这就是「变量值对了、颜色还是错的」的成因。
 *   ⇒ 因此每条都成对写「:root/元素层 + body 层」，缺一层就会有一半元素不跟随。
 *
 * 三套均实测 WCAG AA（主色对白底、白字压主色、CTA 软底压深字 全部 ≥4.5:1）：
 *   indigo #1D5DB8 白底 6.34 · forest #1F6B4F 白底 6.41 · ochre #9A5B1E 白底 5.40
 * ⚠ indigo 必须与旧值逐字一致（--brand:#1D5DB8 / --brand-d:#153E75）：
 *   存量机构都没有 theme 字段，收敛后一律走 indigo；这里改一个色号
 *   就等于给所有老机构偷偷换了一次主色。
 *
 * ⚠ 新增主题必须四处同步：
 *   ① 本文件（三档：浅色 :root/元素层、浅色 body 层、深色 body 层）；
 *   ② server/org_homepage_contract.js 的 THEME_PRESETS；
 *   ③ tests/test_org_homepage_theme.js 的枚举断言；
 *   ④ 两个页面的 applyTheme() 里 ORG_THEMES 数组。
 *   缺任何一项 → 「后台能选、页面不生效」或「切了主题不换色」。
 */

/* ---- 第 1 层：根级与元素级（作用在 <html> 上的 data-org-theme） ----
 * 特异性说明见文件头：`html:root` / `html[data-org-theme=x]` 均为 (0,1,1)，
 * 稳压设计系统的 `:root`(0,1,0)。 */
html:root,html[data-org-theme="indigo"]{--ciku-brand:#1D5DB8;--primary-d:#153E75;--brand2:#153E75;--brand-d:#153E75;--brand-grad:#1D5DB8;--blue:#1D5DB8;--brand:#1D5DB8;--brand-soft:#EFF4FC;--brand-ink:#1D5DB8}
html[data-org-theme="forest"]{--ciku-brand:#1F6B4F;--primary-d:#14523C;--brand2:#14523C;--brand-d:#14523C;--brand-grad:#1F6B4F;--blue:#1F6B4F;--brand:#1F6B4F;--brand-soft:#E4F0EA;--brand-ink:#1F6B4F}
html[data-org-theme="ochre"]{--ciku-brand:#9A5B1E;--primary-d:#7A4716;--brand2:#7A4716;--brand-d:#7A4716;--brand-grad:#9A5B1E;--blue:#9A5B1E;--brand:#9A5B1E;--brand-soft:#F6EDE1;--brand-ink:#9A5B1E}

/* ---- 第 2 层：body 级（真实生效的那一份，见文件头「就近生效」说明） ----
 * 软底档（--ciku-lavender/--primary-soft/--brand-soft）也必须一起给：
 * 设计系统把 --primary-soft 钉死成 --ciku-lavender = #f3f2ff（淡紫），两页 20+ 处
 * （.cta / .promo-card / .buy-plan / .how .no / 各处 :hover）都用它当底。
 * 只换主色不换软底 ⇒ 墨绿按钮压在淡紫底上，两种气质打架，比不改更难看。
 *
 * ⚠ indigo 的软底**故意不定义**，沿用设计系统的 #f3f2ff：
 *   存量机构全都没有 theme 字段、一律走 indigo，改它就等于给这些机构偷偷换了首屏底色。
 *   这个不对称是有意为之（保护存量），不是漏写。若日后要统一，需单独决策 + 全量回归。 */
body[data-org-theme="indigo"]{--ciku-brand:#1D5DB8;--primary-d:#153E75;--brand2:#153E75;--brand-d:#153E75;--brand-grad:#1D5DB8;--blue:#1D5DB8;--brand:#1D5DB8;--brand-soft:#EFF4FC;--brand-ink:#1D5DB8}
body[data-org-theme="forest"]{--ciku-brand:#1F6B4F;--primary-d:#14523C;--brand2:#14523C;--brand-d:#14523C;--brand-grad:#1F6B4F;--blue:#1F6B4F;--brand:#1F6B4F;--brand-soft:#E4F0EA;--brand-ink:#1F6B4F;--ciku-lavender:#E4F0EA;--primary-soft:#E4F0EA;--primary-softer:#F2F8F5}
body[data-org-theme="ochre"]{--ciku-brand:#9A5B1E;--primary-d:#7A4716;--brand2:#7A4716;--brand-d:#7A4716;--brand-grad:#9A5B1E;--blue:#9A5B1E;--brand:#9A5B1E;--brand-soft:#F6EDE1;--brand-ink:#9A5B1E;--ciku-lavender:#F6EDE1;--primary-soft:#F6EDE1;--primary-softer:#FBF6EE}

/* ---- 第 3 层：深色档（提亮版，行尾为对 #111827 的实测对比度） ----
 * ⚠ 与浅色档同一个坑：data-theme="dark" 通常挂在 <html> 上，而主题变量挂在 <body> 上，
 *   自定义属性就近生效 ⇒ 只写 html 层的深色选择器会被 body[data-org-theme=x] 顶掉。
 *   故每条都成对写「html 层 + body 层」，且都保持 ≥ (0,2,1)，稳压两层的浅色规则。 */
html[data-theme="dark"][data-org-theme="forest"],[data-theme="dark"] body[data-org-theme="forest"]{--ciku-brand:#7FD1AE;--brand:#7FD1AE;--brand-ink:#7FD1AE;--primary-d:#7FD1AE;--brand-d:#7FD1AE;--brand2:#7FD1AE;--blue:#7FD1AE;--ciku-lavender:#243E36;--primary-soft:#243E36;--primary-softer:#1B302A} /* 9.83 */
html[data-theme="dark"][data-org-theme="ochre"],[data-theme="dark"] body[data-org-theme="ochre"]{--ciku-brand:#E5B06A;--brand:#E5B06A;--brand-ink:#E5B06A;--primary-d:#E5B06A;--brand-d:#E5B06A;--brand2:#E5B06A;--blue:#E5B06A;--ciku-lavender:#3E3324;--primary-soft:#3E3324;--primary-softer:#302819}    /* 9.08 */
html[data-theme="dark"][data-org-theme="indigo"],[data-theme="dark"] body[data-org-theme="indigo"]{--ciku-brand:#9398ff;--brand:#9398ff;--brand-ink:#9398ff;--primary-d:#b8bdff;--brand-d:#b8bdff;--brand2:#b8bdff;--blue:#9398ff;--ciku-lavender:#29314A;--primary-soft:#29314A}               /* 6.91 */

/* 深色档实心按钮文字必须翻深。
 * 两个页面的 `.btn{color:#fff}` 都是写死的白字，深色档把 --brand 提亮到
 * #9398ff / #7FD1AE / #E5B06A 之后，白字对比度只剩 2.57 / 1.81 / 1.95 —— 全部不达标。
 * 改用设计系统深色档的 --text-inverse(#102344) 压浅底：实测 6.07 / 8.64 / 7.99，全过 AA。
 * 说明：两页目前都没有脚本或 prefers-color-scheme 会激活深色档（只有手动设
 * data-theme="dark" 才生效），所以这是「启用深色时别踩坑」的预防性修正，
 * 不是修线上正在发生的故障。
 * ⚠ 设计系统有 [data-ciku-public] a.btn{color:#fff}（0,2,1），故本条必须 ≥ (0,3,1)
 *   才压得住 —— 这也是为什么不写成单纯的 .btn。 */
[data-theme="dark"] [data-ciku-public] a.btn,
[data-theme="dark"] [data-ciku-public] button.btn{color:var(--text-inverse,#fff)}

/* ---- 第 4 层：CTA 强调色 ----
 * 两页的 CTA 原文都写死暖橙（#FFF7ED/#FDBA74/#9A3412）——那是「独立于机构主色的强调色」，
 * 主题化后必须跟着主色走，否则选了墨绿的机构首屏仍是一块橙，两种气质打架。
 * 这四个变量设计系统没有定义，本来不会冲突；抬特异性只是为了与上面几层保持一致，
 * 免得日后有人把 CTA 色搬进设计块时再踩一次同类坑。 */
html:root,html[data-org-theme="indigo"]{--cta-bg:#FFF7ED;--cta-line:#FDBA74;--cta-ink:#9A3412;--cta-ink2:#7C2D12}
html[data-org-theme="forest"]{--cta-bg:#E4F0EA;--cta-line:#8FC7AE;--cta-ink:#14523C;--cta-ink2:#1F6B4F}
html[data-org-theme="ochre"]{--cta-bg:#F6EDE1;--cta-line:#D9AE7C;--cta-ink:#6B3E12;--cta-ink2:#7A4716}

/* CTA 标题/正文的显式着色。
 * 为什么页面里那条 `.cta h2{color:var(--cta-ink)}` 不够：设计系统有
 *   `[data-ciku-public] :is(h1,h2,h3){color:var(--text)}` —— 特异性 (0,1,1)，
 *   与 `.cta h2` 完全相同，但它在每页的设计块里、位置更靠后 ⇒ 它赢。
 * 2026-10-23 实测：三套主题下 CTA 标题恒为 #17243B，就是这个原因。
 * 修法：本文件带上同样的 [data-ciku-public] 前缀（特异性相等），靠本文件在
 * 设计块之后加载取胜。⚠ 若某天某页的 body 去掉 data-ciku-public，这两行会失效、
 * 标题退回深蓝 —— 属于可接受的降级（不破版），不是致命项。 */
[data-ciku-public] .cta h2{color:var(--cta-ink,#9A3412)}
[data-ciku-public] .cta p{color:var(--cta-ink2,#7C2D12)}