@topmindspace/tms-skills 2.0.2 → 2.1.1

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 (32) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.md +1 -1
  3. package/package.json +1 -1
  4. package/top-ppt-html/assets/examples/2026-09-09-architecture-graphite-dark.html +72 -19
  5. package/top-ppt-html/assets/examples/2026-09-09-architecture-spectrum.html +72 -19
  6. package/top-ppt-html/assets/examples/2026-09-09-presentation-apple-mono.html +72 -19
  7. package/top-ppt-html/assets/examples/2026-09-09-presentation-brand-red.html +72 -19
  8. package/top-ppt-html/assets/examples/2026-09-09-presentation-business-blue.html +72 -19
  9. package/top-ppt-html/assets/examples/2026-09-09-research-deep-teal.html +72 -19
  10. package/top-ppt-html/assets/examples/2026-09-09-research-indigo-violet.html +72 -19
  11. package/top-ppt-html/assets/examples/2026-09-09-research-mckinsey.html +72 -19
  12. package/top-ppt-html/assets/examples/2026-09-09-research-warm-sand.html +72 -19
  13. package/top-ppt-html/assets/pptx-export.js +2 -2
  14. package/top-ppt-html/assets/style-gallery.html +56 -26
  15. package/top-ppt-html/assets/templates/architecture.html +72 -19
  16. package/top-ppt-html/assets/templates/engine.css +70 -17
  17. package/top-ppt-html/assets/templates/presentation.html +72 -19
  18. package/top-ppt-html/assets/templates/research.html +72 -19
  19. package/top-ppt-html/assets/theme-overview-architecture.png +0 -0
  20. package/top-ppt-html/assets/theme-overview-presentation.png +0 -0
  21. package/top-ppt-html/assets/theme-overview-research.png +0 -0
  22. package/top-ppt-html/assets/theme-overview.png +0 -0
  23. package/top-ppt-html/package-lock.json +34 -2
  24. package/top-ppt-html/package.json +7 -2
  25. package/top-ppt-html/references/design-system.md +13 -6
  26. package/top-ppt-html/references/styles.md +60 -26
  27. package/top-ppt-html/references/tech-design.md +1 -1
  28. package/top-ppt-html/scripts/audit_styles.py +59 -1
  29. package/top-ppt-html/scripts/layout-constants.json +71 -3
  30. package/top-ppt-html/scripts/layout_slots.json +1 -1
  31. package/top-ppt-html/scripts/model-schema.json +1 -1
  32. package/top-ppt-html/scripts/regression.py +17 -16
@@ -45,24 +45,26 @@
45
45
  .preset.sel .meta__pick{background:#1a73e8;color:#fff;border-color:#1a73e8}
46
46
 
47
47
  /* ── 预览区(每张卡用自己的变量渲染当前模式的迷你版式) ── */
48
- .pv{padding:20px 22px 18px;background:var(--pbg);color:var(--ptxt);font-family:var(--pfont);
49
- border-bottom:1px solid var(--pbd)}
50
- .pv__bar{display:flex;align-items:center;gap:9px;margin-bottom:14px}
48
+ .pv{padding:20px 22px 18px;background:var(--pbg);color:var(--ptxt);font-family:var(--pfont-body);
49
+ border-bottom:1px solid var(--pbd);letter-spacing:var(--pletter,0)}
50
+ .pv__bar{display:flex;align-items:center;gap:9px;margin-bottom:calc(14px * var(--pgap,1))}
51
51
  .pv__mark{width:24px;height:24px;border-radius:var(--prad,8px);background:var(--pa);color:var(--paon);
52
52
  display:grid;place-items:center;font-size:10px;font-weight:700}
53
- .pv__bart{font-size:12.5px;font-weight:600}
53
+ .pv__bart{font-size:12.5px;font-weight:600;font-family:var(--pfont-display)}
54
54
  .pv__barsub{margin-left:auto;display:flex;gap:6px;align-items:center}
55
55
  .pv__dot{width:12px;height:12px;border-radius:50%;border:1px solid var(--pbd)}
56
56
  .pv__pager{font-size:9.5px;color:var(--ptxt2);border:1px solid var(--pbd);border-radius:999px;
57
57
  padding:2px 7px;font-weight:600}
58
58
 
59
- .pv__eyebrow{font-size:10px;font-weight:700;letter-spacing:.11em;text-transform:uppercase;
59
+ .pv__eyebrow{font-size:10px;font-weight:700;letter-spacing:var(--peye,.11em);text-transform:uppercase;
60
60
  color:var(--pa);margin-bottom:6px}
61
- .pv__h{font-size:22px;line-height:1.18;letter-spacing:-.02em;font-weight:700;margin-bottom:14px}
61
+ .pv__h{font-size:calc(22px * var(--pscale,1));line-height:1.18;letter-spacing:var(--pletter,-.02em);
62
+ font-weight:var(--pw,700);margin-bottom:calc(14px * var(--pgap,1));font-family:var(--pfont-display)}
62
63
 
63
64
  /* presentation 迷你件 */
64
- .pv__metric{display:flex;gap:16px;margin-bottom:12px}
65
- .pv__metric div b{font-size:26px;font-weight:700;letter-spacing:-.03em;color:var(--pa);display:block;line-height:1}
65
+ .pv__metric{display:flex;gap:calc(16px * var(--pgap,1));margin-bottom:12px}
66
+ .pv__metric div b{font-size:calc(26px * var(--pscale,1));font-weight:700;letter-spacing:var(--pletter,-.03em);
67
+ color:var(--pa);display:block;line-height:1;font-family:var(--pfont-display)}
66
68
  .pv__metric div span{font-size:10px;color:var(--ptxt2)}
67
69
  .pv__bars{display:flex;align-items:flex-end;gap:8px;height:56px}
68
70
  .pv__bars i{flex:1;border-radius:5px 5px 0 0;background:var(--ps3)}
@@ -88,7 +90,8 @@
88
90
  background:var(--pas);border-radius:0 6px 6px 0;padding:6px 10px;margin-bottom:10px}
89
91
  .pv__swK{font-size:8.5px;font-weight:700;letter-spacing:.1em;color:var(--pa);flex:none}
90
92
  .pv__swV{font-size:10px;font-weight:500;color:var(--ptxt);line-height:1.5}
91
- .pv__cols{column-count:2;column-gap:14px;font-size:9.5px;color:var(--ptxt2);line-height:1.6}
93
+ .pv__cols{column-count:2;column-gap:calc(14px * var(--pgap,1));font-size:9.5px;color:var(--ptxt2);
94
+ line-height:var(--plh,1.6)}
92
95
  .pv__cols p{margin-bottom:5px;break-inside:avoid-column}
93
96
  .pv__cols b{color:var(--ptxt)}
94
97
 
@@ -120,11 +123,11 @@
120
123
  border-bottom:1px solid var(--pbd)}
