@topmindspace/tms-skills 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/package.json +1 -1
  3. package/top-ppt-html/README.md +38 -130
  4. package/top-ppt-html/SKILL.md +34 -19
  5. package/top-ppt-html/assets/theme-overview-architecture.png +0 -0
  6. package/top-ppt-html/assets/theme-overview-research.png +0 -0
  7. package/top-ppt-html/assets/theme-overview.png +0 -0
  8. package/top-ppt-html/package.json +1 -1
  9. package/top-ppt-html/references/charts-discipline.md +3 -1
  10. package/top-ppt-html/references/charts.md +24 -15
  11. package/top-ppt-html/references/content-rules.md +54 -34
  12. package/top-ppt-html/references/default-surface.md +61 -0
  13. package/top-ppt-html/references/design-system.md +2 -2
  14. package/top-ppt-html/references/failure-modes.md +14 -1
  15. package/top-ppt-html/references/icons.md +56 -277
  16. package/top-ppt-html/references/layout-grammar.md +16 -6
  17. package/top-ppt-html/references/modes.md +16 -11
  18. package/top-ppt-html/references/playbook.md +31 -13
  19. package/top-ppt-html/references/pptx-export.md +20 -2
  20. package/top-ppt-html/references/presentation-craft.md +69 -0
  21. package/top-ppt-html/references/tech-design.md +5 -5
  22. package/top-ppt-html/scripts/audit_skill.py +13 -2
  23. package/top-ppt-html/scripts/build_examples.py +39 -2260
  24. package/top-ppt-html/scripts/build_pptx.js +6 -0
  25. package/top-ppt-html/scripts/checks_html.py +39 -0
  26. package/top-ppt-html/scripts/cross_verify.py +5 -1
  27. package/top-ppt-html/scripts/extract_snippet.py +2 -2
  28. package/top-ppt-html/scripts/layout-constants.json +111 -18
  29. package/top-ppt-html/scripts/lib_layout_regions.js +7 -9
  30. package/top-ppt-html/scripts/negative_tests.py +127 -1
  31. package/top-ppt-html/scripts/package_skill.py +13 -10
  32. package/top-ppt-html/scripts/quality_gate.py +11 -3
  33. package/top-ppt-html/scripts/recommend_layout.py +384 -0
  34. package/top-ppt-html/scripts/regression.py +1 -1
  35. package/top-ppt-html/scripts/smoke_pptx.sh +30 -0
  36. package/top-ppt-html/scripts/sync_runtime.py +22 -25
  37. package/top-ppt-html/scripts/validate_pptx.py +69 -0
  38. package/top-ppt-html/scripts/validate_report.py +309 -10
  39. package/top-ppt-html/assets/examples/2026-09-09-architecture-spectrum.html +0 -3926
  40. package/top-ppt-html/assets/examples/2026-09-09-architecture-spectrum.model.json +0 -168
  41. package/top-ppt-html/assets/examples/2026-09-09-presentation-apple-mono.html +0 -4325
  42. package/top-ppt-html/assets/examples/2026-09-09-presentation-apple-mono.model.json +0 -321
  43. package/top-ppt-html/assets/examples/2026-09-09-presentation-brand-red.html +0 -4325
  44. package/top-ppt-html/assets/examples/2026-09-09-presentation-brand-red.model.json +0 -321
  45. package/top-ppt-html/assets/examples/2026-09-09-research-deep-teal.html +0 -5527
  46. package/top-ppt-html/assets/examples/2026-09-09-research-deep-teal.model.json +0 -914
  47. package/top-ppt-html/assets/examples/2026-09-09-research-indigo-violet.html +0 -5527
  48. package/top-ppt-html/assets/examples/2026-09-09-research-indigo-violet.model.json +0 -914
  49. package/top-ppt-html/assets/examples/2026-09-09-research-warm-sand.html +0 -5527
  50. package/top-ppt-html/assets/examples/2026-09-09-research-warm-sand.model.json +0 -914
  51. package/top-ppt-html/references/design-system-engine.md +0 -235
  52. package/top-ppt-html/references/industry-benchmark.md +0 -105
  53. package/top-ppt-html/references/reform-plan.md +0 -252
  54. package/top-ppt-html/scripts/layout_slots.json +0 -830
@@ -1,48 +1,75 @@
1
- # 图标库(内联 SVG · currentColor · 随主题变色)
1
+ # 图标库(语义选型 · 克制取用)
2
2
 
