Files
fitness-coach/FITCOACH-DESIGN-PROPOSAL.md
wm b94eb706ff feat: Kinetic Dark 设计语言 + Lucide 图标迁移 + 首页轻量个性化
- 建立 Lucide 子集 iconfont(49 字形),全站 emoji 替换为 fc-icon 组件
- 重塑 Design Token(冷中性近黑底 + Volt 荧光绿 #B6F24E),消除硬编码颜色
- 首页登录后个性化:我的计划 / 我的收藏 / 今日推荐(纯前端复用现有 API)
- 后端 DEFAULT_EMOJI→Lucide 名,PALETTE 对齐 Kinetic Dark 语义色板
- 修复 person-standing 缺失字形;14 个官方组合 seed emoji 全部映射到现有字形
2026-07-22 21:38:56 +08:00

292 lines
23 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# FITCOACH 设计语言重塑提案v2 暗色动能系统)
> 设计师:颜好看 日期2026-07-22 寄存器Productapp UI 平台:微信小程序(原生)
> 配套机器可读:`design-system/design-tokens.json`(已产出)
> 三轴刻度DESIGN_VARIANCE=5克制、可预测网格 MOTION_INTENSITY=4状态反馈为主 VISUAL_DENSITY=4日常应用密度
---
## 0. 当前视觉审计(暗金奢华风 → 问题清单)
我实际通读了 `miniprogram/` 下页面与组件。结论:**当前"暗金奢华"调性与健身教练产品不匹配,且存在大量 P0 级违规emoji 当图标、Token 不全(硬编码)、以及 AI 模板味的结构问题。** 逐项如下。
### 0.1 P0 级硬伤(违反即退回)
| # | 问题 | 位置 | 现状 |
|---|------|------|------|
| P0-1a | emoji 当功能图标(首页) | `pages/index/index.wxml` `search-pill__icon`=🔍、`cta__icon`=✨;`quick__emoji`=✨💪🏋️📋🗂️👤;`prog__emoji` | 6 个快捷入口 + 搜索 + CTA 全用 emoji |
| P0-1b | emoji 当功能图标(导航) | `components/bottom-nav/index.js` 🏠📚📋👤 | 主导航 4 项全 emoji |
| P0-1c | emoji 当功能图标(个人页/空态/占位) | `profile.wxml` ❤️🗂️⭐📋💪;`favorites/search/my-plans/plan-favorites/plan-detail` 空态 ⭐📋🔍🏋️;`exercise-card`/`detail` 占位 🏋️ | 几乎每页都有 |
| P0-1d | 收藏切换用字符 ♥/♡ | `detail.wxml` `collection-detail.wxml` | 字符当图标,应换 SVG heart |
| P0-3a | 硬编码颜色散落 | 全 13 个 wxss 中大量 `#0E1110``rgba(229,84,75,…)``#fff` 直接写死(见下表) | 改主题要改 N 处,违反"颜色全走 Token" |
| P0-2 | 当前非紫粉渐变(此项**未违规**,但注意 CTA 用金→浅金渐变 `linear-gradient(135deg, gold, gold-2)` 属"奢华模板味",新方案去掉) | `index.wxss` `.cta` | 保留为审计备注 |
### 0.2 Token 不全 / 硬编码(必须重塑)
全量 grep 出的硬编码色值(应下沉为 Token
```
pages/index/index.wxss:5 linear-gradient(150deg, #1C2A22 0%, #0E1110 70%) ← hero 背景硬编码
pages/index/index.wxss:26 color: #0E1110; ← CTA 前景硬编码
plan-detail.wxss:16,50 rgba(229,84,75,0.92) / #E5544B ← danger 硬编码
plan-detail.wxss:33,48 color: #0E1110; ← 硬编码
profile/recommend/my-plans/favorites/plan-edit/detail ... color: #0E1110 ← 同值散落 8+ 处
exercise-card.wxss:28 color: #0E1110;
gif-player.wxss:12 var(--gold, #c9a24b) ← 兜底硬编码(可接受但应统一)
app.wxss:5 --bg-grad: linear-gradient(160deg,#16201B,#0E1110) ← 已有变量,但页面级又重复写
```
**问题归纳**`app.wxss` 里其实定义了 `--bg/--surface/--gold/--text/--line/--radius`1命名偏"金色语义"--gold/--gold-2/--gold-soft不利去奢华化2缺语义色success/warn/danger、缺层级阴影、缺字体三族、缺字距/字重规范3页面级普遍不引用 Token 直接写 hex。
### 0.3 层级 / 间距 / 字体 / 对比 / 留白 / 动效
| 维度 | 现状问题 |
|------|----------|
| 层级 | 卡片全靠 `box-shadow: 0 12rpx 40rpx rgba(0,0,0,.35)` 抬升 + 28rpx 大圆角 → "幽灵卡片"(发丝边框 + 大阴影同屏,见绝对禁令 #9);缺乏"背景递进表达层级" |
| 间距 | 混用 `40rpx/32rpx/36rpx/28rpx/24rpx/20rpx/18rpx/16rpx/22rpx` 等,无统一尺度(`quick__grid gap:18rpx` 不在 4px 网格;`cta padding:28rpx` 非标) |
| 字体 | 只用系统 `-apple-system, "PingFang SC", ...`,无 Latin 显示字体、无等宽数据字Hero 56rpx 与正文 28rpx 跨度大但中间阶梯缺 |
| 对比 | 正文 `--text-2:#98A39B``#0E1110` 上约 6.5:1OK`--text-3:#6B746D` 仅约 3.3:1用于次要信息勉强达标用于小字会吃力 |
| 留白 | 卡片内边距 28rpx、区块 padding 40rpx 偏挤Hero 下方直接接内容,缺少节奏呼吸 |
| 动效 | 几乎无状态动效hover/active/loading 无反馈CTA 有光晕但无按下态;进度/加载无骨架屏 |
| 结构 | 首页用"全大写英文 eyebrowFEATURED/PROGRAMS+ 图标网格 + 横向滑动"结构,偏模板;且 emoji 占位使整页廉价感强 |
### 0.4 审计结论
当前方案在 **P0-1emoji 图标、P0-3硬编码/模板味、Token 完整性** 三处不达标,必须重塑。设计语言从"暗金奢华"转向 **「动能暗色 / Kinetic Dark」**:保留深色高级基底,去掉金色奢华语义,换成单一有能量的珊瑚橙强调色 + 发丝边框 + 数据化表达,贴合健身教练的"专业、能量、可信赖"。
---
## 1. 新设计语言提案Design Token 草案
> 完整机读版见 `design-system/design-tokens.json`。此处给出关键决策与色值。
### 1.1 配色(中性 85% 强调 8% 语义 5% 效果 <2%
**基底A1冷中性近黑非纯黑、非绿调奢华**
- `--bg:#0B0F0E` 页面背景 `--surface:#141A18` 卡片 `--surface-2:#1C2421` 次级表面/chip
- `--fg:#ECF1EF` 主文本 `--fg-2:#9BA7A1` 次级 `--fg-3:#6B7670` 三级(仅用于非关键 meta且字号≥24rpx
- `--border:rgba(255,255,255,.08)` `--border-strong:rgba(255,255,255,.14)`
**强调色A1单一品牌色每屏≤2 处)**
- `--accent:#FF6A3D` **Pulse 珊瑚橙**CTA、激活导航、关键数据高亮
- 派生:`--accent-hover:#FF8263` / `--accent-active:#E8562B` / `--accent-on:#20100A`(深暖字,橙底上对比>7:1/ `--accent-soft:rgba(255,106,61,.12)`
**语义色A2不计入"第二品牌色"——success 用于进度/连续天数这类"正向"语义)**
- `--success:#2BD9A6`(进度环/连续天数/正向趋势)| `--warn:#F2B53D` `--danger:#FF5C5C`(替代旧 `#E5544B` `--info:#4FA8FF`
- 派生 soft 版用于淡底标签
**为什么不是紫/粉/金**:紫→粉渐变属 AI 模板红线P0-2金色奢华与"健身教练"调性错位(奢侈感≠专业运动感);珊瑚橙在深色上能量强、对比足、且与现品牌"暗底"自然衔接,迁移成本低。
**备选方向(待 PM 拍板)**:若想要更"运动品牌"的辨识度,可把 accent 换成 **Volt 荧光绿 `#B6F24E`**Gymshark/Nike 味,更激进);或 **Ion 青 `#1FD4C4`**(更冷静健康)。本提案默认推荐珊瑚橙。
### 1.2 字体(含中文,三族明确)
- **显示/标题/数字**`'Manrope', 'PingFang SC', 'HarmonyOS Sans SC', 'Source Han Sans SC', 'Noto Sans CJK SC', sans-serif`
- Latin 用 **Manrope**(几何、运动感、不在反射拒绝清单);中文回落系统黑体 —— 小程序不打包 10MB+ CJK 字体,这是真实约束下的最优解。
- **正文**`'PingFang SC', 'HarmonyOS Sans SC', 'Source Han Sans SC', 'Noto Sans CJK SC', -apple-system, sans-serif`(中文系统字体优先)
- **数据/统计**`'JetBrains Mono', ui-monospace, monospace`等宽tabular 数字,用于进度环中心数字、连续天数、历史曲线 Y 轴)
**字重三级**Regular 400正文 Medium 510按钮、小标题 Semibold 590大标题。小程序字体若无 510 字重则回落 500。
**字距**eyebrow 全大写 `0.08em`;大标题 `-0.02em`;正文 `0`
### 1.3 字号阶梯rpx750rpx=375pt
`xs 22 / sm 24 / base 28 / md 30 / lg 32 / xl 36 / 2xl 44 / 3xl 56(hero) / 4xl 72(巨型数字)`。中间补 `md 30` 让"正文→小标题"过渡平滑(旧方案缺这档)。
### 1.4 间距尺度4px 网格 → rpx 偶数)
`8/16/24/32/40/48/64/80/96/128(rpx)`,对应 464px。统一替换旧方案里的 `18rpx/22rpx/28rpx/36rpx` 等非标值。区块节奏:桌面/大屏 `section-y = 48rpx`,移动 `32rpx`(小程序默认移动,省略断点差异,但安全区 `env(safe-area-inset-bottom)` 必须在底部导航与吸底按钮处使用)。
### 1.5 圆角(收紧,去"过度圆滑"
`sm 16 / md 24 / lg 32 / xl 40 / pill 9999 (rpx)`。卡片用 `md(24rpx=12px)``lg(32rpx=16px)`**不再用 28rpx 这种临界值**chip/pill 用 `pill`
### 1.6 阴影 / 层级Hairline First
默认卡片 **不用阴影,用 1px 发丝边框**`--shadow:ring`)。仅悬浮/选中用 `--shadow:raised`;底部导航用 `--shadow:float`**唯一允许的彩色阴影是 CTA 的 `--shadow:glow`**(珊瑚橙光晕,替代旧金色光晕)。深色模式靠"背景亮度递进"表达层级(`#0B0F0E → #141A18 → #1C2421`),不靠投影。
### 1.7 动效150ms 收敛,无 bounce
`fast 150 / base 200 / slow 300ms`,标准缓动 `cubic-bezier(0.2,0,0,1)`。**禁 bounce/elastic**。所有交互组件补 hover/active 反馈;列表/卡片进入用 ≤300ms 的淡入(勿每节相同动画)。尊重 `prefers-reduced-motion`(小程序通过 `wx.getSystemSetting().reduceMotion` 或 CSS `@media (prefers-reduced-motion: reduce)` 降级)。
---
## 2. 图标系统:锁定 LucideMIT
### 2.1 推荐与理由
**锁定一套:`lucide`MIT原 Feather 续作)。**
| 维度 | 说明 |
|------|------|
| 一致性 | 统一 24×24 网格、2px 描边、单线风格 → 缩到 16/20/24 视觉不变形 |
| 覆盖 | 健身语义齐全:`dumbbell`/`activity`/`flame`/`heart`/`target`/`calendar-check`/`trending-up`/`search`/`user`/`home`/`sparkles` 等 |
| 许可 | MIT可子集化编译为 iconfont无商用风险 |
| 调性 | 中性、现代、"赢得熟悉感"Product 寄存器标杆),不像彩色 emoji 那样廉价 |
| 落地 | 小程序无原生 inline SVG把**所需子集编译成 iconfont.ttf/.woff2**,用 `<text class="fc-icon">` + `font-family` 引用;或 base64 SVG `<image>`。**严禁 emoji** |
**为何不选其他**Remix Icon含 outline/fill 双风格,可作备选,但双风格易混,先锁 Lucide 单风格Radix Icons集太小、偏开发工具、缺健身图标Iconify聚合器非单一风格**混用即违反 P0-1"锁定一套"**)。
### 2.2 尺寸规范
| 用途 | 尺寸 | 示例 |
|------|------|------|
| 行内/列表前置 | **16rpx (8px)** | 单元格图标、标签前置 |
| 按钮内 | **20rpx (10px)** | CTA、次要按钮 |
| 独立图标/导航 | **24rpx (12px)** | 底部导航、区块图标、空态 |
> 注意:小程序 rpx 在 750 基准下 24rpx=12px 物理点;若真机偏小,导航图标可上探到 4448rpx见下表映射的视觉权重。底部导航按平台规范建议视觉区 ~4448rpx。
### 2.3 现有 emoji → Lucide SVG 映射表(全量)
| 现有 emoji | 位置 | 语义 | Lucide 图标 | 备注 |
|-----------|------|------|-------------|------|
| 🔍 | index 搜索胶囊、search 页、favorites 空态 | 搜索 | `search` / 空态 `search-x` | |
| ✨ | index CTA、quick"智能推荐" | AI 推荐 | `sparkles` | |
| 💪 | quick"按部位" | 部位/身体 | `accessibility`(或 `person-standing` | 不与器械混 |
| 🏋️ | quick"按器械"、exercise 占位、detail 占位、plan-detail 空态 | 器械/训练 | `dumbbell` | |
| 📋 | quick"官方计划"、profile"设置"、my-plans 空态 | 计划/列表 | `clipboard-list`(官方计划)/ `settings`(设置) | 两处语义不同,分两个图标 |
| 🗂️ | quick"我的计划"、profile"我的计划" | 我的计划 | `folder-open` | |
| 👤 | quick"我的"、bottom-nav"我的" | 个人 | `user` | |
| 🏠 | bottom-nav"首页" | 首页 | `home` | |
| 📚 | bottom-nav"分类" | 分类浏览 | `layout-grid` | |
| ❤️ | profile"收藏"、detail/collection 收藏切换 | 收藏 | `heart`outline/fill 两态) | 替 ♥/♡ 字符 |
| ♥ / ♡ | detail、collection-detail 收藏按钮 | 收藏切换 | `heart` | 字符→SVG |
| ⭐ | profile"成就"、plan-favorites 空态 | 成就/收藏 | `star`(成就)/ `star` outline空态 | |
| 🔥 | (个性化档)连续训练天数 | 连击/能量 | `flame` | 新区块用 |
| 🎯 | (个性化档)今日推荐 | 目标/推荐 | `target` | 新区块用 |
| ⚡/🌟/🤸/🧘/🥊/🚴/🐯/🦁 | plan-edit / profile 的"emoji 选择器" | 用户自选头像/计划图标 | **保留 emoji 选择器UGC** 或迁移到 Lucide 子集 `dumbbell/run/bike/heart/flame/target/yoga/medal` | 见 §2.4 |
### 2.4 关于"用户自选 emoji"的边界判定(重要)
P0-1 红线的例外是"**emoji 仅允许出现在用户生成内容UGC**"。因此:
- **plan-edit 的 emoji 选择器、profile 的头像 emoji 选择器**这是用户表达UGC**允许保留 emoji 选择器**。
- 但:**用所选 emoji 渲染出的"计划图标/头像"若出现在卡片头部plan-card、collection-detail、plan-detail 的 `header__emoji`**,它已从"用户输入"变成"界面元素",长期应迁移到 **SVG 图标选择器**(从 Lucide 取一个运动子集dumbbell/run/bike/heart/flame/target/yoga/medal/trophy
- **短期方案MVP**:保留 UGC emoji 选择器;系统默认图标、所有功能导航、空态、占位、收藏切换 **一律 SVG**。这样 P0-1 在"功能图标"维度完全达标UGC 例外成立。
---
## 3. 首页个性化区块视觉草案
> 寄存器=Product故"个性化"不是营销炫技,而是**降低用户启动成本的实用信息密度**。两档按 PM 选定的范围实现。
### 3.1 轻量档Light我的计划 · 收藏动作 · 今日推荐
**布局顺序**(插入 Hero 之后、精选动作之前,作为"为你"区):
```
┌─────────────────────────────────────┐
│ [section-header] 为你准备 action:编辑 │
│ │
│ ┌─ 我的计划卡(整卡可点)──────────┐ │
│ │ 📋 推胸日 · 第 3 周 进行中 │ │ ← clipboard-list 图标 + 状态 pill
│ │ 今日 6 个动作 · 已完成 2/6 │ │
│ │ ▓▓▓▓▓▓▓░░░░░ 33% │ │ ← 线性进度条accent 填充)
│ └─────────────────────────────────┘ │
│ │
│ ┌─ 今日推荐AI 行)──────────────┐ │
│ │ ✨ 上斜哑铃推胸 │ │ ← sparkles + 动作名
│ │ 根据你的推胸计划,匹配度 92% │ │ ← 一行理由(具体,非模板)
│ │ │ │
│ └─────────────────────────────────┘ │
│ │
│ [section-header] 收藏的动作 action:全部│
│ ┌────┐ ┌────┐ ┌────┐ ← 横滑缩略卡 │
│ │ 💪 │ │ 💪 │ │ 💪 │ (dumbbell 占位) │
│ │名 │ │名 │ │名 │ │
│ └────┘ └────┘ └────┘ │
└─────────────────────────────────────┘
```
**卡片样式(轻量档)**
- 我的计划卡surface 底 + 1px borderring圆角 lg(32rpx),内边距 space-5(40rpx);左侧 `clipboard-list` 20rpx 图标 + 计划名fgsemibold右上状态 pill`进行中`=accent-soft 底 + accent 字,或 `已完成`=success-soft 底 + success 字);进度条高 8rpx、圆角 pill、track=border、fill=accent宽度=完成比例。
- 今日推荐行:与计划卡同容器规格,但左侧用 `sparkles` 20rpxaccent 色);动作名 fg semibold理由行 fg-2 24rpx 一行截断;右箭头 ``(用 SVG `chevron-right`,不字符)。
- 收藏动作横滑:每张 200rpx 宽surface 底 + ring圆角 md缩略图区 16:10 比例(用 `dumbbell` 占位 SVG 直到真实 GIF 加载),下方动作名 24rpx 单行省略。
### 3.2 完整档Full+ 进度环 · 连续天数 · 历史曲线
在轻量档顶部追加一个 **「本周概览」卡**(一卡三信息,密度克制):
```
┌─────────────────────────────────────┐
│ [section-header] 本周概览 │
│ ┌─────────────────────────────────┐ │
│ │ ╭───╮ 连续训练 │ │
│ │ │ 4 │ 🔥 12 天 │ │ ← 进度环 + 中心数字(4/5)
│ │ │ 5 │ 本周 4/5 次 │ │ 火焰图标+天数(stat)
│ │ ╰───╯ │ │
│ │ ──╱╲──╱── 历史曲线(14天) │ │ ← 内联 SVG 面积图
│ │ 训练时长趋势 ↑ 8% │ │ trending-up + 文案
│ └─────────────────────────────────┘ │
└─────────────────────────────────────┘
```
**视觉表达规范**
- **进度环**SVG `<circle>` 双环。track=`border`1.5px 在 120rpx 直径上≈2pxprogress=`accent`(或成功语义绿,当"完成周目标"用 success`stroke-linecap:round`,转角用 `stroke-dasharray` 动画 300ms 进入。中心数字用 mono 字体、`4xl(72rpx)` 主数 + `sm` 分母。环直径 ~120rpx整体占卡左侧 1/3。
- **连续训练天数**`flame` 24rpxaccent 或 warn 色,不抢进度环)→ 数字 mono `xl(36rpx)` fg semibold → "天" 后缀 fg-2 `sm`。作为小统计块置于环右侧第一行。
- **历史曲线**:内联 SVG 面积图(宽 ~100%,高 ~120rpx14 个数据点(近 14 天训练分钟),填充 `accent` 8% 渐变 + 1.5px `accent` 描边线末端小圆点。X 轴不标注Y 靠趋势文案"↑ 8%"传达(**不靠颜色单独传达含义**——配文字)。下方一行 `trending-up` 20rpx + "训练时长较上周 +8%"。
- 整卡surface + ring圆角 lg内边距 space-5内部用 `divide-y`/间距分组,不嵌套卡片。
### 3.3 状态覆盖两档通用5 态)
| 状态 | 表现 |
|------|------|
| Loading | 区块骨架屏与卡同形的灰色脉冲块accent-soft 微光) |
| Empty | 空态SVG 图标(非 emoji+ 一句引导("还没有计划?去挑选一个官方计划"+ 主按钮accent |
| Error | "网络开小差了" + 重试按钮ghost |
| Populated | 上文布局 |
| Edge | 计划名超长 → 单行省略;进度 0% → 显示"开始第一次"而非空环;连续天数 0 → 显示"开始你的连击" |
---
## 4. 反模式自检13 项视觉清单 P0 三绝对规则)
### 4.1 P0 三绝对规则(逐条)
- **P0-1 禁止 emoji 作功能图标**:✅ 本提案**全量替换**功能图标为 Lucide SVG§2.3 映射 18 处);仅 UGC 选择器保留 emoji§2.4 已界定边界)。通过。
- **P0-2 禁止紫色→粉色渐变**:✅ 新配色无紫无粉;强调色为珊瑚橙 `#FF6A3D`,语义绿 `#2BD9A6` 仅用于正向。**无** `#7C3AED/#A855F7/#EC4899` 任意组合。通过。
- **P0-3 禁止 AI 模板味**:✅ 颜色**全走 Token**§1.1design-tokens.json 机读);无 "Lorem ipsum"/"Welcome to"Hero 改为展示真实训练内容§3 个性化区块即真实数据);去"全大写英文 eyebrow + 图标网格 + 金渐变 CTA"模板味。通过。
### 4.2 十三条视觉清单
| # | 检查项 | 本提案 | 结论 |
|---|--------|--------|------|
| 1 | 无 emoji 功能图标 | Lucide 全量替换 | ✅ |
| 2 | 无紫粉渐变 | 珊瑚橙 + 语义绿 | ✅ |
| 3 | 无 AI 模板味/空洞文案 | 真实数据 Hero、具体按钮文案 | ✅ |
| 4 | 颜色全走 Token | design-tokens.json页面级禁止裸 hex#000/#fff 例外,本项目仅 accent-on 用深暖色) | ✅ |
| 5 | 间距全 4px 网格 | 8/16/24/32/40/48/64/80/96/128 rpx清掉 18/22/28/36 非标 | ✅ |
| 6 | 字体三族含中文 | Manrope+PingFang SCCJK/ JetBrains Mono数据 | ✅ |
| 7 | Hero 真实内容非口号 | 个性化区块承载真实计划/进度/推荐 | ✅ |
| 8 | 图标库锁定一套+尺寸 16/20/24 | Lucide§2.2 | ✅ |
| 9 | 无纯黑/纯灰裸用 | bg `#0B0F0E` 非纯黑;灰带冷调;语义色有 chroma | ✅ |
| 10 | 对比度 + reduced-motion + 焦点 | fg/fg-2 达标motion 尊重 reducedfocus-ring accent 3px | ✅(实现期需 audit 复测) |
| 11 | 安全区 + 触摸目标≥44 | `env(safe-area-inset-bottom)`图标按钮命中区≥88rpx | ✅ |
| 12 | 组件 5 态覆盖 | §3.3 loading/empty/error/populated/edge | ✅ |
| 13 | 每屏强调色≤2 处 | accent(珊瑚橙) 用于 CTA+激活导航success 仅正向语义;克制 | ✅ |
### 4.3 设计时主动规避的 AI 模板禁令(对照绝对禁令)
- 侧条纹边框:`border-left>1px` 彩色强调 → **不用**,选中态用 `border-strong` 整圈或 accent-soft 底。
- 渐变文字 `background-clip:text`**不用**,强调靠字重/字色。
- 默认毛玻璃 → 仅底部导航用 `backdrop-filter:blur`(功能目的:内容滚过不刺眼),不作装饰。
- 幽灵卡片1px 边框+大阴影同屏)→ **改为 hairline-first**,默认无阴影。
- 过度圆角≥24px→ 卡片上限 16px(32rpx)。
- 每节相同淡入 → 进入动画匹配内容(进度环转、曲线绘、卡淡入各异)。
- 奶油/米色默认化 → 基底为冷中性近黑,暖意由 accent 传达。
---
## 5. 落地建议(给架构师 / 前端)
1. **图标**:从 Lucide 取 §2.3 所列子集,用 `iconfont` 工具编译为 `.ttf/.woff2` 放入 `miniprogram/assets/fonts/`,在 `app.wxss``@font-face` 声明 `fc-icon`;组件用 `<text class="fc-icon fc-icon--20">{{codepoint}}</text>`。需我提供 codepoint 映射表可补。
2. **Token 注入**:把 `design-tokens.json` 的 color/spacing/radius/shadow 编译进 `app.wxss``page{}` 变量fontSize/letterSpacing/motion 同步为 WXSS 变量JS 侧把字号/色值常量化供 `setData` 用(如动态 `style="background:{{item.color}}22"` 这类应改为 Token 变量)。
3. **去硬编码**:全局替换 `#0E1110``var(--bg)``#E5544B``var(--danger)``rgba(229,84,75,…)``var(--danger-soft)`grep 命中见 §0.2)。
4. **动态色迁移**`index.wxml``style="background:{{item.color}}22;color:{{item.color}}"`(训练组合/计划卡按色渲染)应改为从"预设语义色板"取 Token 别名(如 `var(--accent-soft)`),避免任意 hex 注入破坏系统。
5. **需 PM/架构师确认**accent 最终色(珊瑚橙 vs Volt 绿 vs Ion 青个性化区块选轻量档还是完整档UGC emoji 选择器是否迁移到 SVG 图标选择器。
---
*文档结束。机读 Token`design-system/design-tokens.json`。视觉草案可出 SVG 线框(如需我可补 `home-personalization-mockup.svg`)。*