跨阶段定位:本文档不是 Phase 5 的一部分,而是贯穿 Phase 5(渲染)+ Phase 6(交付)的视觉设计语言系统。 目标:把一份「能跑」的 HTML 报告升级为「可直接发给客户 / 董事会 / 投资人」的精美级别报告。 适用对象:写章节 JS 模块的工程师 / 把 AI 产出的骨架升级的审美设计师 / 最终质检的交付 PM。
基于三个落地项目(肝纯片 737 KB / 猴菇饮 604 KB / 乳酸菌儿童版 464 KB),总结出的精美报告三条红线:
反面参考:
--bg-0: #0A0A0A; /* 最底层 · 报告画布 · 几乎纯黑 */
--bg-1: #111111; /* 中层 · section 内容区 + 卡片 */
--bg-2: #1A1A1A; /* 上层 · hover / 强调块 */
--bg-3: #252525; /* 顶层 · 高亮 tab / 选中态 */
为什么深色:数据类报告深色能让彩色数字/图表更醒目,且对眼睛友好(演示 1 小时不累)。
--text-1: #F5F5F5; /* 主文字 · 标题 · VOC 原文 */
--text-2: #A8A8A8; /* 副文字 · 说明 · subtitle */
--text-3: #6B6B6B; /* 灰阶 · 元信息 · 时间戳 / 平台标签 */
关键纪律:一屏内灰阶不超过 3 层。超过 3 层视觉会散。
--border: rgba(255,255,255,0.08); /* 默认边框 · 卡片 / 表格 */
--border-strong: rgba(255,255,255,0.16); /* 强边框 · 表格 header / 分组 */
禁忌:不要用实色边框(如 #333),深色背景里实色边框会显得生硬。必须用 rgba(白,0.0X)。
--radius-sm: 4px; /* 小标签 / 代码块 */
--radius-md: 8px; /* 卡片 / 按钮 · 主用 */
--radius-lg: 12px; /* 大卡 / Hero 区 */
纪律:一份报告里圆角风格统一。要么全尖角(0px),要么都 8px,不要混搭。
--font-head: 'Inter','Noto Sans SC','PingFang SC','Microsoft YaHei',system-ui,sans-serif;
--font-body: 'Inter','Noto Sans SC',system-ui,sans-serif;
--font-mono: 'JetBrains Mono','SFMono-Regular',Consolas,monospace;
为什么双字体:
font-head / font-body · 西文 Inter + 中文 Noto Sans SC:现代感 + 中英混排不掉档font-mono · 所有数字、平台名、时间戳、百分比 必须走 Mono,让数据"立"起来精美判断:看报告里的数字 —— 如果平台名(XHS / DOUYIN)、点赞数(♥2.3w)、价格(¥298)全部是 Mono,就对了。
| 字重 | 用途 | 示例 |
|---|---|---|
900 |
Cover title / Chapter divider | 5rem 巨标题 |
800 |
Section head / Agenda 标题 | 1.9-2.4rem |
700 |
eyebrow / 表格 header / 强调 | 0.72-0.95rem |
400 |
正文 / subtitle | 0.85-1rem |
300 |
元信息 / 时间戳 | 0.72rem 可选 |
纪律:字重跨度大才有层次感。不要 500-600 中间字重滥用。
/* 标题组 */
.cover-title { font-size: 3.6rem; } /* Cover 封面 */
.divider-title { font-size: 5rem; } /* Chapter 分隔 */
.agenda-title { font-size: 2.4rem; } /* 目录大标题 */
.section-title { font-size: 1.9rem; } /* 子章节 Hero */
/* 正文组 */
.body-large { font-size: 1.1rem; } /* Cover subtitle / Insight */
.body { font-size: 0.95rem; } /* 默认正文 */
.body-sm { font-size: 0.88rem; } /* VOC 原文 */
/* 元信息 */
.label { font-size: 0.82rem; } /* 标签 / 分类 */
.meta { font-size: 0.78rem; } /* 元信息 */
.eyebrow { font-size: 0.72rem; } /* 大写眉标 */
4 / 8 / 12 / 16 / 20 / 24 / 32 / 40 / 48 / 60 / 80 / 120
14-20px12-16px60px 48px100vh,用 border-bottom: 1px solid --border 分padding: 120px 40px禁忌:不要用 13px / 15px / 17px / 23px 这种奇数值,破坏网格对齐。
每个品类一个主色 + 4-6 个辅色。下面是三个案例的调色板:
| 品类 | MAIN | 次色 | tone 哲学 |
|---|---|---|---|
| 肝纯片 DMY | #4A90E2 科技蓝 |
#722F37 酒红 · #D4AF37 酒精金 |
理性 · 严肃 · 醒目 |
| 猴菇饮 | #B87333 温润铜 |
#1A7C5F 暗绿 · #F5E6D3 米白 |
东方 · 草本 · 温润 |
| 乳酸菌儿童 | #8FD3B8 薄荷 · #FFB6A3 桃色 |
#B5A3E0 淡紫 · #FFCC33 亮黄 |
明快 · 柔和 · 分龄 |
选色心法:
.report-section {
min-height: 100vh; /* 每个 section 占满一屏 */
padding: 60px 48px;
border-bottom: 1px solid var(--border);
scroll-margin-top: 20px; /* 平滑滚动锚点 */
}
.section-inner {
max-width: 1280px; /* 内容不超过 1280px */
margin: 0 auto;
}
为什么 100vh:让报告天然变成幻灯片,用 PageDown / 空格键就能一屏一屏翻。
.cover {
background: linear-gradient(180deg, #0A0A0A 0%, #111 100%);
}
8 章 × N 子章Ch N · 标题 + 一句话 hero line.divider {
background: linear-gradient(180deg, #0F0F0F 0%, #000 100%);
display: flex; align-items: center;
padding: 120px 40px;
text-align: center;
}
CHAPTER 01(大写 · letter-spacing 0.35em · 品类色)max-width: 800px1 列 · Hero / 单行文字
2 列 · VOC 卡并列 / 对比 / 理论 mapping
3 列 · 痛点卡 / 决策列表 / 小 KPI
4 列 · Cover KPI / StatStrip
推荐语法:
<div class="grid" style="grid-template-columns:repeat(4,1fr); gap:12px;">
| 节奏 | 用途 | 视觉处理 |
|---|---|---|
urgent |
Ch1 诘问起点 | 红/橙高亮 · 大字数字 |
analytical |
Ch2/3 竞品 VOC | 冷色 · 表格 · 矩阵 |
insight |
Ch4 KANO | 紫/蓝 · 渐变 Hero 金句 |
empathy |
Ch5 场景 | 暖色 · 场景插图位 · VOC 多 |
strategic |
Ch6 无人地带 | 绿色 · 2x2 矩阵 · 高亮 |
forward |
Ch7 新机会 | 金色 · 上升感 · 虚实结合 |
blueprint |
Ch8 4P | 蓝黑 · 表格密 · 数字多 |
在 section 上加 data-tone="...",可用 CSS 按 tone 切换强调色:
[data-tone="urgent"] { --accent: var(--coral); }
[data-tone="strategic"]{ --accent: var(--jiang-green); }
每个子章节的 "5 件套" 在视觉上对应 4 类模块:
<div style="margin-bottom:20px;">
<div class="text-mono text-xs"
style="color:#4A90E2; letter-spacing:0.2em; margin-bottom:10px; font-weight:700;">
1.1 · 成人爆款 vs 儿童心智
</div>
<h2 style="font-family:var(--font-head); font-weight:800; font-size:1.9rem; line-height:1.3;
color:var(--text-1); margin:0 0 12px 0;">
为什么 <strong style="color:#4A90E2;">乳酸菌素片</strong> 成人爆款,儿童心智却是空白
</h2>
<div style="color:var(--text-2); font-size:0.95rem; line-height:1.75; max-width:900px;">
7.9 亿成人市场已验证 OTC 信任,但儿童 SKU 不到 5%,家长搜索"儿童乳酸菌"第一反应仍是妈咪爱或合生元。
</div>
</div>
三段式纪律:
<strong> 品类色强调)text-2 · 行高 1.75 · 最大 900px 宽)<div class="grid" style="grid-template-columns:repeat(4,1fr); gap:12px;">
<div style="padding:18px; background:#4A90E20C; border:1px solid #4A90E233; border-radius:8px; text-align:center;">
<div style="color:#4A90E2; font-family:var(--font-head); font-weight:900; font-size:2rem;">7.9亿</div>
<div style="color:var(--text-2); font-size:0.82rem; margin-top:6px;">成人乳酸菌素片市场</div>
<div style="color:#4A90E2; font-size:0.72rem; font-family:var(--font-mono); margin-top:4px;">vs 儿童 0.4 亿</div>
</div>
<!-- 4 个 ... -->
</div>
精美点:
主色0C(12% 透明度)· 边框 主色33(20% 透明度)<div style="padding:14px 16px; background:var(--bg-1); border:1px solid var(--border);
border-left:3px solid #4A90E2; border-radius:6px;">
<div style="display:flex; justify-content:space-between; gap:10px; margin-bottom:8px; font-size:0.78rem;">
<div>
<span class="text-mono" style="color:#4A90E2; font-weight:700; letter-spacing:0.1em;">XHS</span>
<span style="color:var(--text-3);"> · 小橘子妈妈 · 上海</span>
</div>
<div style="color:#4A90E2; font-family:var(--font-mono); font-weight:700;">♥2.3k</div>
</div>
<div style="color:var(--text-1); font-size:0.88rem; line-height:1.7;">
「宝宝 2 岁抗生素后吃了一周,大便好多了,比妈咪爱便宜还不用冷藏」
</div>
</div>
精美点:
「」 中文引号包裹 · 行高 1.7 · 字号 0.88rem<table style="width:100%; border-collapse:collapse; font-size:0.86rem;">
<thead>
<tr style="border-bottom:2px solid #4A90E244;">
<th style="text-align:left; padding:10px 12px; color:var(--text-3);
font-weight:700; font-size:0.78rem; letter-spacing:0.05em;">维度</th>
<!-- ... -->
</tr>
</thead>
<tbody>
<tr style="border-bottom:1px solid var(--border);">
<td style="padding:10px 12px; color:#4A90E2; font-weight:700;">本品</td>
<!-- ... -->
</tr>
</tbody>
</table>
精美点:
2px 主色44,行底边 1px bordertext-2 淡化关键精美法则:第 4 象限(本品独占)必须用品类色高亮。
<div style="padding:16px; background:#8FD3B80C; border:1px solid #8FD3B833; border-radius:6px;">
<div class="text-mono text-xs" style="color:#8FD3B8; font-weight:700; margin-bottom:8px;">
右下 · 家庭 × 便捷(无人地带)
</div>
<ul style="margin:0; padding-left:18px; color:var(--text-1); font-size:0.82rem; line-height:1.7;">
<li><strong>✨ 本品独占</strong></li>
</ul>
<div style="color:var(--text-3); font-size:0.76rem; margin-top:8px; font-style:italic;">
✅ 机会:分龄装 × 咀嚼片 × 卡通 IP
</div>
</div>
用于 KANO / JTBD / 3C 这类理论 mapping,不抢戏但要清晰。
<div style="padding:16px 18px; background:#4A90E208; border-left:3px solid #4A90E2; border-radius:8px;">
<div class="text-mono text-xs"
style="color:#4A90E2; letter-spacing:0.15em; font-weight:700; margin-bottom:10px;">
📐 KANO 模型 · 五类需求映射
</div>
<!-- mapping 内容 -->
</div>
<div style="padding:24px 28px;
background:linear-gradient(135deg, #4A90E214, #4A90E204);
border:2px solid #4A90E244; border-radius:12px; margin:20px 0;">
<div class="text-mono text-xs"
style="color:#4A90E2; letter-spacing:0.2em; margin-bottom:12px; font-weight:700;">
💡 KEY INSIGHT · 关键洞察
</div>
<div style="color:var(--text-1); font-size:1.1rem; line-height:1.8;">
乳酸菌素片不是"更便宜的益生菌",而是<strong style="color:#4A90E2;">OTC 药线信任的儿童入口</strong>。
</div>
</div>
精美点:
主色14 → 主色04)<strong><div style="padding:20px 24px; background:#4A90E208; border:1px solid #4A90E233; border-radius:8px;">
<div class="text-mono text-xs"
style="color:#4A90E2; letter-spacing:0.18em; margin-bottom:14px; font-weight:700;">
🎯 落地决策
</div>
<div class="grid" style="grid-template-columns:1fr 1fr; gap:10px;">
<div style="padding:10px 14px; background:var(--bg-1); border-left:3px solid #4A90E2;
border-radius:4px; color:var(--text-1); font-size:0.86rem; line-height:1.65;">
<strong>P0 · 产品</strong>:上架分龄装(1-3/3-6/6-12 岁)咀嚼片 SKU
</div>
<!-- ... -->
</div>
</div>
精美点:
<strong>P0 · 动词</strong>(加粗 + 品类色 + 动词化)<div style="margin:8px 0;">
<div style="display:flex; justify-content:space-between; font-size:0.78rem; margin-bottom:4px;">
<span style="color:var(--text-2);">妈咪爱</span>
<span class="text-mono" style="color:#4A90E2;">62%</span>
</div>
<div style="height:6px; background:var(--bg-2); border-radius:3px; overflow:hidden;">
<div style="height:100%; width:62%; background:linear-gradient(90deg, #4A90E2, #4A90E2cc);"></div>
</div>
</div>
<div style="display:flex; align-items:flex-end; gap:4px; height:80px;">
<div style="flex:1; height:30%; background:#4A90E2; border-radius:2px 2px 0 0;"></div>
<div style="flex:1; height:50%; background:#4A90E2; border-radius:2px 2px 0 0;"></div>
<div style="flex:1; height:85%; background:#4A90E2; border-radius:2px 2px 0 0;"></div>
</div>
纪律:尽量不用外部 chart 库。SVG 和纯 div 能画的都别引 Chart.js / ECharts,会破坏单文件无依赖。
<div style="display:flex; flex-wrap:wrap; gap:8px;">
<span style="padding:4px 10px; background:#4A90E214; border:1px solid #4A90E244;
border-radius:12px; font-family:var(--font-mono); font-size:0.78rem;
color:#4A90E2;">#冷链 · 156</span>
<!-- ... -->
</div>
如果是"决策链"「家长 → 医生 → 药店 → 购买 → 使用 → 复购」这种流程图,推荐5-6 个方块 + 箭头 Unicode:
<div style="display:flex; align-items:center; gap:8px; flex-wrap:wrap;">
<div style="padding:8px 14px; background:#4A90E214; border:1px solid #4A90E2;">家长焦虑</div>
<div style="color:#4A90E2;">→</div>
<div style="padding:8px 14px; background:#4A90E214; border:1px solid #4A90E2;">搜索</div>
<!-- ... -->
</div>
(function() {
const sections = document.querySelectorAll('.report-section');
let idx = 0;
function go(i) {
idx = Math.max(0, Math.min(sections.length - 1, i));
sections[idx].scrollIntoView({ behavior: 'smooth' });
if (sections[idx].id) history.replaceState(null, '', '#' + sections[idx].id);
}
document.addEventListener('keydown', (e) => {
if (e.key === 'ArrowRight' || e.key === ' ' || e.key === 'PageDown') { e.preventDefault(); go(idx + 1); }
if (e.key === 'ArrowLeft' || e.key === 'PageUp') { e.preventDefault(); go(idx - 1); }
if (e.key === 'Home') go(0);
if (e.key === 'End') go(sections.length - 1);
});
if (location.hash) {
const i = [...sections].findIndex((s) => '#' + s.id === location.hash);
if (i >= 0) idx = i;
}
})();
html { scroll-behavior: smooth; }
.report-section { scroll-margin-top: 20px; }
.voc-card { transition: background .15s, border-color .15s; }
.voc-card:hover { background: var(--bg-2); border-color: var(--border-strong); }
在右下角固定一个 slide X / Y 小角标:
<div style="position:fixed; right:20px; bottom:20px; padding:6px 12px;
background:var(--bg-2); border:1px solid var(--border); border-radius:4px;
font-family:var(--font-mono); font-size:0.78rem; color:var(--text-3); z-index:50;"
id="page-indicator">1 / 38</div>
配合 JS:
// 在 keydown 或 scroll 事件里更新
document.getElementById('page-indicator').textContent = `${idx+1} / ${sections.length}`;
必须遵守:
<style><script>system-ui)🎯💡⚠️✅❌📐📱 足够)| 报告大小 | 评价 |
|---|---|
| < 300 KB | 可能内容不足 · 审计会打回 |
| 300-500 KB | 轻量版 · 适合 30-35 slide |
| 500-800 KB | 标准版 · 适合 36-42 slide |
| 800 KB-1 MB | 旗舰版 · 适合 42+ slide · 7000+ VOC |
| > 1.2 MB | 可能内容冗余 · 考虑拆分 |
瘦身手法:
….voc-card 类@media print {
.report-section {
min-height: auto;
page-break-after: always;
padding: 20px;
}
body { background: white; color: black; }
/* 暗色→浅色反转(可选)*/
}
@media (max-width: 768px) {
.report-section { padding: 24px 16px; }
.grid { grid-template-columns: 1fr !important; }
.cover-title { font-size: 2rem; }
.divider-title { font-size: 2.8rem; }
}
每次 gen 完都过一遍这 20 条。不过关的直接回去改。
--bg-0/1/2 贯穿所有 section--text-1/2/3,禁 5 种灰<strong> 品类色 强调大部分 AI 初次产出的 HTML 报告只能打到 60 分。升级到 90+ 分的 3 个阶段:
#0A0A0A 必须 ≥ 4.5)中文字体 fallback 顺序(无 CDN 依赖):
'Inter','Noto Sans SC','PingFang SC','Microsoft YaHei',system-ui,sans-serif
Mono fallback:
'JetBrains Mono','SFMono-Regular',Consolas,'Liberation Mono',monospace
node scripts/tools/preview-reports.js
# 打开 http://localhost:8787/<品类>-voc-insight-report.html
把当前报告和参考案例并排打开:
reports/jiangzhong-liver-voc-validation-report.htmlreports/jiangzhong-houguyin-voc-insight-report.htmlreports/jiangzhong-lactic-children-voc-insight-report.htmltemplates/aesthetic-patterns.template.js(20+ 小组件 copy-paste)templates/aesthetic-checklist.template.mdprompts/P6-aesthetic-upgrade.prompt.mdtemplates/components.template.jstemplates/chapter.template.js版本:v1.0 · 2026-04
作者:基于肝纯片 737 KB · 猴菇饮 604 KB · 乳酸菌儿童版 464 KB 三项目视觉系统沉淀
下一步:读 prompts/P6-aesthetic-upgrade.prompt.md 开始精美升级