3
- 全部 24×24、描边风格(stroke 1.8,圆角线帽),用 `currentColor`,自动继承所在元素颜色。
3
+ > **何时读**:需要卡片头 / 列表行首 / 指标角标 / 提示条图标时。
4
+ > **取码**:本节「高频取码」或 `python scripts/extract_snippet.py --task icons`。
5
+ > **完整 SVG 枚举**(60+):`docs/archive/refs/icons-catalog.md`(生成默认**不**预读;仅当高频未覆盖语义时按名查阅)。
4
6
 
5
- > **PPTX 通道**:内联 SVG 图标不跨通道导出。PPTX 侧卡片头用 **accent 小方块路标**(与 HTML `.card__ico` 的 accent 底同语义);要点列表用 accent 实心方块标记(已有)。**不要在模型里期待图标 ID 进 PPT**——路标语义靠 accent 色块 + 标题对齐完成。若某页必须视觉区分类型,用标题前缀(如「数据 ·」「风险 ·」)而不是图标。
7
+ 全部 24×24、描边(stroke 1.8,圆角线帽),`currentColor` 随主题变色。
6
8
 
7
- ## 使用准则(克制而合理 · 先读再用)
9
+ > **PPTX 通道**:内联 SVG 不跨通道导出。PPTX 侧卡片头用 **accent 小方块路标**;要点列表用 accent 实心方块。**不要在模型里期待图标 ID 进 PPT**。若须区分类型,用标题前缀(「数据 ·」「风险 ·」)。
8
10
 
9
- **图标是信息的路标,不是装饰。** 该用的地方用好,不该用的地方一个都别放。
11
+ ## 使用准则(先读再用)
12
+
13
+ **图标是信息路标,不是装饰。**
10
14
 
11
15
  ### 哪里用(四个正当位置)
12
16
 
13
17
  | 位置 | 做法 | 效果 |
14
18
  |------|------|------|
15
- | **卡片头** `.card__ico` | 每张要点卡一个小图标 | 卡片类型一眼可辨,最推荐 |
16
- | **关键列表** `.ul--ico` | 每行行首一个小图标(见 `components.md` 第 7 节) | 清单可扫读,适合 3–5 条的关键列表 |
17
- | **指标卡** `.metric__ico` | 指标卡右上角小图标 | 指标类别区分(规模/效率/质量) |
18
- | **提示条** `.note__ico` | 把 `i` 字母换成真图标 | 结论/警告/信息三类提示 |
19
+ | **卡片头** `.card__ico` | 每张要点卡一个小图标 | 类型一眼可辨(最推荐) |
20
+ | **关键列表** `.ul--ico` | 行首小图标(`components.md` §7) | 3–5 条可扫读 |
21
+ | **指标卡** `.metric__ico` | 右上角小图标 | 规模/效率/质量区分 |
22
+ | **提示条** `.note__ico` | 真图标替代字母 `i` | 结论/警告/信息 |
19
23
 
20
- ### 哪里不用
24
+ ### 禁区(哪里不用)
21
25
 
22
- - **Agenda 大纲**——大编号已是路标,再加图标是噪音
23
- - **表格单元格**——表格靠文字对齐取胜,图标破坏栅格
24
- - **图表内部**——数据系列用色不用图标
25
- - **正文行内**——打断阅读流(引用标记除外)
26
+ - **Agenda 大纲**——大编号已是路标
27
+ - **表格单元格**——破坏栅格对齐
28
+ - **图表内部**——系列用色,不用图标
29
+ - **正文行内**——打断阅读(引用标记除外)
30
+ - **装饰性堆砌**——一屏图标墙、与文案无关的插图风图标
26
31
 
27
- ### 密度与一致性
32
+ ### 尺寸档(唯一合法)
28
33
 
29
- - **每屏 3–8 个图标**;一屏全是图标 = 新噪音;连续两三屏零图标 = 单调,给要点卡补一个。
30
- - **克制 ≠ 不用**:全文零图标的报告会"没有路标",可扫读性差——长报告(≥6 页)至少要点卡(`.card__ico`)或关键列表(`.ul--ico`)有一处图标(校验器 WARN 提醒)。**目标:够用即止,不多不少。**
31
- - **research 模式例外**:图标密度减半(每屏 2–4 个)——咨询版式以 Exhibit 图表与论证结构为视觉主角,图标更克制;`.exhibit` 图表框内不放图标。
32
- - **architecture 模式例外**:主图内不放图标(节点短标签已足够);图标只允许出现在图例区旁(≤2 个)。
33
- - **一套报告只用描边风**(本库全部是),stroke-width 统一 1.8,不混用填充风。
34
- - **尺寸**:`.card__ico` 内 18px;`.ul--ico` 内 17px;`.metric__ico` 20px;行内特殊场景 `width:1em`。
35
- - **对齐**:图标与标题垂直居中(组件类已处理);自定义时 `display:grid;place-items:center`。
34
+ | 场景 | 尺寸 |
35
+ |------|------|
36
+ | 列表行首 `.ul--ico` | **16–18px**(默认 17) |
37
+ | 卡片头 `.card__ico` | **20–24px**(默认 18–20 视主题) |
38
+ | 指标角标 `.metric__ico` | **16–20px** |
39
+ | 行内特例 | `width:1em` |
36
40
 
