fix(theme): 品牌色令牌语义拆分与暗黑模式全站治理

- 拆分品牌色「文字/底色」双通道:新增 --color-brand-ink(-rgb)(深色 #F87171)
  与 tailwind brand.ink;text-brand → text-brand-ink 迁移 247 处;
  bg-brand/border-brand 保持 --color-brand-rgb 不翻转(红底白字 5.58:1 不能动)
- dark 块补齐 --color-brand-bg: #2A1418(修复深色白字压浅粉底 1.04:1)
- hero 徽章新增 --badge-accent-text 桥接:accentColor 直用作深底文字不可读
  (#1e3a5f 深底 1.65:1),浅色取原色 / 深色 color-mix 提亮
- 硬编码颜色 token 化:bg-white/text-gray-*/border-gray-* → bg-bg-*/text-text-*/border-border-*
- 可访问性:触控目标 <24px 归零(footer 链接列 [&_a]:min-h-6 收口 377 处等)、
  news 搜索框补 aria-label、标题跳级 h2→h4 修正为 h3、装饰 blur 光斑容器补
  overflow-hidden 消除伪文本裁剪
- 验证:tsc 0 / eslint 0 error / jest 0 失败用例 / dogfood 33 路由 × 双主题 P1-P3 全零
This commit is contained in:
2026-09-20 11:50:58 +08:00
parent d959fa9a81
commit 5ecab7b15d
54 changed files with 339 additions and 280 deletions
+24
View File
@@ -46,6 +46,30 @@ Novalon 网站的**主体视觉骨架**。核心特征:
决策状态:✅ 已确认(2026-06-28 重申约束,2026-06-29 补充贯穿规则)
### 品牌色令牌的语义拆分(2026-09-04 新增 · 暗黑模式修复)
品牌红必须区分「文字」与「底色」两种用法,二者**不能共用同一个 CSS 变量**:
| utility | 变量 | 浅色 | 深色 | 适用 |
|---|---|---|---|---|
| `text-brand-ink` | `--color-brand-ink-rgb` | #C41E3A | **#F87171** | 品牌色**文字**:eyebrow、指标数字、标签、链接 hover |
| `bg-brand` / `border-brand` | `--color-brand-rgb` | #C41E3A | #C41E3A(**不翻转**) | 按钮底色、边框、图标填充 |
| `bg-brand-bg` | `--color-brand-bg` | #FEF2F4 | **#2A1418** | 品牌浅底块(与 `--color-error-bg` 同口径翻转) |
| `--badge-accent-text` | `--badge-accent`(组件注入) | accentColor 原色 | `color-mix(accent 45%, white)` | DetailHero 徽章:accentColor 直用作深底文字不可读(#1e3a5f 深底 1.65:1),经 CSS 变量间接引用后按主题自动适配 |
依据(WCAG 相对亮度实测,非估算):
- 红底白字按钮 #C41E3A × #F8FAFC = **5.58:1**;若把按钮底整体换成 #E04A68 会掉到 **3.75:1**
→ 所以**绝不能**整体提亮 `--color-brand`
- 深色下品牌文字取 **#F87171**:于 #0A0E14 / #0F1419 / #151B23 分别 **6.99 / 6.69 / 6.26**,全达 AA
且它已是深色主题 `--color-error-text` 的既有值,不引入新色值
例外 —— 以下场景保持 `bg-white` + `text-brand`**不**用 brand-ink),因为它们是恒定品牌红/深色
区块上的**白底反转元素**,白底在两主题下都不翻转:CTA 区块白底主按钮、品牌红指标块上的白底角标、
Switch / Slider 的白底圆钮。
决策状态:✅ 2026-09-04 全站审计后确认(深色对比度违规 683 → 0);
✅ 2026-09-04 生产构建终验(33 路由 × 双主题 P1=0 / P3=0,剩余 P2 全为 GA 外网噪音)
### 动效设计四原则 (Motion Design Principles)
基于 Porsche Consulting "用动效象征变革"理念,统一全站动效语言:
1. **Purposeful(有目的)**:每个动效必须服务于内容传达,不做纯装饰动效