- 建立 Lucide 子集 iconfont(49 字形),全站 emoji 替换为 fc-icon 组件 - 重塑 Design Token(冷中性近黑底 + Volt 荧光绿 #B6F24E),消除硬编码颜色 - 首页登录后个性化:我的计划 / 我的收藏 / 今日推荐(纯前端复用现有 API) - 后端 DEFAULT_EMOJI→Lucide 名,PALETTE 对齐 Kinetic Dark 语义色板 - 修复 person-standing 缺失字形;14 个官方组合 seed emoji 全部映射到现有字形
23 KiB
FITCOACH 设计语言重塑提案(v2 暗色动能系统)
设计师:颜好看 | 日期:2026-07-22 | 寄存器:Product(app 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:1(OK);但 --text-3:#6B746D 仅约 3.3:1,用于次要信息勉强达标,用于小字会吃力 |
| 留白 | 卡片内边距 28rpx、区块 padding 40rpx 偏挤;Hero 下方直接接内容,缺少节奏呼吸 |
| 动效 | 几乎无状态动效(hover/active/loading 无反馈);CTA 有光晕但无按下态;进度/加载无骨架屏 |
| 结构 | 首页用"全大写英文 eyebrow(FEATURED/PROGRAMS)+ 图标网格 + 横向滑动"结构,偏模板;且 emoji 占位使整页廉价感强 |
0.4 审计结论
当前方案在 P0-1(emoji 图标)、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:#FF6A3DPulse 珊瑚橙(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 字号阶梯(rpx,750rpx=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),对应 4–64px。统一替换旧方案里的 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. 图标系统:锁定 Lucide(MIT)
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 物理点;若真机偏小,导航图标可上探到 44–48rpx(见下表映射的视觉权重)。底部导航按平台规范建议视觉区 ~44–48rpx。
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 border(ring),圆角 lg(32rpx),内边距 space-5(40rpx);左侧
clipboard-list20rpx 图标 + 计划名(fg,semibold);右上状态 pill(进行中=accent-soft 底 + accent 字,或已完成=success-soft 底 + success 字);进度条高 8rpx、圆角 pill、track=border、fill=accent,宽度=完成比例。 - 今日推荐行:与计划卡同容器规格,但左侧用
sparkles20rpx(accent 色);动作名 fg semibold;理由行 fg-2 24rpx 一行截断;右箭头›(用 SVGchevron-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 直径上≈2px),progress=accent(或成功语义绿,当"完成周目标"用 success),stroke-linecap:round,转角用stroke-dasharray动画 300ms 进入。中心数字用 mono 字体、4xl(72rpx)主数 +sm分母。环直径 ~120rpx,整体占卡左侧 1/3。 - 连续训练天数:
flame24rpx(accent 或 warn 色,不抢进度环)→ 数字 monoxl(36rpx)fg semibold → "天" 后缀 fg-2sm。作为小统计块置于环右侧第一行。 - 历史曲线:内联 SVG 面积图(宽 ~100%,高 ~120rpx),14 个数据点(近 14 天训练分钟),填充
accent8% 渐变 + 1.5pxaccent描边线,末端小圆点。X 轴不标注,Y 靠趋势文案"↑ 8%"传达(不靠颜色单独传达含义——配文字)。下方一行trending-up20rpx + "训练时长较上周 +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.1,design-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 SC(CJK)/ JetBrains Mono(数据) | ✅ |
| 7 | Hero 真实内容非口号 | 个性化区块承载真实计划/进度/推荐 | ✅ |
| 8 | 图标库锁定一套+尺寸 16/20/24 | Lucide,§2.2 | ✅ |
| 9 | 无纯黑/纯灰裸用 | bg #0B0F0E 非纯黑;灰带冷调;语义色有 chroma |
✅ |
| 10 | 对比度 + reduced-motion + 焦点 | fg/fg-2 达标;motion 尊重 reduced;focus-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. 落地建议(给架构师 / 前端)
- 图标:从 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 映射表可补。 - Token 注入:把
design-tokens.json的 color/spacing/radius/shadow 编译进app.wxss的page{}变量;fontSize/letterSpacing/motion 同步为 WXSS 变量;JS 侧把字号/色值常量化供setData用(如动态style="background:{{item.color}}22"这类应改为 Token 变量)。 - 去硬编码:全局替换
#0E1110→var(--bg)、#E5544B→var(--danger)、rgba(229,84,75,…)→var(--danger-soft)等(grep 命中见 §0.2)。 - 动态色迁移:
index.wxml里style="background:{{item.color}}22;color:{{item.color}}"(训练组合/计划卡按色渲染)应改为从"预设语义色板"取 Token 别名(如var(--accent-soft)),避免任意 hex 注入破坏系统。 - 需 PM/架构师确认:accent 最终色(珊瑚橙 vs Volt 绿 vs Ion 青);个性化区块选轻量档还是完整档;UGC emoji 选择器是否迁移到 SVG 图标选择器。
文档结束。机读 Token:design-system/design-tokens.json。视觉草案可出 SVG 线框(如需我可补 home-personalization-mockup.svg)。