37
- ### 颜色
41
+ 光学中心对文字 x-height;图文距 `--sp-2`(8px)。同屏同尺寸。校验:`LAYOUT_ICON_SIZE`(∉ {16,18,20,24} → WARN)。
38
42
 
39
- - 不改 `stroke="currentColor"`——颜色由容器决定(`.card__ico` 自动是 accent 底 + accent 图标)。
40
- - 深色收尾章里容器是半透明亮底,图标容器加 `color:var(--text-inv)`。
41
- - spectrum 风格也不给图标单独上色——**彩色只属于数据系列**。
43
+ ### 密度与一致性
42
44
 
43
- ---
45
+ - 每屏 **3–8** 个;research 减半(2–4);architecture 主图内 0,图例旁 ≤2
46
+ - 长报告(≥6 页)至少一处 `.card__ico` 或 `.ul--ico`(否则 WARN)
47
+ - 全篇统一描边风 stroke 1.8;不改 `stroke="currentColor"`;彩色只属于数据系列
44
48
 
45
- ## 数据与图表
49
+ ## 速查:按语义选图标
50
+
51
+ | 语义 | 选用(高频名) |
52
+ |------|----------------|
53
+ | 规模/底座 | 数据库、云/平台、文件夹/资产 |
54
+ | 效率/性能 | 仪表盘/效率、闪电/高效、时钟/时间 |
55
+ | 增长/成果 | 增长/上升、奖章/成果、旗帜/里程碑 |
56
+ | 风险/问题 | 警告、下降/回落 |
57
+ | 治理/安全 | 盾牌/安全、锁/权限 |
58
+ | 口径/规则 | 文档/报告、检查/对勾 |
59
+ | 组织/分工 | 用户/团队、架构/层级 |
60
+ | 流程/血缘 | 分支/流程、循环/飞轮 |
61
+ | 计划/路线 | 日历/计划、罗盘/方向 |
62
+ | 智能/Agent | 芯片/AI、机器人/Agent |
63
+ | 洞察/分析 | 搜索/洞察、灯泡/洞察 |
64
+ | 建设/工具 | 扳手/工具 |
65
+ | 图表语义 | 柱状图、趋势/折线、环形/占比、表格/网格 |
66
+ | 布局 | 拼贴 / 布局 |
67
+ | 清单/条目 | 清单/条目 |
68
+ | 待核实 | 信息(或归档目录「待核实」) |
69
+
70
+ 选型顺序:**语义表 → 高频取码 →**(未覆盖时)归档目录按名复制。
71
+
72
+ ## 高频取码(压缩 SVG · 20)
46
73
 
47
74
  **数据库**
48
75
  ```html
@@ -74,15 +101,6 @@
74
101
  <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M12 15l3.5-5.5"/><path d="M20.2 15a8.5 8.5 0 1 0-16.4 0"/></svg>
75
102
  ```
76
103
 
77
- **漏斗/转化**
78
- ```html
79
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M4 4h16l-6 8v6l-4 2v-8L4 4z"/></svg>
80
- ```
81
-
82
- ---
83
-
84
- ## 增长与经营
85
-
86
104
  **增长/上升**
87
105
  ```html
88
106
  <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M22 7l-8.5 8.5-5-5L2 17"/><path d="M16 7h6v6"/></svg>
@@ -93,35 +111,11 @@
93
111
  <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M22 17l-8.5-8.5-5 5L2 7"/><path d="M16 17h6v-6"/></svg>
94
112
  ```
95
113
 
96
- **成本/财务**
97
- ```html
98
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="8" cy="8" r="6"/><path d="M18.09 10.37A6 6 0 1 1 10.34 18"/><path d="M7 6h1v4"/><path d="m16.71 13.88.7.71-2.82 2.82"/></svg>
99
- ```
100
-
101
- **目标/靶心**
102
- ```html
103
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><circle cx="12" cy="12" r="6"/><circle cx="12" cy="12" r="2"/></svg>
104
- ```
105
-
106
114
  **奖章/成果**
107
115
  ```html
108
116
  <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="8" r="6"/><path d="M15.5 13 17 22l-5-3-5 3 1.5-9"/></svg>
109
117
  ```
110
118
 