121
124
  .dk__tag{font-size:10px;font-weight:700;letter-spacing:.1em;color:var(--dtxt2);
122
125
  border:1px solid var(--dbd);border-radius:999px;padding:3px 9px}
123
- .dk__h{font-size:14px;font-weight:700;color:var(--dtxt);font-family:var(--pfont)}
126
+ .dk__h{font-size:14px;font-weight:700;color:var(--dtxt);font-family:var(--pfont-display)}
124
127
  .dk__bars{display:flex;align-items:flex-end;gap:4px;height:26px;margin-left:auto}
125
128
  .dk__bars i{width:10px;border-radius:3px 3px 0 0;background:var(--ds3)}
126
129
  .dk__bars i.a{background:var(--da)}
127
- .dk__num{font-size:17px;font-weight:700;color:var(--da);font-family:var(--pfont)}
130
+ .dk__num{font-size:17px;font-weight:700;color:var(--da);font-family:var(--pfont-display)}
128
131
 
129
132
  /* 卡底说明 */
130
133
  .meta{padding:16px 22px 18px;background:#fff}
@@ -208,7 +211,7 @@ var CONT = {"pad":{"card":0.18,"panel":0.2,"cell":0.08,"band":0.16,"soWhat":0.16
208
211
  var REG = {"bar":{"html":"svg-bars","pptx":"native","nativeType":"bar","dataTable":"notes","min":{"vbHeightMin":160}},"hbar":{"html":"svg-hbars","pptx":"native","nativeType":"bar","dataTable":"notes","min":{"vbHeightMin":100}},"stack":{"html":"svg-stack","pptx":"native","nativeType":"bar","dataTable":"notes","min":{"vbHeightMin":160},"nativeOpt":{"barGrouping":"stacked"}},"stackline":{"html":"svg-stackline","pptx":"native","nativeType":"bar","dataTable":"notes","min":{"vbHeightMin":40},"nativeOpt":{"barGrouping":"percentStacked"}},"line":{"html":"svg-line","pptx":"native","nativeType":"line","dataTable":"notes","min":{"vbHeightMin":160}},"dualline":{"html":"svg-dualline","pptx":"native","nativeType":"line","dataTable":"notes","min":{"vbHeightMin":160}},"area":{"html":"svg-area","pptx":"native","nativeType":"area","dataTable":"notes","min":{"vbHeightMin":160}},"donut":{"html":"svg-donut","pptx":"native","nativeType":"doughnut","dataTable":"notes","min":{"pxWidthMin":140}},"multidonut":{"html":"svg-mdonut","pptx":"native","nativeType":"doughnut","dataTable":"notes","min":{"pxWidthMin":140}},"pie":{"html":"svg-pie","pptx":"native","nativeType":"pie","dataTable":"notes","min":{"pxWidthMin":140}},"radar":{"html":"svg-radar","pptx":"native","nativeType":"radar","dataTable":"notes","min":{"pxWidthMin":220}},"scatter":{"html":"svg-scatter","pptx":"native","nativeType":"scatter","dataTable":"notes","min":{"vbHeightMin":180}},"bubble":{"html":"svg-bubble","pptx":"native","nativeType":"bubble","dataTable":"notes","min":{"vbHeightMin":180}},"waterfall":{"html":"svg-wf","pptx":"native","nativeType":"bar","dataTable":"notes","min":{"vbHeightMin":170},"nativeTrick":"stacked+hiddenBase+connector"},"gauge":{"html":"svg-gauge","pptx":"native","nativeType":"doughnut","dataTable":"notes","min":{"pxWidthMin":180},"nativeTrick":"doughnut+firstSliceAng+hiddenRemainder"},"pareto":{"html":"svg-pareto","pptx":"native","nativeType":"bar","dataTable":"notes","min":{"vbHeightMin":180},"nativeTrick":"multiType+bar+line"},"gantt":{"html":"svg-gantt","pptx":"shape","dataTable":"notes","min":{"vbHeightMin":130},"path":{"forbidPresetShapes":true}},"vsbar":{"html":"svg-vsbar","pptx":"shape","dataTable":"notes","min":{"vbHeightMin":100},"path":{"forbidPresetShapes":true}},"progress":{"html":"svg-progress","pptx":"shape","dataTable":"notes","min":{"vbHeightMin":100},"path":{"forbidPresetShapes":true}},"sparkline":{"html":"svg-spark","pptx":"shape","dataTable":"off","min":{"vbHeightMin":20},"path":{"forbidPresetShapes":true}},"funnel":{"html":"svg-funnel","pptx":"shape","dataTable":"notes","min":{"vbHeightMin":160},"path":{"minSamplePoints":8,"forbidPresetShapes":true}},"treemap":{"html":"svg-treemap","pptx":"shape","dataTable":"appendix","min":{"vbHeightMin":170},"path":{"forbidPresetShapes":true}},"marimekko":{"html":"svg-marimekko","pptx":"shape","dataTable":"appendix","min":{"vbHeightMin":160},"path":{"forbidPresetShapes":true}},"boxplot":{"html":"svg-boxplot","pptx":"shape","dataTable":"appendix","min":{"vbHeightMin":180},"path":{"forbidPresetShapes":true}},"network":{"html":"svg-network","pptx":"shape","dataTable":"appendix","min":{"vbHeightMin":200},"path":{"forbidPresetShapes":true}},"sankey":{"html":"svg-sankey","pptx":"shape","dataTable":"appendix","min":{"vbHeightMin":200},"path":{"minSamplePoints":16,"trackBothEdges":true,"forbidPresetShapes":true}},"streamgraph":{"html":"svg-stream","pptx":"shape","dataTable":"appendix","min":{"vbHeightMin":160},"path":{"minSamplePoints":24,"trackBothEdges":true,"forbidPresetShapes":true}},"slope":{"html":"svg-slope","pptx":"shape","dataTable":"notes","min":{"vbHeightMin":180},"path":{"forbidPresetShapes":true}},"dumbbell":{"html":"svg-dumbbell","pptx":"shape","dataTable":"notes","min":{"vbHeightMin":160},"path":{"forbidPresetShapes":true}},"lollipop":{"html":"svg-lollipop","pptx":"shape","dataTable":"notes","min":{"vbHeightMin":140},"path":{"forbidPresetShapes":true}},"dotplot":{"html":"svg-dotplot","pptx":"shape","dataTable":"notes","min":{"vbHeightMin":120},"path":{"forbidPresetShapes":true}},"bulletchart":{"html":"svg-bullet","pptx":"shape","dataTable":"notes","min":{"vbHeightMin":140},"path":{"forbidPresetShapes":true}},"waffle":{"html":"svg-waffle","pptx":"shape","dataTable":"notes","min":{"vbHeightMin":160},"path":{"forbidPresetShapes":true}},"radialbar":{"html":"svg-radialbar","pptx":"shape","dataTable":"notes","min":{"pxWidthMin":200},"path":{"minSamplePoints":16,"forbidPresetShapes":true}},"rose":{"html":"svg-rose","pptx":"shape","dataTable":"notes","min":{"pxWidthMin":180},"path":{"minSamplePoints":16,"forbidPresetShapes":true}},"candlestick":{"html":"svg-candle","pptx":"shape","dataTable":"appendix","min":{"vbHeightMin":180},"path":{"forbidPresetShapes":true}}};
209
212
  var DEEP = {"triggers":["高保真","1:1","一比一","精确还原","按图还原","正式交付","不能偏移","像素级","严格对照","逐页验收"],"complexCharts":["sankey","streamgraph","treemap","marimekko","boxplot","network","rose","radialbar","candlestick","funnel"],"checks":{"anchors":true,"containerOverflow":true,"renderCompare":true,"manifest":true},"renderCompare":{"engine":"soffice","fallback":"powerpoint-com","skipIfMissing":true,"dpi":96}};
210
213
  var IMG = {"layouts":["full","half","bleed","grid","compare","wall"],"multiLayouts":["grid","compare","wall"],"fitEnum":["cover","contain"],"fitDefault":"cover","formats":["png","jpeg","jpg","webp","svg"],"ratioDefault":{"full":"3:1","half":"4:3","bleed":"21:9","grid":"4:3","compare":"4:3","wall":"1:1"},"ratioCssClass":{"full":"media--r3-1","half":"media--r4-3","bleed":"media--r21-9","grid":"media--r4-3","compare":"media--r4-3","wall":"media--r1-1"},"recommendedSizePx":{"full":"2400×800","half":"1400×1050","bleed":"2560×1100","grid":"900×675","compare":"1400×1050","wall":"480×480"},"maxInlineBytes":1572864,"maxTotalInlineBytes":8388608,"maxPerPage":6,"placeholderLabel":"配图占位","placeholderHintPrefix":"建议 ","placeholderHintSuffix":"px","zeroExternal":true,"qualityRule":"位图优先提供 ≥2× 显示尺寸;截图用 16:9 或 4:3 锁定比例;数据图不要用截图(应用内联 SVG 图表,可随主题变色)。"};
211
- var LAYOUT_SLOTS = {"version":"9.0","pageTypes":{"points":{"mode":["presentation","research","architecture"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":".grid.g-2 / .card / .ul","pptx":"points columns","minUnits":1},{"id":"annotation","role":"annotation","required":false,"html":".sowhat / .note","pptx":"soWhatBar / footnoteLine"}]},"metrics":{"mode":["presentation","research"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":".metric","pptx":"metric row","minUnits":4},{"id":"annotation","role":"annotation","required":false,"html":"口径行 / .sowhat","pptx":"footnoteLine / soWhatBar"}]},"kpi":{"mode":["presentation","research"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"hero","role":"primary","required":true,"html":".t-metric hero","pptx":"hero number"},{"id":"metrics","role":"secondary","required":false,"html":".metric","pptx":"support metrics"},{"id":"annotation","role":"annotation","required":false,"html":".sowhat / .note","pptx":"soWhatBar"}]},"exhibit":{"mode":["research","presentation"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead / .exhibit__hd","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":"svg[data-chart] / .exhibit","pptx":"nativeChart | shapeChart","channel":"registry"},{"id":"secondary","role":"secondary","required":false,"html":"要点列表","pptx":"side bullets"},{"id":"annotation","role":"annotation","required":true,"html":".exhibit__src / .sowhat","pptx":"footnoteLine / soWhatBar / notes"}]},"split":{"mode":["presentation","research","architecture"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"left","role":"primary","required":true,"html":"左区(points/table/image/chart)","pptx":"left zone"},{"id":"right","role":"secondary","required":true,"html":"右区(points/table/image/chart)","pptx":"right zone"},{"id":"annotation","role":"annotation","required":false,"html":".sowhat / .note","pptx":"soWhatBar"}]},"table":{"mode":["presentation","research"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":".tbl-wrap table","pptx":"addTable","maxRows":{"presentation":8,"research":16}},{"id":"annotation","role":"annotation","required":false,"html":".sowhat / .note","pptx":"soWhatBar / footnoteLine"}]},"bar":{"mode":["presentation","research","architecture"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":"svg[data-chart]","pptx":"nativeChart | shapeChart","channel":"registry"},{"id":"annotation","role":"annotation","required":true,"html":"note / dataTable","pptx":"footnoteLine / notes / inline table"}]},"donut":{"mode":["presentation","research"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":"svg[data-chart=donut]","pptx":"addChart doughnut"},{"id":"annotation","role":"annotation","required":false,"html":"中心合计 / 图例 / .note","pptx":"center label / legend / notes"}]},"twocol":{"mode":["research"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":".cols-2","pptx":"two text columns"},{"id":"annotation","role":"annotation","required":false,"html":".sowhat","pptx":"soWhatBar"}]},"threecol":{"mode":["research"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":".cols-3","pptx":"three text columns"},{"id":"annotation","role":"annotation","required":false,"html":".sowhat","pptx":"soWhatBar"}]},"halftable":{"mode":["research"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":"左表","pptx":"addTable left"},{"id":"secondary","role":"secondary","required":true,"html":"右图","pptx":"chart right"},{"id":"annotation","role":"annotation","required":false,"html":".sowhat","pptx":"soWhatBar"}]},"matrix":{"mode":["research"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":".matrix","pptx":"matrix cells"},{"id":"annotation","role":"annotation","required":false,"html":".sowhat","pptx":"soWhatBar"}]},"comparison":{"mode":["presentation","research"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"left","role":"primary","required":true,"html":"左面板","pptx":"left panel"},{"id":"right","role":"secondary","required":true,"html":"右面板","pptx":"right panel"},{"id":"annotation","role":"annotation","required":false,"html":"verdict / .sowhat","pptx":"verdict bar"}]},"quote":{"mode":["presentation","research"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":"金句正文","pptx":"quote text"}]},"timeline":{"mode":["presentation","research"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":".tl","pptx":"timeline axis"}]},"steps":{"mode":["presentation","architecture"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":".steps","pptx":"step row"}]},"cards":{"mode":["presentation","research"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":".card grid","pptx":"card grid"}]},"heatmap":{"mode":["presentation","research"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":".heat","pptx":"heat cells"}]},"bullet":{"mode":["presentation","research"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":".bul","pptx":"bullet rows"}]},"pyramid":{"mode":["presentation","research"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":".pyr","pptx":"pyramid layers"}]},"image":{"mode":["presentation","research","architecture"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":".media*","pptx":"imageLayoutShapes"}]},"diagram":{"mode":["architecture","research"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":".arch / layers","pptx":"layered nodes + edges","maxNodes":24,"maxLayers":4},{"id":"annotation","role":"annotation","required":false,"html":".arch__legend / .note","pptx":"legend chips / notes"}]},"lane":{"mode":["architecture","research"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":".lane","pptx":"lanes + steps"}]},"sankey":{"mode":["research","architecture"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":"svg[data-chart=sankey]","pptx":"infoSankey","maxNodes":12},{"id":"annotation","role":"annotation","required":true,"html":"dataTable / .note","pptx":"notes"}]},"treemap":{"mode":["research","architecture"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":"svg[data-chart=treemap]","pptx":"infoTreemap"},{"id":"annotation","role":"annotation","required":true,"html":"dataTable / .note","pptx":"notes"}]},"boxplot":{"mode":["research","architecture"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":"svg[data-chart=boxplot]","pptx":"infoBoxplot"},{"id":"annotation","role":"annotation","required":true,"html":"dataTable / .note","pptx":"notes"}]},"network":{"mode":["research","architecture"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":"svg[data-chart=network]","pptx":"infoNetwork"},{"id":"annotation","role":"annotation","required":true,"html":"dataTable / .note","pptx":"notes"}]},"marimekko":{"mode":["research","architecture"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":"svg[data-chart=marimekko]","pptx":"infoMarimekko"},{"id":"annotation","role":"annotation","required":true,"html":"dataTable / .note","pptx":"notes"}]},"streamgraph":{"mode":["research","architecture"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":"svg[data-chart=streamgraph]","pptx":"infoStreamgraph"},{"id":"annotation","role":"annotation","required":true,"html":"dataTable / .note","pptx":"notes"}]}}};
214
+ var LAYOUT_SLOTS = {"version":"9.1","pageTypes":{"points":{"mode":["presentation","research","architecture"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":".grid.g-2 / .card / .ul","pptx":"points columns","minUnits":1},{"id":"annotation","role":"annotation","required":false,"html":".sowhat / .note","pptx":"soWhatBar / footnoteLine"}]},"metrics":{"mode":["presentation","research"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":".metric","pptx":"metric row","minUnits":4},{"id":"annotation","role":"annotation","required":false,"html":"口径行 / .sowhat","pptx":"footnoteLine / soWhatBar"}]},"kpi":{"mode":["presentation","research"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"hero","role":"primary","required":true,"html":".t-metric hero","pptx":"hero number"},{"id":"metrics","role":"secondary","required":false,"html":".metric","pptx":"support metrics"},{"id":"annotation","role":"annotation","required":false,"html":".sowhat / .note","pptx":"soWhatBar"}]},"exhibit":{"mode":["research","presentation"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead / .exhibit__hd","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":"svg[data-chart] / .exhibit","pptx":"nativeChart | shapeChart","channel":"registry"},{"id":"secondary","role":"secondary","required":false,"html":"要点列表","pptx":"side bullets"},{"id":"annotation","role":"annotation","required":true,"html":".exhibit__src / .sowhat","pptx":"footnoteLine / soWhatBar / notes"}]},"split":{"mode":["presentation","research","architecture"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"left","role":"primary","required":true,"html":"左区(points/table/image/chart)","pptx":"left zone"},{"id":"right","role":"secondary","required":true,"html":"右区(points/table/image/chart)","pptx":"right zone"},{"id":"annotation","role":"annotation","required":false,"html":".sowhat / .note","pptx":"soWhatBar"}]},"table":{"mode":["presentation","research"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":".tbl-wrap table","pptx":"addTable","maxRows":{"presentation":8,"research":16}},{"id":"annotation","role":"annotation","required":false,"html":".sowhat / .note","pptx":"soWhatBar / footnoteLine"}]},"bar":{"mode":["presentation","research","architecture"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":"svg[data-chart]","pptx":"nativeChart | shapeChart","channel":"registry"},{"id":"annotation","role":"annotation","required":true,"html":"note / dataTable","pptx":"footnoteLine / notes / inline table"}]},"donut":{"mode":["presentation","research"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":"svg[data-chart=donut]","pptx":"addChart doughnut"},{"id":"annotation","role":"annotation","required":false,"html":"中心合计 / 图例 / .note","pptx":"center label / legend / notes"}]},"twocol":{"mode":["research"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":".cols-2","pptx":"two text columns"},{"id":"annotation","role":"annotation","required":false,"html":".sowhat","pptx":"soWhatBar"}]},"threecol":{"mode":["research"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":".cols-3","pptx":"three text columns"},{"id":"annotation","role":"annotation","required":false,"html":".sowhat","pptx":"soWhatBar"}]},"halftable":{"mode":["research"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":"左表","pptx":"addTable left"},{"id":"secondary","role":"secondary","required":true,"html":"右图","pptx":"chart right"},{"id":"annotation","role":"annotation","required":false,"html":".sowhat","pptx":"soWhatBar"}]},"matrix":{"mode":["research"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":".matrix","pptx":"matrix cells"},{"id":"annotation","role":"annotation","required":false,"html":".sowhat","pptx":"soWhatBar"}]},"comparison":{"mode":["presentation","research"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"left","role":"primary","required":true,"html":"左面板","pptx":"left panel"},{"id":"right","role":"secondary","required":true,"html":"右面板","pptx":"right panel"},{"id":"annotation","role":"annotation","required":false,"html":"verdict / .sowhat","pptx":"verdict bar"}]},"quote":{"mode":["presentation","research"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":"金句正文","pptx":"quote text"}]},"timeline":{"mode":["presentation","research"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":".tl","pptx":"timeline axis"}]},"steps":{"mode":["presentation","architecture"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":".steps","pptx":"step row"}]},"cards":{"mode":["presentation","research"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":".card grid","pptx":"card grid"}]},"heatmap":{"mode":["presentation","research"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":".heat","pptx":"heat cells"}]},"bullet":{"mode":["presentation","research"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":".bul","pptx":"bullet rows"}]},"pyramid":{"mode":["presentation","research"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":".pyr","pptx":"pyramid layers"}]},"image":{"mode":["presentation","research","architecture"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":".media*","pptx":"imageLayoutShapes"}]},"diagram":{"mode":["architecture","research"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":".arch / layers","pptx":"layered nodes + edges","maxNodes":24,"maxLayers":4},{"id":"annotation","role":"annotation","required":false,"html":".arch__legend / .note","pptx":"legend chips / notes"}]},"lane":{"mode":["architecture","research"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":".lane","pptx":"lanes + steps"}]},"sankey":{"mode":["research","architecture"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":"svg[data-chart=sankey]","pptx":"infoSankey","maxNodes":12},{"id":"annotation","role":"annotation","required":true,"html":"dataTable / .note","pptx":"notes"}]},"treemap":{"mode":["research","architecture"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":"svg[data-chart=treemap]","pptx":"infoTreemap"},{"id":"annotation","role":"annotation","required":true,"html":"dataTable / .note","pptx":"notes"}]},"boxplot":{"mode":["research","architecture"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":"svg[data-chart=boxplot]","pptx":"infoBoxplot"},{"id":"annotation","role":"annotation","required":true,"html":"dataTable / .note","pptx":"notes"}]},"network":{"mode":["research","architecture"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":"svg[data-chart=network]","pptx":"infoNetwork"},{"id":"annotation","role":"annotation","required":true,"html":"dataTable / .note","pptx":"notes"}]},"marimekko":{"mode":["research","architecture"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":"svg[data-chart=marimekko]","pptx":"infoMarimekko"},{"id":"annotation","role":"annotation","required":true,"html":"dataTable / .note","pptx":"notes"}]},"streamgraph":{"mode":["research","architecture"],"slots":[{"id":"head","role":"chrome","required":true,"html":".shead","pptx":"head()"},{"id":"primary","role":"primary","required":true,"html":"svg[data-chart=streamgraph]","pptx":"infoStreamgraph"},{"id":"annotation","role":"annotation","required":true,"html":"dataTable / .note","pptx":"notes"}]}}};
212
215
 
213
216
  /* regionOf(pageType, slotId, opts) — 页型布局区域 IR(与 scripts/lib_layout_regions.js 同源) */
214
217
  function regionOf(pageType, slotId, opts) {
@@ -349,31 +352,49 @@ var MODES=[
349
352
  d:'图为王:版心 1600、每页一张全幅主图(分层带/泳道/管线),文字退到图注级。1–3 张图,可省 Agenda。',rec:'推荐风格:石墨 / 商务蓝 / 彩色'}
350
353
  ];
351
354
 
352
- /* ── 风格的「描述性字段」手写(名称/定位/适用/字体);**卡片列表与配色一律取自单源**
355
+ /* ── 风格的「描述性字段」手写(名称/定位/适用/语汇);**卡片列表与配色一律取自单源**
353
356
  (PRESETS / PRESETS_DARK / STYLE_DATA_COLORS,由 sync_runtime.py 注入)
354
- ——风格集增删时画廊自动跟随,配色不可能与 HTML/PPTX 侧漂移。 ── */
357
+ 语汇字段与 engine.css + layout-constants.styleIdentity 同口径,预览能看出性格差。 ── */
355
358
  var STYLE_META=[
356
359
  {id:'business-blue',name:'商务蓝',en:'business-blue',d:'专业克制、信息密度高。中性灰阶 + 单一蓝,最通用的商务选择。',s:'技术 / 数据 / 通用商务汇报',
357
- pfont:"'Google Sans','Roboto','PingFang SC','Microsoft YaHei',sans-serif"},
360
+ pfontBody:"'Google Sans','Roboto','PingFang SC','Microsoft YaHei',sans-serif",
361
+ pfontDisplay:"'Google Sans','Roboto','PingFang SC','Microsoft YaHei',sans-serif",
362
+ prad:'16px',pscale:1,peye:'.11em',plh:1.6,pgap:1,pw:700,pletter:'-.03em'},
358
363
  {id:'apple-mono',name:'优雅黑白',en:'apple-mono',d:'苹果式极简。大留白、超大字、几乎无彩色,靠排版与留白取胜。',s:'产品发布 / 品牌 / 高管演示',
359
- pfont:"-apple-system,'SF Pro Display','Helvetica Neue','PingFang SC',sans-serif"},
364
+ pfontBody:"-apple-system,'SF Pro Text','Helvetica Neue','PingFang SC',sans-serif",
365
+ pfontDisplay:"-apple-system,'SF Pro Display','Helvetica Neue','PingFang SC',sans-serif",
366
+ prad:'20px',pscale:1.22,peye:'.12em',plh:1.75,pgap:1.35,pw:500,pletter:'-.04em'},
360
367
  {id:'mckinsey',name:'麦肯锡咨询',en:'mckinsey',d:'结构化、正式、咨询范。衬线标题 + 细线框架 + 高密表格。',s:'战略 / 咨询 / 立项 / 对标',
361
- pfont:"Georgia,'Times New Roman','Songti SC','SimSun',serif",prad:'4px'},
368
+ pfontBody:"'Inter','IBM Plex Sans','PingFang SC','Microsoft YaHei',sans-serif",
369
+ pfontDisplay:"Georgia,'Times New Roman','Songti SC','SimSun',serif",
370
+ prad:'6px',pscale:.92,peye:'.14em',plh:1.45,pgap:.78,pw:600,pletter:'-.015em'},
362
371
  {id:'brand-red',name:'品牌红',en:'brand-red',d:'以品牌主色红为强调,正式有辨识度。可替换为任意企业品牌色。',s:'企业品牌材料 / 正式汇报 / 对外宣讲',
363
- pfont:"'HarmonyOS Sans','PingFang SC','Microsoft YaHei',sans-serif"},
372
+ pfontBody:"'HarmonyOS Sans','PingFang SC','Microsoft YaHei',sans-serif",
373
+ pfontDisplay:"'HarmonyOS Sans','PingFang SC','Microsoft YaHei',sans-serif",
374
+ prad:'14px',pscale:1.02,peye:'.12em',plh:1.58,pgap:1,pw:700,pletter:'-.025em'},
364
375
  {id:'warm-sand',name:'暖沙金',en:'warm-sand',d:'温暖高级、编辑感/年报感。米白暖底 + 古铜金强调,衬线标题。',s:'年度报告 / 品牌叙事 / 文化建设',
365
- pfont:"Georgia,'Playfair Display','Songti SC','STSong','SimSun',serif"},
376
+ pfontBody:"'Inter','Source Han Sans','PingFang SC','Microsoft YaHei',sans-serif",
377
+ pfontDisplay:"Georgia,'Playfair Display','Songti SC','STSong','SimSun',serif",
378
+ prad:'12px',pscale:1.05,peye:'.13em',plh:1.72,pgap:1.2,pw:600,pletter:'-.01em'},
366
379
  {id:'deep-teal',name:'墨绿',en:'deep-teal',d:'沉稳、可信赖。冷灰底 + 深青强调。',s:'金融 / 风控 / ESG / 审计',
367
- pfont:"'Inter','Source Han Sans','PingFang SC','Microsoft YaHei',sans-serif"},
380
+ pfontBody:"'Inter','Source Han Sans','PingFang SC','Microsoft YaHei',sans-serif",
381
+ pfontDisplay:"'Inter','Source Han Sans','PingFang SC','Microsoft YaHei',sans-serif",
382
+ prad:'12px',pscale:1,peye:'.11em',plh:1.58,pgap:1,pw:700,pletter:'-.028em'},
368
383
  {id:'graphite-dark',name:'石墨深灰',en:'graphite-dark',
369
384
  d:'深色优先的沉浸石墨风:近黑石墨面板 + 亮蓝青强调,默认即深色;浅色变体(中性石墨纸灰 + 同系蓝青)为打印/外发辅助。',s:'产品发布会 / 指挥中心大屏 / 深色优先',
370
385
  darkMain:true,das:'#132841',ds2:'#171d24',daon:'#07182b',
371
- pfont:"'Inter','SF Pro Text','PingFang SC','Microsoft YaHei',sans-serif"},
386
+ pfontBody:"'Inter','SF Pro Text','PingFang SC','Microsoft YaHei',sans-serif",
387
+ pfontDisplay:"'Inter','SF Pro Display','PingFang SC',sans-serif",
388
+ prad:'14px',pscale:.98,peye:'.1em',plh:1.5,pgap:.85,pw:700,pletter:'-.03em'},
372
389
  {id:'indigo-violet',name:'靛紫',en:'indigo-violet',d:'创新、前沿。冷白底 + 靛紫强调。',s:'AI / 科技 / 研发 / 前沿技术',
373
- pfont:"'Inter','SF Pro Text','PingFang SC','Microsoft YaHei',sans-serif"},
390
+ pfontBody:"'Inter','SF Pro Text','PingFang SC','Microsoft YaHei',sans-serif",
391
+ pfontDisplay:"'Inter','SF Pro Text','PingFang SC','Microsoft YaHei',sans-serif",
392
+ prad:'16px',pscale:1.02,peye:'.12em',plh:1.6,pgap:1,pw:700,pletter:'-.032em'},
374
393
  {id:'spectrum',name:'光谱彩色',en:'spectrum',
375
394
  d:'中性结构 + 5 色数据色板(c1–c5):图表、图例、小段标签出彩,页面骨架安静。强调色 = 主系列色 c1 的深化版(保按钮对比度),彩色只属于数据系列。',s:'数据密集汇报 / 运营复盘 / 大屏看板',
376
- pfont:"'Inter','SF Pro Text','PingFang SC','Microsoft YaHei',sans-serif"},
395
+ pfontBody:"'Inter','SF Pro Text','PingFang SC','Microsoft YaHei',sans-serif",
396
+ pfontDisplay:"'Inter','SF Pro Text','PingFang SC','Microsoft YaHei',sans-serif",
397
+ prad:'14px',pscale:.95,peye:'.1em',plh:1.48,pgap:.8,pw:700,pletter:'-.03em'},
377
398
  /* ── 新增风格族 ── */