111
- **旗帜/里程碑**
112
- ```html
113
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1z"/><path d="M4 22v-7"/></svg>
114
- ```
115
-
116
- **火箭/启动**
117
- ```html
118
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z"/><path d="M12 15l-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z"/><path d="M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0"/><path d="M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5"/></svg>
119
- ```
120
-
121
- ---
122
-
123
- ## 治理与安全
124
-
125
119
  **盾牌/安全**
126
120
  ```html
127
121
  <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/><path d="M9 12l2 2 4-4"/></svg>
@@ -132,26 +126,6 @@
132
126
  <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="11" width="18" height="10" rx="2"/><path d="M7 11V7a5 5 0 0 1 10 0v4"/></svg>
133
127
  ```
134
128
 
135
- **钥匙/密钥**
136
- ```html
137
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="7.5" cy="15.5" r="5.5"/><path d="m21 2-9.6 9.6"/><path d="m15.5 7.5 3 3L22 7l-3-3"/></svg>
138
- ```
139
-
140
- **齿轮/引擎**
141
- ```html
142
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="3"/><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 1 1-4 0v-.09a1.65 1.65 0 0 0-1-1.51 1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 1 1 0-4h.09a1.65 1.65 0 0 0 1.51-1 1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06a1.65 1.65 0 0 0 1.82.33h.01a1.65 1.65 0 0 0 1-1.51V3a2 2 0 1 1 4 0v.09a1.65 1.65 0 0 0 1 1.51h.01a1.65 1.65 0 0 0 1.82-.33l.06.06a2 2 0 1 1 2.83 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82v.01a1.65 1.65 0 0 0 1.51 1H21a2 2 0 1 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z"/></svg>
143
- ```
144
-
145
- **天平/合规**
146
- ```html
147
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M12 3v18"/><path d="M5 21h14"/><path d="M7 7l-4 7a4.5 4.5 0 0 0 8 0L7 7z"/><path d="M17 7l-4 7a4.5 4.5 0 0 0 8 0l-4-7z"/><path d="M5 7h14"/></svg>
148
- ```
149
-
150
- **链接/血缘**
151
- ```html
152
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg>
153
- ```
154
-
155
129
  **检查/对勾**
156
130
  ```html
157
131
  <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M8 12.5l2.5 2.5L16 9.5"/></svg>
@@ -162,74 +136,21 @@
162
136
  <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M10.3 3.9 1.8 18a2 2 0 0 0 1.7 3h17a2 2 0 0 0 1.7-3L13.7 3.9a2 2 0 0 0-3.4 0z"/><path d="M12 9v4M12 17h.01"/></svg>
163
137
  ```
164
138
 
165
- **信息**
166
- ```html
167
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M12 16v-4M12 8h.01"/></svg>
168
- ```
169
-
170
- **眼睛/可视**
171
- ```html
172
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M1 12s4-7 11-7 11 7 11 7-4 7-11 7-11-7-11-7z"/><circle cx="12" cy="12" r="3"/></svg>
173
- ```
174
-
175
- ---
176
-
177
- ## 组织与流程
178
-
179
139
  **用户/团队**
180
140
  ```html
181
141
  <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M17 21v-2a4 4 0 0 0-4-4H7a4 4 0 0 0-4 4v2"/><circle cx="10" cy="7" r="4"/><path d="M23 21v-2a4 4 0 0 0-3-3.87M16 3.13a4 4 0 0 1 0 7.75"/></svg>
182
142
  ```
183
143
 
184
- **单人/角色**
185
- ```html
186
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/></svg>
187
- ```
188
-
189
144
  **架构/层级**
190
145
  ```html
191
146
  <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="2" width="6" height="6" rx="1"/><rect x="2" y="16" width="6" height="6" rx="1"/><rect x="16" y="16" width="6" height="6" rx="1"/><path d="M12 8v4M5 16v-2a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v2"/></svg>
192
147
  ```
193
148
 
194
- **图层/架构**
195
- ```html
196
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2 2 7l10 5 10-5-10-5z"/><path d="M2 17l10 5 10-5"/><path d="M2 12l10 5 10-5"/></svg>
197
- ```
198
-
199
- **网络/节点**
200
- ```html
201
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="18" cy="5" r="3"/><circle cx="6" cy="12" r="3"/><circle cx="18" cy="19" r="3"/><path d="M8.6 10.6 15.4 6.4M8.6 13.4l6.8 4.2"/></svg>
202
- ```
203
-
204
149
  **分支/流程**
205
150
  ```html
206
151
  <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="6" cy="6" r="3"/><circle cx="6" cy="18" r="3"/><circle cx="18" cy="8" r="3"/><path d="M6 9v6M18 11a9 9 0 0 1-9 4"/></svg>
207
152
  ```
208
153
 
209
- **循环/飞轮**
210
- ```html
211
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12a9 9 0 1 1-2.64-6.36"/><path d="M21 3v6h-6"/></svg>
212
- ```
213
-
214
- **刷新/迭代**
215
- ```html
216
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M3 12a9 9 0 0 1 15-6.7L21 8"/><path d="M21 3v5h-5"/><path d="M21 12a9 9 0 0 1-15 6.7L3 16"/><path d="M3 21v-5h5"/></svg>
217
- ```
218
-
219
- **拼图/集成**
220
- ```html
221
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M14 7V4a2 2 0 0 0-4 0v3H7a2 2 0 0 0-2 2v3h3a2 2 0 1 1 0 4H5v3a2 2 0 0 0 2 2h3v-3a2 2 0 1 1 4 0v3h3a2 2 0 0 0 2-2v-3h3a2 2 0 0 0 0-4h-3V9a2 2 0 0 0-2-2h-3z"/></svg>
222
- ```
223
-
224
- ---
225
-
226
- ## 时间与效率
227
-
228
- **时钟/时间**
229
- ```html
230
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M12 6v6l4 2"/></svg>
231
- ```
232
-
233
154
  **日历/计划**
234
155
  ```html
235
156
  <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></svg>
@@ -240,158 +161,16 @@
240
161
  <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M13 2 3 14h7l-1 8 10-12h-7l1-8z"/></svg>
241
162
  ```
242
163
 
243
- **罗盘/方向**
244
- ```html
245
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><polygon points="16.24 7.76 14.12 14.12 7.76 16.24 9.88 9.88 16.24 7.76"/></svg>
246
- ```
247
-
248
- ---
249
-
250
- ## 文档与工具
251
-
252
164
  **文档/报告**
253
165
  ```html
254
166
  <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6z"/><path d="M14 2v6h6M16 13H8M16 17H8M10 9H8"/></svg>
255
167
  ```
256
168
 
257
- **文件夹/资产**
258
- ```html
259
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M4 20h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2z"/></svg>
260
- ```
261
-
262
169
  **搜索/洞察**
263
170
  ```html
264
171
  <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/></svg>
265
172
  ```
266
173
 
267
- **扳手/工具**
268
- ```html
269
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"/></svg>
270
- ```
271
-
272
- **灯泡/洞察**
273
- ```html
274
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M9 18h6M10 22h4"/><path d="M12 2a7 7 0 0 0-4 12.7c.6.5 1 1.2 1 2V17h6v-.3c0-.8.4-1.5 1-2A7 7 0 0 0 12 2z"/></svg>
275
- ```
276
-
277
- **书签/收藏**
278
- ```html
279
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z"/></svg>
280
- ```
281
-
282
- **编辑/撰写**
283
- ```html
284
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z"/></svg>
285
- ```
286
-
287
174
  ---
288
175
 