378
399
 
379
400
  ];
@@ -410,7 +431,7 @@ var MODE_TITLES={
410
431
  };
411
432
 
412
433
  /* 三模式标题字号差异:演示大字疏朗 / 研究密排 / 架构中等——直观传达密度差 */
413
- var MODE_HSIZE={presentation:'24px',research:'17px',architecture:'20px'};
434
+ var MODE_HSIZE={presentation:24,research:17,architecture:20};
414
435
 
415
436
  var curMode='presentation';
416
437
  var picked={}; /* mode -> styleId */
@@ -437,7 +458,8 @@ function pvBody(s,mode){
437
458
  '<div class="pv__dot" style="background:var(--ps3)"></div>'+
438
459
  '<div class="pv__pager">3 / 12</div></div></div>';
439
460
  var eyebrow='<div class="pv__eyebrow">'+(mode==='research'?'03 · 域间差异':(mode==='architecture'?'01 · 总体架构':'01 · 范式跃迁'))+'</div>';
440
- var h='<div class="pv__h" style="font-size:'+MODE_HSIZE[mode]+'">'+t+'</div>';
461
+ var hs=Math.round(MODE_HSIZE[mode]*(s.pscale!=null?s.pscale:1));
462
+ var h='<div class="pv__h" style="font-size:'+hs+'px">'+t+'</div>';
441
463
  var pal=s.colors;
442
464
 
443
465
  if(mode==='presentation'){
@@ -511,7 +533,15 @@ function cardHtml(s,mode){
511
533
  var dkLight='--dbg:'+s.pbg+';--dtxt:'+s.ptxt+';--dtxt2:'+s.ptxt2+';--da:'+s.pa+';--ds3:'+s.ps3+';--dbd:'+s.pbd+';';
512
534
  var dkDark='--dbg:'+s.dbg+';--dtxt:'+s.dtxt+';--dtxt2:'+s.dtxt2+';--da:'+s.da+';--ds3:'+s.ds3+';--dbd:'+s.dbd+';';
513
535
  var dkVars=(s.darkMain?dkLight:dkDark);
514
- var font=';--pfont:'+s.pfont.replace(/'/g,'&apos;')+';'+(s.prad?'--prad:'+s.prad+';':'');
536
+ var font=';--pfont-body:'+(s.pfontBody||'sans-serif').replace(/'/g,'&apos;')+
537
+ ';--pfont-display:'+(s.pfontDisplay||s.pfontBody||'sans-serif').replace(/'/g,'&apos;')+
538
+ ';'+(s.prad?'--prad:'+s.prad+';':'')+
539
+ (s.pscale!=null?'--pscale:'+s.pscale+';':'')+
540
+ (s.peye?'--peye:'+s.peye+';':'')+
541
+ (s.plh?'--plh:'+s.plh+';':'')+
542
+ (s.pgap!=null?'--pgap:'+s.pgap+';':'')+
543
+ (s.pw?'--pw:'+s.pw+';':'')+
544
+ (s.pletter?'--pletter:'+s.pletter+';':'');
515
545
  return '<article class="preset'+(s.darkMain?' dm':'')+'" data-style="'+s.id+'" style="'+pvVars+dkVars+font+'">'+
516
546
  '<div class="pv">'+pvBody(s,mode)+'</div>'+dkStrip(s,mode)+
517
547
  '<div class="meta"><div class="meta__name"><span class="sw"></span>'+s.name+