289
- ## 平台与智能
290
-
291
- **云/平台**
292
- ```html
293
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M18 10h-1.26A8 8 0 1 0 9 20h9a5 5 0 0 0 0-10z"/></svg>
294
- ```
295
-
296
- **芯片/AI**
297
- ```html
298
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="4" y="4" width="16" height="16" rx="2"/><rect x="9" y="9" width="6" height="6"/><path d="M9 1v3M15 1v3M9 20v3M15 20v3M1 9h3M1 15h3M20 9h3M20 15h3"/></svg>
299
- ```
300
-
301
- **机器人/Agent**
302
- ```html
303
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="4" y="8" width="16" height="12" rx="2"/><path d="M12 8V4M8 4h8"/><circle cx="9" cy="14" r="1"/><circle cx="15" cy="14" r="1"/><path d="M9 18h6"/></svg>
304
- ```
305
-
306
- **筛选/过滤**
307
- ```html
308
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M22 3H2l8 9.46V19l4 2v-8.54L22 3z"/></svg>
309
- ```
310
-
311
- **加号/新增**
312
- ```html
313
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M12 8v8M8 12h8"/></svg>
314
- ```
315
-
316
- **消息/协同**
317
- ```html
318
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/></svg>
319
- ```
320
-
321
- ---
322
-
323
- ## 图表语义 / 布局 / 待核实
324
-
325
- **待核实/待确认**(`.flagbar` / `.tbd-legend` 专用,与"警告"区分:警告=风险,此=待补)
326
- ```html
327
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"/><path d="M12 17h.01"/></svg>
328
- ```
329
-
330
- **流向 / 桑基**
331
- ```html
332
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M4 6h5c4 0 4 12 8 12h3"/><path d="M4 18h5c4 0 4-12 8-12h3"/><path d="M17 3l3 3-3 3M17 15l3 3-3 3"/></svg>
333
- ```
334
-
335
- **斜率 / 升降对比**
336
- ```html
337
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M4 19V5M20 19V5"/><path d="M6 15 18 8"/><path d="M6 11 18 16"/></svg>
338
- ```
339
-
340
- **哑铃 / 前后对比**
341
- ```html
342
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M4 12h16"/><circle cx="6" cy="12" r="2.4"/><circle cx="18" cy="12" r="2.4"/></svg>
343
- ```
344
-
345
- **分布 / 点图**
346
- ```html
347
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M3 12h18"/><circle cx="7" cy="8" r="1.6"/><circle cx="12" cy="12" r="1.6"/><circle cx="16" cy="7" r="1.6"/><circle cx="19" cy="15" r="1.6"/></svg>
348
- ```
349
-
350
- **目标线 / 子弹图**
351
- ```html
352
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="8" width="18" height="8" rx="2"/><path d="M16 5v14"/></svg>
353
- ```
354
-
355
- **图片 / 素材图**(也是**配图占位** `.media__ph` 的标准图标——占位块统一用这一个)
356
- ```html
357
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="4" width="18" height="16" rx="2"/><circle cx="8.5" cy="9.5" r="1.6"/><path d="m4 17 5-5 4 4 3-3 4 4"/></svg>
358
- ```
359
- > 占位块内**不要**给 svg 加 `class="f-*"`:`.media__ph svg` 已用 `stroke:var(--accent); fill:none` 随风格/主题自动取色(写成 `fill` 实心会在深色主题下发灰)。
360
-
361
- **拼贴 / 布局**
362
- ```html
363
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="8" height="10" rx="1.5"/><rect x="13" y="3" width="8" height="5" rx="1.5"/><rect x="13" y="10" width="8" height="11" rx="1.5"/><rect x="3" y="15" width="8" height="6" rx="1.5"/></svg>
364
- ```
365
-
366
- **清单 / 条目**
367
- ```html
368
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M9 6h11M9 12h11M9 18h11"/><path d="M4 6h.01M4 12h.01M4 18h.01"/></svg>
369
- ```
370
-
371
- **构成 / 马赛克**
372
- ```html
373
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="4" width="10" height="16" rx="1.5"/><rect x="13" y="4" width="8" height="9" rx="1.5"/><rect x="13" y="13" width="8" height="7" rx="1.5"/></svg>
374
- ```
375
-
376
- ---
377
-
378
- ## 速查:按语义选图标
379
-
380
- | 语义 | 图标 |
381
- |------|------|
382
- | 规模/底座 | 数据库、云、文件夹 |
383
- | 效率/性能 | 仪表盘、闪电、时钟 |
384
- | 增长/成果 | 增长、奖章、火箭、旗帜 |
385
- | 风险/问题 | 警告、下降 |
386
- | 治理/安全 | 盾牌、锁、钥匙、天平 |
387
- | 口径/规则 | 文档、天平、书签 |
388
- | 组织/分工 | 用户、单人、架构 |
389
- | 流程/血缘 | 分支、链接、循环、刷新、流向 |
390
- | 计划/路线 | 日历、罗盘、旗帜 |
391
- | 智能/Agent | 芯片、机器人 |
392
- | 洞察/分析 | 搜索、灯泡、眼睛 |
393
- | 建设/工具 | 扳手、齿轮、拼图 |
394
- | 图表语义 | 柱状图、趋势、环形、表格、分布、斜率、哑铃、构成 |
395
- | 布局/图片 | 拼贴、图片、全幅 |
396
- | 待核实/待补 | 待核实(问号圈) |
397
- | 清单/条目 | 清单 |
176
+ > 包内 `icons.md` 保持 REQUIRED(语义 + 禁区 + 尺寸 + 高频码)。完整枚举见 `docs/archive/refs/icons-catalog.md`;默认生成**不**预读归档。
@@ -107,11 +107,12 @@ fill = Body 区被内容覆盖的估算面积 / Body 区面积
107
107
 
108
108
  | 模式 | 目标 | 过低(空) | 过高(爆) |
109
109
  |------|------|------------|------------|
110
- | presentation | 62–78% | <55% → 补从件/并页/改 P2/P3 | >85% → 拆页或升密表 |
110
+ | presentation | 58–75% | <50% → 补从件/并页(**休止页豁免**) | >85% → 拆页或升密表 |
111
111
  | research | 70–85% | <60% | >90% |
112
112
  | architecture | 75–90%(图) | <65% | 文字挤图 |
113
113
 
114
- **空的合法来源只有三种**:章节幕 / 金句 / 收尾 CTA。其余「半空页」= 不合格。
114
+ **intentional whitespace(有意留白)**:封面 / 章节幕 / 金句 / 收尾 CTA——合法空,不按 underfill / FILL_LOW 惩罚。
115
+ **underfill**:内容页无故半空 = 不合格(补从件或并页)。勿用 logo/装饰填空。
115
116
 
116
117
  ---
117
118
 
@@ -295,9 +296,18 @@ fill = Body 区被内容覆盖的估算面积 / Body 区面积
295
296
  | V3 大数+佐证 | **P3** |
296
297
  | V4 双图对照 | **P4** |
297
298
 
298
- - A presentation:默认 P1–P4、P6、P10。
299
- - B research:P5、P7、P8 + 密表;仍禁双大件。
300
- - C architecture:P9 为主;结构必须真边(见 infographics-structure)。
299
+ ### Mode A(presentation)骨架分层
300
+
301
+ | 层级 | 骨架 | 说明 |
302
+ |------|------|------|
303
+ | **主力 primary** | **P1–P4**、**P6**、**P10** | 默认轮换;与 V1–V4 对齐;画廊/示例优先展示 |
304
+ | **常用扩展** | P5 | 三卡并列;非默认轮换,意图命中可用 |
305
+ | **次级 secondary** | **P7–P9、P11–P12** | 仍合法且文档保留;A 下仅当 research 密表 / 全幅结构 / 一主两从等意图命中再用——**勿作 A 默认轮换** |
306
+
307
+ - B research:主力 P5、P7、P8 + 密表;仍禁双大件。
308
+ - C architecture:主力 P9(及 P10/P11);结构必须真边(见 infographics-structure)。
309
+
310
+ > 机器可读:`layoutSystem.modeSkels`(`scripts/layout-constants.json`)。
301
311
 
302
312
  ---
303
313
 
@@ -312,4 +322,4 @@ fill = Body 区被内容覆盖的估算面积 / Body 区面积
312
322
  - [ ] Annotation 只有 so-what/口径/页码
313
323
  - [ ] `LAYOUT_*` 全 PASS
314
324
 
315
- > 整改与实现细节见 `reform-plan.md` §四-b。间距与色 token 见 `design-system.md`。
325
+ > 门禁与失败修复见 `layout-constants.qualityGates` 与 `failure-modes.md`。间距与色 token 见 `design-system.md`。
@@ -37,7 +37,7 @@
37
37
  | 正文字号 | 17–18px(投影够大) | **14–15px**(密排) | 默认字号(文字退到图注级) |
38
38
  | h1 字号(clamp 上限) | 48px | **34px** | 48px(图才是主角) |
39
39
  | 每屏主张数 | 1 个主张 | 1 个结论 + 3–6 组论据 | 1 张主图 |
40
- | 单页文字预算 | ≤1500 字 | **≤3200 字** | ≤400 字(图注级) |
40
+ | 单页文字预算 | ≤1800 字(预警·密页可偏密) | **≤3200 字** | ≤400 字(图注级) |
41
41
  | 并列单元上限 | 8 | **12** | 节点 ≤24 / 泳道行 ≤6 步 |
42
42
  | 表格行数上限 | 8 | **16**(密表) | —(表转图) |
43
43
  | 每页图表数 | **按复杂度定面积**(V1–V4;简单图禁全幅) | 1–2 个(取尺寸下限) | 1 张全幅主图(宽 ≥85% 版心) |
@@ -56,7 +56,7 @@
56
56
 
57
57
  **密度设计三原理**(为什么这样分):
58
58
 
59
- 1. **A 低密度**:投影距离 + 演讲节奏决定"一屏一主张"。观众同时只能处理一个视觉重心;任何第二重心(双图、满屏小字)都会稀释主张。留白不是浪费,是投影可读性的刚需。
59
+ 1. **A 投影契约**:一屏一主张 + 投影可读。留白服务可读,不是「删证据变疏朗」;主张页可用多卡/列表承载证据,装不下就拆跟进页。禁第二视觉重心(双大图、满屏小字墙)。
60
60
  2. **B 高密度**:读者坐下来深读,视线按"F/Z 形"扫描页面,**单位版面的信息承载力就是生产力**——咨询机构的横向 A4 每页承载 600–900 字 + 一图/一表仍有呼吸感,靠的是行宽控制(34–40 字)、密排组件(Exhibit/密表/矩阵)与论证结构(每页标题即结论),而不是无差别缩小字号。
61
61
  3. **C 图形密度**:评审场景读者要的是"结构在不在、链路通不通",句子是噪音。文字退到图注级(≤400 字/页),图形密度拉满(节点 ≤24、图宽 ≥85% 版心),**1–3 张图即可成篇**——页数越少,评审越高效。
62
62
 
@@ -74,14 +74,19 @@
74
74
 
75
75
  ## 模式 A · 演示汇报 `presentation`(assets/templates/presentation.html)
76
76
 
77
- 台上讲给人听,3 秒抓住主张。要点回顾:
77
+ 台上讲给人听,3 秒抓住主张。工艺清单 → `presentation-craft.md`;默认面 → `default-surface.md`。
78
78
 
79
- - 字号大(正文 17–18px)、版心 1400px、band--fit 居中节奏、大留白
80
- - 高度预算 1080p ≈ 830px;单页文字 ≤1500、并列单元 ≤8、表格 ≤8 行
81
- - 图表大(环形≥140px、柱/折线≥200px 高);动效克制
82
- - 节奏休止:连续数据页之间可插 1–2 处「大引言/金句页」(`components.md` §39,**主题一致强调带** `band--accent`/`band--accent--solid`,一句话主张);**全文 1–2 处即可,多了廉价**
83
- - **收尾页统一用 `band--accent`**(accent-soft 底)——不再用 `band--deep`:后者在浅色主题下会渲染成深色页("浅色模式末尾出现深色页"的根因)。`band--deep` 仅作显式反相页,全文 ≤1 处且不得作末页(校验器检查)。
84
- - 版式从 `components.md` 混排版式 A–C(左图右文 / 表图并排 / 2×2 四象限)挑
79
+ 要点回顾:
80
+
81
+ - **标题 = 主张/行动句**(action title),禁纯话题标签(「现状分析」等);可短于 research,仍须是判断
82
+ - 字号大(正文 17–18px)、版心 1400px、band--fit 居中节奏、大气留白(休止页合法空 ≠ 内容页 underfill)
83
+ - 高度预算 1080p ≈ 830px;单页文字/单元预算是**溢出预警**(约 ≤1800 字 / ≤8 单元 / 表 ≤8 行)——**字多且结构合理(卡/列表)允许偏密**;超限先重构→拆页→换形态,**禁为疏朗删实质**(见 `presentation-craft.md` 长文节)
84
+ - **一屏一主张**:证据不够放时用次要卡/列表或**跟进页**,不砍 so-what / 证据
85
+ - 图表:8 核图优先;大而克制;简单图禁全幅;极偏禁 donut→V3;**motion = none**;多样性下限不变
86
+ - 主力版式 **V1–V4 / P1–P4 + P6/P10**;扩展 P5;**次级** P7–P9/P11–P12;advanced 图按需(不预读 extended)
87
+ - 节奏休止:连续数据页之间可插 1–2 处金句页(`components.md` §39,`band--accent`/`band--accent--solid`);全文 1–2 处即可
88
+ - **收尾页用 `band--accent`**;`band--deep` 仅显式反相且不作末页(校验器检查)
89
+ - 交付:`--strict` 隐含 `--layout-qa`
85
90
 
86
91
  ---
87
92
 
@@ -101,7 +106,7 @@
101
106
  | band padding | 56–116px | **40–80px** |
102
107
  | 表格行高 | 17px 20px | **13px 16px**(密度↑) |
103
108
  | 表格行数上限 | 8 | **16**(密表) |
104
- | 单页文字预算 | 1500 | **3200** |
109
+ | 单页文字预算 | 1800 预警 | **3200** |
105
110
 
106
111
  ### 页面解剖(research:三必备 + 两按需)
107
112
 
@@ -139,7 +144,7 @@
139
144
  5. **双栏正文** `.cols-2`:长论述两栏排版,每栏行宽 ≈ 34–40 字;**三栏** `.cols-3`:并列短论点,每栏 ≤150 字。
140
145
  6. **脚注式引用**:页内关键数据 `[n]` 上标;Exhibit 来源行走组件自带;**独立 `.footnote` 只在页内有关键外部数据且无 Exhibit 时才加**;文末仍有完整参考资料。
141
146
  7. **更密的表格**:行数上限 8→16;允许 `--fs-xs` 的表格说明行。
142
- 8. **卡片可带 4–5 条列表**;并列单元上限 8→12;单页文字预算 1500→3200。
147
+ 8. **卡片可带 4–5 条列表**;并列单元上限 8→12;单页文字预算 1800→3200。
143
148
  9. **左侧章节导航轨**:**默认不启用**;仅 ≥10 章深度白皮书且用户明确要目录常驻时才加 `.rail`(组件见 `components.md` §36c)。
144
149
  10. 图表取尺寸下限即可(不必放大),但**不允许低于下限**;多系列图表常见(用 `f-c1~c5`)。
145
150