@taloswork/ose-shared 0.1.6 → 0.1.8
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.
- package/package.json +3 -3
- package/skills/document/SKILL.md +32 -17
- package/skills/document/art-directions/base.css +23 -0
- package/skills/document/art-directions/cinematic-depth.css +6 -0
- package/skills/document/art-directions/collage-paper.css +8 -0
- package/skills/document/art-directions/editorial-cut.css +8 -0
- package/skills/document/art-directions/geometric-pop.css +9 -0
- package/skills/document/art-directions/gradient-mesh.css +6 -0
- package/skills/document/art-directions/illustrated-doodle.css +8 -0
- package/skills/document/art-directions/luxury-ornament.css +6 -0
- package/skills/document/art-directions/maximalist-blocks.css +9 -0
- package/skills/document/art-directions/technical-grid.css +6 -0
- package/skills/document/assets/fonts/fonts.json +2 -2
- package/skills/document/bin/deck-build.cjs +266 -10
- package/skills/document/bin/doc-convert.cjs +66 -28
- package/skills/document/bin/doc-gen.cjs +8 -9
- package/skills/document/bin/html2pptx.cjs +243 -24
- package/skills/document/bin/pptx-clone.cjs +41 -30
- package/skills/document/bin/pptx-embed-fonts.cjs +6 -2
- package/skills/document/bin/pptx-slide.cjs +46 -50
- package/skills/document/catalog.json +11 -0
- package/skills/document/components/base.css +45 -0
- package/skills/document/components/profiles/clean.css +2 -0
- package/skills/document/components/profiles/editorial.css +3 -0
- package/skills/document/components/profiles/glass.css +2 -0
- package/skills/document/components/profiles/luxury.css +3 -0
- package/skills/document/components/profiles/organic.css +2 -0
- package/skills/document/components/profiles/poster.css +3 -0
- package/skills/document/content-pipeline.md +110 -54
- package/skills/document/deck-design.md +24 -15
- package/skills/document/layouts/README.md +41 -12
- package/skills/document/layouts/blocks-2x2.tpl +19 -9
- package/skills/document/layouts/business-model.tpl +6 -0
- package/skills/document/layouts/cards-3.tpl +1 -1
- package/skills/document/layouts/customer-proof.tpl +6 -0
- package/skills/document/layouts/funding-ask.tpl +5 -0
- package/skills/document/layouts/market-rings.tpl +5 -0
- package/skills/document/layouts/org-tree.tpl +1 -1
- package/skills/document/layouts/pitch-problem.tpl +6 -0
- package/skills/document/layouts/pitch-solution.tpl +5 -0
- package/skills/document/layouts/pricing-tiers.tpl +5 -0
- package/skills/document/layouts/product-device.tpl +6 -0
- package/skills/document/layouts/profiles.json +24 -0
- package/skills/document/layouts/slots.json +1 -1
- package/skills/document/layouts/steps-vertical.tpl +1 -1
- package/skills/document/layouts/team-founders.tpl +5 -0
- package/skills/document/layouts/traction-milestones.tpl +6 -0
- package/skills/document/media-styles/cinematic.css +2 -0
- package/skills/document/media-styles/clean-product.css +2 -0
- package/skills/document/media-styles/cutout-collage.css +3 -0
- package/skills/document/media-styles/device-stage.css +3 -0
- package/skills/document/media-styles/editorial-photo.css +3 -0
- package/skills/document/media-styles/illustrated.css +2 -0
- package/skills/document/media-styles/spatial-3d.css +3 -0
- package/skills/document/motion/mckinsey-photo.json +22 -0
- package/skills/document/motion/prismatic-3d.json +31 -0
- package/skills/document/packs/README.md +7 -3
- package/skills/document/packs/mckinsey-photo/backdrop.html +6 -0
- package/skills/document/packs/mckinsey-photo/layouts/cover-image.tpl +5 -0
- package/skills/document/packs/mckinsey-photo/layouts/cover.tpl +5 -0
- package/skills/document/packs/mckinsey-photo/layouts/image-left.tpl +5 -0
- package/skills/document/packs/mckinsey-photo/layouts/numbered-brief.tpl +5 -0
- package/skills/document/packs/mckinsey-photo/pack.css +27 -0
- package/skills/document/packs/prismatic-3d/backdrop.html +4 -0
- package/skills/document/packs/prismatic-3d/layouts/big-stat.tpl +6 -0
- package/skills/document/packs/prismatic-3d/layouts/cover.tpl +9 -0
- package/skills/document/packs/prismatic-3d/layouts/section-image.tpl +6 -0
- package/skills/document/packs/prismatic-3d/pack.css +28 -0
- package/skills/document/recipes/agency-pitch.json +13 -0
- package/skills/document/recipes/product-launch.json +13 -0
- package/skills/document/recipes/startup-fundraising.json +19 -0
- package/skills/document/styles/README.md +13 -6
- package/skills/document/styles/_contract-defaults.css +1 -1
- package/skills/document/styles/_samples/_groups/biz-premium.webp +0 -0
- package/skills/document/styles/_samples/_groups/creative.webp +0 -0
- package/skills/document/styles/_samples/_groups/editorial.webp +0 -0
- package/skills/document/styles/_samples/_groups/minimal.webp +0 -0
- package/skills/document/styles/_samples/_groups/natural.webp +0 -0
- package/skills/document/styles/_samples/_groups/tech-future.webp +0 -0
- package/skills/document/styles/_samples/bistro-warm.webp +0 -0
- package/skills/document/styles/_samples/board-brief.webp +0 -0
- package/skills/document/styles/_samples/bold-clash.webp +0 -0
- package/skills/document/styles/_samples/campus-teal.webp +0 -0
- package/skills/document/styles/_samples/clinic-care.webp +0 -0
- package/skills/document/styles/_samples/dark-glass.webp +0 -0
- package/skills/document/styles/_samples/gov-brief.webp +0 -0
- package/skills/document/styles/_samples/grid-tech.webp +0 -0
- package/skills/document/styles/_samples/legal-slate.webp +0 -0
- package/skills/document/styles/_samples/mckinsey-photo.webp +0 -0
- package/skills/document/styles/_samples/memphis.webp +0 -0
- package/skills/document/styles/_samples/neon-cyber.webp +0 -0
- package/skills/document/styles/_samples/organic-earth.webp +0 -0
- package/skills/document/styles/_samples/pastel-saas.webp +0 -0
- package/skills/document/styles/_samples/portfolio-noir.webp +0 -0
- package/skills/document/styles/_samples/press-room.webp +0 -0
- package/skills/document/styles/_samples/prismatic-3d.webp +0 -0
- package/skills/document/styles/_samples/retro-press.webp +0 -0
- package/skills/document/styles/_samples/sport-arena.webp +0 -0
- package/skills/document/styles/_samples/wedding-blush.webp +0 -0
- package/skills/document/styles/dark-glass/backdrop.html +7 -3
- package/skills/document/styles/dark-glass/skin.css +1 -0
- package/skills/document/styles/portfolio-noir/skin.css +3 -0
- package/skills/document/theme-system.json +68 -0
- package/skills/document/theme-system.md +101 -0
|
@@ -1,14 +1,20 @@
|
|
|
1
1
|
# Layout library (structure) — pick by role + P1/P2/P3
|
|
2
2
|
|
|
3
3
|
**Layouts are structure only** — grid, positions, semantic classes, `data-layout` id,
|
|
4
|
-
**zero color** (they pass `lintHardcodedColors`).
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
**zero color** (they pass `lintHardcodedColors`). Theme V2 composes family paint,
|
|
5
|
+
component profile, media treatment and art direction; the layout remains independently selected by
|
|
6
|
+
content intent. See `../theme-system.md` and machine-readable `profiles.json`.
|
|
7
7
|
|
|
8
8
|
## How to pick (the deterministic selection)
|
|
9
9
|
|
|
10
|
-
**
|
|
11
|
-
|
|
10
|
+
**Theme — once per deck.** Choose ONE catalog style id. Set `themeVersion:2` for modern
|
|
11
|
+
entries and optionally override `mediaStyle`; entries in catalog collection `original-13`
|
|
12
|
+
are frozen as `classic-v1`, so omit both fields and avoid `themeV2Layouts`. Never mix base
|
|
13
|
+
Themes within one deck.
|
|
14
|
+
|
|
15
|
+
**Scene — automatic from intent.** `deck-build` maps intent to `hero`, `content`,
|
|
16
|
+
`data`, `media`, or `closing`, then balances `decorDensity` across adjacent pages.
|
|
17
|
+
Normally omit both fields; override them only when the automatic art rhythm is wrong.
|
|
12
18
|
|
|
13
19
|
**Layout — per page, by matching this table:**
|
|
14
20
|
- **P1 structure / image** (most important): does the page have an image? left/right?
|
|
@@ -52,9 +58,17 @@ Plain list layouts take rows too: `team-row.members{name,role}` ·
|
|
|
52
58
|
|
|
53
59
|
Anything the spec gets wrong — unknown layout/slot/field, a repeat block with no rows, a
|
|
54
60
|
figure row missing its numbers — **fails the build** (exit 1, nothing written) rather than
|
|
55
|
-
shipping the template's demo content. Regenerate the index with `node scripts/gen-slots.mjs`
|
|
61
|
+
shipping the template's demo content. Regenerate the index with `node scripts/deck/gen-slots.mjs`
|
|
56
62
|
after touching a `.tpl`.
|
|
57
63
|
|
|
64
|
+
**不要给可变内容写死容器高度。** `.card{height:…px}` 这类写法在皮肤给 `.card` 设了
|
|
65
|
+
`overflow:hidden` 时会把超出的文字**静默裁掉**(`blocks-2x2` 就这么带着缺陷出厂过)。
|
|
66
|
+
让高度由内容决定:网格用 `grid-auto-rows:min-content`(下限必须显式写 `min-content` ——
|
|
67
|
+
`1fr`/`auto` 的自动下限对 `overflow` 非 visible 的网格项一律归零),余量交给外层
|
|
68
|
+
`justify-content:space-between`。这样内容超量时会把后续元素顶出页面,被 `deck-qa` 的
|
|
69
|
+
`off-canvas`/`overlap` 抓到,而不是变成一排缺了下半截的字。`deck-qa` 的第三条硬失败
|
|
70
|
+
`clipped` 专门守这件事,并且对**整册版式库**逐个版式扫,不只是 `sweep-spec.json` 里那几个。
|
|
71
|
+
|
|
58
72
|
## Catalog
|
|
59
73
|
|
|
60
74
|
Each slide carries `data-layout="<id>"` (drives the diversity lint + traceability).
|
|
@@ -126,6 +140,16 @@ Each slide carries `data-layout="<id>"` (drives the diversity lint + traceabilit
|
|
|
126
140
|
| `brand-values` | content | value cards (rows) | medium (2–4) | text-only | 品牌主张(编号圆+准则×3) |
|
|
127
141
|
| `team-row` | content | portrait slots + name/role (rows) | medium (3–5) | **photo slots** | 团队成员(一排 3–5 人像 + 姓名/职位) |
|
|
128
142
|
| `quote-aside` | content | oversized quote glyph left + text block right (asymmetric) | light (1 quote) | text-only | 金句页,但版面要有方向感:引号当锚点、引文靠右挂,署名右对齐收尾。`quote` 是居中对称的另一种读法 |
|
|
143
|
+
| `pitch-problem` | pitch · problem | hero claim + stat + 3 pains | light (3) | text-only | 投资人问题页 |
|
|
144
|
+
| `pitch-solution` | pitch · solution | claim + 3 solution pillars | medium (3) | optional | 价值主张 / 方案支柱 |
|
|
145
|
+
| `market-rings` | pitch · market | TAM/SAM/SOM concentric rings | light (3) | diagram | 市场规模 |
|
|
146
|
+
| `product-device` | pitch · product | copy + feature list + device stage | medium (3) | **product media** | 产品演示 / App / SaaS |
|
|
147
|
+
| `traction-milestones` | pitch · traction | 3 metrics + 4 milestones | medium (7) | text-only | 牵引力与增长历程 |
|
|
148
|
+
| `business-model` | pitch · model | 3 revenue streams + 2 economics | medium (5) | text-only | 商业模式 / 单位经济 |
|
|
149
|
+
| `pricing-tiers` | pitch · pricing | 3 tier cards | medium (3) | text-only | 定价与套餐 |
|
|
150
|
+
| `customer-proof` | pitch · proof | testimonial + 2 metrics + logos | medium (6) | optional | 客户证言与社会证明 |
|
|
151
|
+
| `team-founders` | pitch · team | 3 founder cards | medium (3) | optional | 创始团队 |
|
|
152
|
+
| `funding-ask` | pitch · ask | hero ask + 3 use-of-funds bars | light (4) | text-only | 融资需求与资金用途 |
|
|
129
153
|
|
|
130
154
|
## Semantic class contract (what a skin must define)
|
|
131
155
|
|
|
@@ -154,9 +178,14 @@ deck.html 时逐页决定要不要加这个类,skin 只需在自己的 `--slide-
|
|
|
154
178
|
一般保持不变)。浅色皮肤才需要实现它;深色皮肤可以不定义(no-op)。
|
|
155
179
|
`cover-minimal` 只用既有通用 class(`.rule`/`.accent-bar`/`.cover-title`/`.cover-sub`/`.deck-footer`),无需新增。
|
|
156
180
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
181
|
+
Theme V2 adds `.component-card` / `.metric-card` / `.feature-card` / `.price-card` /
|
|
182
|
+
`.proof-card` / `.team-card`, `.badge` / `.tag`, `.media-frame` / `.media-cutout` /
|
|
183
|
+
`.device-frame`, `.quote-*`, `.logo-tile`, `.fund-*`, `.timeline-node` and
|
|
184
|
+
`.avatar-frame`. Neutral behavior lives in `components/base.css`; profiles and media
|
|
185
|
+
styles change their visual grammar without changing layout HTML.
|
|
186
|
+
|
|
187
|
+
Adding a **Theme binding** = one entry in `theme-system.json`; adding a **layout** = one
|
|
188
|
+
`layouts/<id>.tpl` plus a candidate role in `profiles.json`. Regenerate `slots.json`.
|
|
160
189
|
|
|
161
190
|
## 反向通道 —— 包内版式如何进入共享库
|
|
162
191
|
|
|
@@ -174,7 +203,7 @@ skins render it.
|
|
|
174
203
|
格式没变)——**是不是结构性创新仍需人来判**,脚本不代劳。任一条不满足就拒绝写入
|
|
175
204
|
(不移动文件),并逐条报出缺什么。
|
|
176
205
|
|
|
177
|
-
校验通过后脚本会:把 `.tpl` 移到 `layouts/`、重跑 `scripts/gen-slots.mjs` 重生成
|
|
206
|
+
校验通过后脚本会:把 `.tpl` 移到 `layouts/`、重跑 `scripts/deck/gen-slots.mjs` 重生成
|
|
178
207
|
`slots.json`、在本文件的 Catalog 表格里插入一行占位(`role`/`structure`/`density`/
|
|
179
208
|
`has-image`/`pick when` 均为 `TODO`,附 `promoted from packs/<packId>`)。写入中途
|
|
180
209
|
任何一步失败都会整体回滚(删掉刚写的 `.tpl`,`slots.json`/本文件复原),不会留下
|
|
@@ -182,8 +211,8 @@ skins render it.
|
|
|
182
211
|
|
|
183
212
|
提升不是终点,脚本打印的四步收尾都要做:补全本文件里那一行的全部 `TODO`、从
|
|
184
213
|
`packs/<packId>/layouts/` 删掉原文件(否则同名遮蔽会让包永远看不到共享版本、也
|
|
185
|
-
永远吃不到后续对共享版式的修复)、`node scripts/deck-skin-samples.mjs && node
|
|
186
|
-
scripts/deck-fidelity.mjs` 确认它在所有皮肤下都成立、再跑
|
|
214
|
+
永远吃不到后续对共享版式的修复)、`node scripts/deck/deck-skin-samples.mjs && node
|
|
215
|
+
scripts/deck/deck-fidelity.mjs` 确认它在所有皮肤下都成立、再跑
|
|
187
216
|
`TALOS_TEST_SCOPE=unit npx vitest run tests/unit/deck-layouts.test.ts`。
|
|
188
217
|
|
|
189
218
|
新版式若用到契约外的 class,先扩 `styles/_contract-defaults.css`(本脚本不代劳)——
|
|
@@ -1,19 +1,29 @@
|
|
|
1
1
|
<!-- layouts/blocks-2x2 — structure-only (paint via styles/<skin>/skin.css). 招牌"2×2 大色块 + 引言条":标题 + 两段引子 + 四个大编号块(skin 决定实色/柔彩/描边)+ 底部引言条 + 参考框. data-layout drives P1/P2/P3 + dedup. -->
|
|
2
|
+
<!-- 引子/色块/引言条走一条 flex 纵向流(.blocks-flow),卡片不再写死高度 —— `.card` 曾是
|
|
3
|
+
`height:118px`,而卡内 26px padding + 34px 编号 + 22px 标题 + 14px 正文实际要 148–178px,
|
|
4
|
+
12 个把 `.card` 设成 overflow:hidden 的族因此把正文最后一行拦腰切断(deck-qa-sweep 的
|
|
5
|
+
`clipped` 判据守的就是它)。现在行高 `min-content` 咬死内容,
|
|
6
|
+
余量由 `justify-content:space-between` 分给引子与引言条之间 —— 内容再长也只会把引言条
|
|
7
|
+
顶向页脚(闸门报 off-canvas/overlap),不会静默裁字。下限必须写成显式的 `min-content`:
|
|
8
|
+
`1fr`/`auto` 的自动下限对 `overflow:hidden` 的网格项一律归零,而 `.card` 的 overflow
|
|
9
|
+
恰恰是皮肤设的 —— 写 `1fr` 等于没有下限,卡片照样会被压扁再裁字。 -->
|
|
2
10
|
<section class="slide" data-layout="blocks-2x2" style="position:relative;width:1280px;height:720px;overflow:hidden"><div class="slide-backdrop"></div>
|
|
3
11
|
|
|
4
12
|
|
|
5
13
|
<div class="eyebrow-row" style="position:absolute;left:calc(96px * var(--space-scale,1));top:124px;display:flex;align-items:center;gap:14px"><span class="accent-bar" style="width:30px;height:1px;display:inline-block"></span><span class="eyebrow" style="font-size:calc(13px * var(--type-scale,1));letter-spacing:.28em">{{eyebrow|PRINCIPLES}}</span></div>
|
|
6
14
|
<h2 class="deck-title" style="position:absolute;left:calc(92px * var(--space-scale,1));top:146px;font-size:calc(42px * var(--type-scale,1));letter-spacing:-.4px">{{title|章节主标题}}</h2>
|
|
7
|
-
<
|
|
8
|
-
<
|
|
9
|
-
|
|
10
|
-
<div class="card" style="position:relative;padding:26px
|
|
11
|
-
<div class="card" style="position:relative;padding:26px
|
|
12
|
-
<div class="card" style="position:relative;padding:26px
|
|
15
|
+
<div class="blocks-flow" style="position:absolute;left:calc(96px * var(--space-scale,1));right:calc(96px * var(--space-scale,1));top:212px;bottom:62px;display:flex;flex-direction:column;justify-content:space-between;gap:14px">
|
|
16
|
+
<p class="card-body" style="flex:none;font-size:calc(16px * var(--type-scale,1));line-height:1.7">{{intro|一段引子说明,两三行,交代这一章的核心观点与背景,替换为真实内容。承接标题,引出下面四个要点。}}</p>
|
|
17
|
+
<div class="card-grid" style="flex:none;display:grid;grid-template-columns:1fr 1fr;grid-auto-rows:min-content;gap:16px">
|
|
18
|
+
<div class="card" style="position:relative;padding:16px 26px"><span class="card-rail" style="position:absolute;left:0;top:20px;width:3px;height:34px;border-radius:2px"></span><span class="card-idx" style="font-size:calc(26px * var(--type-scale,1));font-weight:800;line-height:1">01</span><div class="card-title" style="font-size:calc(22px * var(--type-scale,1));font-weight:700;margin-top:4px">{{block1_title|要点一标题}}</div><p class="card-body" style="font-size:calc(14px * var(--type-scale,1));line-height:1.5;margin-top:4px">{{block1_body|一句说明,替换为真实内容。}}</p></div>
|
|
19
|
+
<div class="card" style="position:relative;padding:16px 26px"><span class="card-rail" style="position:absolute;left:0;top:20px;width:3px;height:34px;border-radius:2px"></span><span class="card-idx" style="font-size:calc(26px * var(--type-scale,1));font-weight:800;line-height:1">02</span><div class="card-title" style="font-size:calc(22px * var(--type-scale,1));font-weight:700;margin-top:4px">{{block2_title|要点二标题}}</div><p class="card-body" style="font-size:calc(14px * var(--type-scale,1));line-height:1.5;margin-top:4px">{{block2_body|一句说明,替换为真实内容。}}</p></div>
|
|
20
|
+
<div class="card" style="position:relative;padding:16px 26px"><span class="card-rail" style="position:absolute;left:0;top:20px;width:3px;height:34px;border-radius:2px"></span><span class="card-idx" style="font-size:calc(26px * var(--type-scale,1));font-weight:800;line-height:1">03</span><div class="card-title" style="font-size:calc(22px * var(--type-scale,1));font-weight:700;margin-top:4px">{{block3_title|要点三标题}}</div><p class="card-body" style="font-size:calc(14px * var(--type-scale,1));line-height:1.5;margin-top:4px">{{block3_body|一句说明,替换为真实内容。}}</p></div>
|
|
21
|
+
<div class="card" style="position:relative;padding:16px 26px"><span class="card-rail" style="position:absolute;left:0;top:20px;width:3px;height:34px;border-radius:2px"></span><span class="card-idx" style="font-size:calc(26px * var(--type-scale,1));font-weight:800;line-height:1">04</span><div class="card-title" style="font-size:calc(22px * var(--type-scale,1));font-weight:700;margin-top:4px">{{block4_title|要点四标题}}</div><p class="card-body" style="font-size:calc(14px * var(--type-scale,1));line-height:1.5;margin-top:4px">{{block4_body|一句说明,替换为真实内容。}}</p></div>
|
|
22
|
+
</div>
|
|
23
|
+
<div style="flex:none;display:flex;gap:18px">
|
|
24
|
+
<div class="quote-bar" style="flex:1.7;padding:14px 22px;border-radius:var(--card-radius)"><div class="quote-txt" style="font-size:calc(17px * var(--type-scale,1));font-weight:700">{{quote|"一句金句,点睛这一章。"}}</div><div class="quote-attr" style="font-size:calc(13px * var(--type-scale,1));margin-top:4px">{{quote_attr|— 出处 / 作者}}</div></div>
|
|
25
|
+
<div class="footnote" style="flex:1;padding:14px 20px;border-radius:var(--card-radius)"><span class="footnote-label" style="font-size:calc(12px * var(--type-scale,1));font-weight:700">参考资料:</span><span class="footnote-body" style="font-size:calc(12px * var(--type-scale,1))"> {{refs|来源一;来源二}}</span></div>
|
|
13
26
|
</div>
|
|
14
|
-
<div style="position:absolute;left:calc(96px * var(--space-scale,1));right:calc(96px * var(--space-scale,1));bottom:76px;display:flex;gap:18px">
|
|
15
|
-
<div class="quote-bar" style="flex:1.7;padding:18px 24px;border-radius:var(--card-radius)"><div class="quote-txt" style="font-size:calc(17px * var(--type-scale,1));font-weight:700">{{quote|"一句金句,点睛这一章。"}}</div><div class="quote-attr" style="font-size:calc(13px * var(--type-scale,1));margin-top:4px">{{quote_attr|— 出处 / 作者}}</div></div>
|
|
16
|
-
<div class="footnote" style="flex:1;padding:16px 20px;border-radius:var(--card-radius)"><span class="footnote-label" style="font-size:calc(12px * var(--type-scale,1));font-weight:700">参考资料:</span><span class="footnote-body" style="font-size:calc(12px * var(--type-scale,1))"> {{refs|来源一;来源二}}</span></div>
|
|
17
27
|
</div>
|
|
18
28
|
<div class="rule rule-foot" style="position:absolute;left:calc(96px * var(--space-scale,1));right:calc(96px * var(--space-scale,1));bottom:40px;height:1px"></div><div class="deck-footer" style="position:absolute;left:calc(96px * var(--space-scale,1));bottom:17px;font-size:calc(12px * var(--type-scale,1));letter-spacing:.1em">{{footer|报告标题 / 章节}}</div><div class="deck-pageno" style="position:absolute;right:calc(96px * var(--space-scale,1));bottom:17px;font-size:calc(12px * var(--type-scale,1))">{{pageno|01}}</div>
|
|
19
29
|
</section>
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<!-- layouts/business-model — Theme V2. role=pitch.business-model; streams=3; economics=2. -->
|
|
2
|
+
<section class="slide" data-layout="business-model" style="position:relative;width:1280px;height:720px;overflow:hidden"><div class="slide-backdrop"></div>
|
|
3
|
+
<div class="eyebrow" style="position:absolute;left:80px;top:66px">{{eyebrow|BUSINESS MODEL}}</div><h2 class="deck-title" style="position:absolute;left:80px;top:106px;width:760px;font-size:calc(50px * var(--type-scale,1))">{{title|经常性收入,随客户价值同步增长}}</h2><span class="tag tag--accent" style="position:absolute;right:80px;top:118px">{{tag|LAND & EXPAND}}</span>
|
|
4
|
+
<div class="component-grid" style="position:absolute;left:80px;right:430px;top:244px;grid-template-columns:repeat(3,1fr)"><div class="component-card"><div class="component-label">{{stream1_label|PLATFORM}}</div><div class="metric-value" style="font-size:30px;margin-top:18px">{{stream1_value|70%}}</div><p class="component-copy" style="margin-top:12px">{{stream1_body|年度平台订阅}}</p></div><div class="component-card"><div class="component-label">{{stream2_label|USAGE}}</div><div class="metric-value" style="font-size:30px;margin-top:18px">{{stream2_value|20%}}</div><p class="component-copy" style="margin-top:12px">{{stream2_body|按量计费}}</p></div><div class="component-card"><div class="component-label">{{stream3_label|SERVICES}}</div><div class="metric-value" style="font-size:30px;margin-top:18px">{{stream3_value|10%}}</div><p class="component-copy" style="margin-top:12px">{{stream3_body|实施与增值服务}}</p></div></div>
|
|
5
|
+
<div style="position:absolute;right:80px;top:244px;width:292px;display:grid;gap:18px"><div class="metric-card metric-card--hero"><div class="metric-label">{{econ1_label|GROSS MARGIN}}</div><div class="metric-value" style="margin-top:16px">{{econ1|82%}}</div></div><div class="metric-card"><div class="metric-label">{{econ2_label|CAC PAYBACK}}</div><div class="metric-value" style="margin-top:16px">{{econ2|8 mo}}</div></div></div>
|
|
6
|
+
<div class="deck-footer" style="position:absolute;left:80px;bottom:30px">{{footer|PITCH DECK / BUSINESS MODEL}}</div><div class="deck-pageno" style="position:absolute;right:80px;bottom:30px">{{pageno|07}}</div></section>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
<!-- layouts/cards-3 — structure-only (paint via styles/<skin>/skin.css). data-layout drives P1/P2/P3 + dedup. -->
|
|
2
2
|
<section class="slide" data-layout="cards-3" style="position:relative;width:1280px;height:720px;overflow:hidden"><div class="slide-backdrop"></div><div class="eyebrow-row" style="position:absolute;left:calc(96px * var(--space-scale,1));top:132px;display:flex;align-items:center;gap:14px"><span class="accent-bar" style="width:30px;height:1px;display:inline-block"></span><span class="eyebrow" style="font-size:calc(13px * var(--type-scale,1));letter-spacing:.28em">{{eyebrow|OVERVIEW}}</span></div><h2 class="deck-title" style="position:absolute;left:calc(92px * var(--space-scale,1));top:158px;font-size:calc(48px * var(--type-scale,1));letter-spacing:-.4px">{{title|三个要点}}</h2>
|
|
3
|
-
<div class="card-grid" style="position:absolute;left:calc(96px * var(--space-scale,1));right:calc(96px * var(--space-scale,1));top:290px;display:grid;grid-template-columns:1fr 1fr 1fr;gap:24px"><div class="card" style="position:relative;padding:32px 34px;height:
|
|
3
|
+
<div class="card-grid" style="position:absolute;left:calc(96px * var(--space-scale,1));right:calc(96px * var(--space-scale,1));top:290px;display:grid;grid-template-columns:1fr 1fr 1fr;gap:24px"><div class="card" style="position:relative;padding:32px 34px;min-height:180px"><span class="card-rail" style="position:absolute;left:0;top:28px;width:3px;height:40px;border-radius:2px"></span><div style="display:flex;align-items:center;gap:10px"><span class="card-dot" style="width:7px;height:7px;border-radius:50%;display:inline-block"></span><span class="card-idx" style="font-size:calc(12px * var(--type-scale,1));letter-spacing:.2em">01</span></div><div class="card-title" style="font-size:calc(23px * var(--type-scale,1));font-weight:700;margin-top:14px">{{card1_title|要点标题}}</div><p class="card-body" style="font-size:calc(15.5px * var(--type-scale,1));line-height:1.6;margin-top:10px">{{card1_body|一句说明,替换为真实内容。}}</p></div><div class="card" style="position:relative;padding:32px 34px;min-height:180px"><span class="card-rail" style="position:absolute;left:0;top:28px;width:3px;height:40px;border-radius:2px"></span><div style="display:flex;align-items:center;gap:10px"><span class="card-dot" style="width:7px;height:7px;border-radius:50%;display:inline-block"></span><span class="card-idx" style="font-size:calc(12px * var(--type-scale,1));letter-spacing:.2em">02</span></div><div class="card-title" style="font-size:calc(23px * var(--type-scale,1));font-weight:700;margin-top:14px">{{card2_title|要点标题}}</div><p class="card-body" style="font-size:calc(15.5px * var(--type-scale,1));line-height:1.6;margin-top:10px">{{card2_body|一句说明,替换为真实内容。}}</p></div><div class="card" style="position:relative;padding:32px 34px;min-height:180px"><span class="card-rail" style="position:absolute;left:0;top:28px;width:3px;height:40px;border-radius:2px"></span><div style="display:flex;align-items:center;gap:10px"><span class="card-dot" style="width:7px;height:7px;border-radius:50%;display:inline-block"></span><span class="card-idx" style="font-size:calc(12px * var(--type-scale,1));letter-spacing:.2em">03</span></div><div class="card-title" style="font-size:calc(23px * var(--type-scale,1));font-weight:700;margin-top:14px">{{card3_title|要点标题}}</div><p class="card-body" style="font-size:calc(15.5px * var(--type-scale,1));line-height:1.6;margin-top:10px">{{card3_body|一句说明,替换为真实内容。}}</p></div></div>
|
|
4
4
|
<div class="rule rule-foot" style="position:absolute;left:calc(96px * var(--space-scale,1));right:calc(96px * var(--space-scale,1));bottom:40px;height:1px"></div><div class="deck-footer" style="position:absolute;left:calc(96px * var(--space-scale,1));bottom:17px;font-size:calc(12px * var(--type-scale,1));letter-spacing:.1em">{{footer|报告标题 / 章节}}</div><div class="deck-pageno" style="position:absolute;right:calc(96px * var(--space-scale,1));bottom:17px;font-size:calc(12px * var(--type-scale,1))">{{pageno|01}}</div></section>
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<!-- layouts/customer-proof — Theme V2. role=pitch.proof; logos=4; metrics=2. -->
|
|
2
|
+
<section class="slide" data-layout="customer-proof" style="position:relative;width:1280px;height:720px;overflow:hidden"><div class="slide-backdrop"></div>
|
|
3
|
+
<div class="eyebrow" style="position:absolute;left:80px;top:66px">{{eyebrow|CUSTOMER PROOF}}</div><h2 class="deck-title" style="position:absolute;left:80px;top:106px;font-size:calc(48px * var(--type-scale,1))">{{title|客户用结果替我们说话}}</h2>
|
|
4
|
+
<div class="proof-card" style="position:absolute;left:80px;top:212px;width:620px;height:318px"><div class="quote-mark">“</div><div class="quote-copy" style="margin-top:30px">{{quote|上线六周后,我们把关键流程周期缩短了一半。}}</div><div style="margin-top:34px"><b class="component-title">{{person|李明}}</b><div class="component-copy">{{role|运营副总裁 · Acme}}</div></div></div>
|
|
5
|
+
<div class="component-grid" style="position:absolute;right:80px;top:212px;width:420px;grid-template-columns:1fr 1fr"><div class="metric-card"><div class="metric-label">{{metric1_label|TIME SAVED}}</div><div class="metric-value" style="font-size:36px;margin-top:16px">{{metric1|52%}}</div></div><div class="metric-card"><div class="metric-label">{{metric2_label|NPS}}</div><div class="metric-value" style="font-size:36px;margin-top:16px">{{metric2|72}}</div></div><div class="logo-tile">{{logo1|ACME}}</div><div class="logo-tile">{{logo2|NORTHSTAR}}</div><div class="logo-tile">{{logo3|ORBIT}}</div><div class="logo-tile">{{logo4|PULSE}}</div></div>
|
|
6
|
+
<div class="deck-footer" style="position:absolute;left:80px;bottom:30px">{{footer|PITCH DECK / PROOF}}</div><div class="deck-pageno" style="position:absolute;right:80px;bottom:30px">{{pageno|10}}</div></section>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<!-- layouts/funding-ask — Theme V2. role=pitch.ask; allocation=3. -->
|
|
2
|
+
<section class="slide" data-layout="funding-ask" style="position:relative;width:1280px;height:720px;overflow:hidden"><div class="slide-backdrop"></div>
|
|
3
|
+
<div class="eyebrow" style="position:absolute;left:80px;top:66px">{{eyebrow|THE ASK}}</div><div class="metric-card metric-card--hero" style="position:absolute;left:80px;top:112px;width:460px;height:440px;display:flex;flex-direction:column;justify-content:center"><div class="metric-label">{{round|SERIES A}}</div><div class="metric-value" style="font-size:86px;margin-top:22px">{{ask|$12M}}</div><p class="component-copy" style="font-size:18px;margin-top:24px">{{runway|18–24 个月跑道,用于产品、市场与团队扩张。}}</p></div>
|
|
4
|
+
<div style="position:absolute;left:610px;right:80px;top:116px"><h2 class="deck-title" style="font-size:calc(46px * var(--type-scale,1))">{{title|资金将把已验证增长变成规模}}</h2><div style="display:grid;gap:28px;margin-top:58px"><div><div style="display:flex;justify-content:space-between"><b class="component-title">{{use1|产品与工程}}</b><span class="data-chip">{{pct1|45%}}</span></div><div class="fund-track" style="margin-top:10px"><div class="fund-fill" style="width:45%"></div></div></div><div><div style="display:flex;justify-content:space-between"><b class="component-title">{{use2|销售与市场}}</b><span class="data-chip">{{pct2|35%}}</span></div><div class="fund-track" style="margin-top:10px"><div class="fund-fill" style="width:35%"></div></div></div><div><div style="display:flex;justify-content:space-between"><b class="component-title">{{use3|运营与储备}}</b><span class="data-chip">{{pct3|20%}}</span></div><div class="fund-track" style="margin-top:10px"><div class="fund-fill" style="width:20%"></div></div></div></div></div>
|
|
5
|
+
<div class="deck-footer" style="position:absolute;left:80px;bottom:30px">{{footer|PITCH DECK / FUNDING}}</div><div class="deck-pageno" style="position:absolute;right:80px;bottom:30px">{{pageno|12}}</div></section>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<!-- layouts/market-rings — Theme V2. role=pitch.market; density=low; exact-metrics=3. -->
|
|
2
|
+
<section class="slide" data-layout="market-rings" style="position:relative;width:1280px;height:720px;overflow:hidden"><div class="slide-backdrop"></div>
|
|
3
|
+
<div class="eyebrow" style="position:absolute;left:80px;top:68px">{{eyebrow|MARKET OPPORTUNITY}}</div><h2 class="deck-title" style="position:absolute;left:80px;top:108px;width:500px;font-size:calc(52px * var(--type-scale,1))">{{title|从明确切口进入大市场}}</h2><p class="component-copy" style="position:absolute;left:80px;top:306px;width:390px;font-size:18px">{{body|先拿下高频、高价值的核心用户,再沿同一工作流向相邻市场扩展。}}</p><span class="tag tag--accent" style="position:absolute;left:80px;top:424px">{{growth|CAGR 18.4%}}</span>
|
|
4
|
+
<div style="position:absolute;right:92px;top:94px;width:560px;height:520px"><div style="position:absolute;inset:0;border:1px solid var(--hair);border-radius:50%;display:flex;align-items:flex-start;justify-content:center;padding-top:54px"><div style="text-align:center"><div class="component-label">{{tam_label|TAM}}</div><div class="metric-value">{{tam|$48B}}</div></div></div><div style="position:absolute;inset:94px;border:2px solid var(--accent);border-radius:50%;display:flex;align-items:flex-start;justify-content:center;padding-top:50px;background:var(--slide-bg)"><div style="text-align:center"><div class="component-label">{{sam_label|SAM}}</div><div class="metric-value" style="font-size:38px">{{sam|$12B}}</div></div></div><div style="position:absolute;inset:188px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--accent);color:var(--slide-bg)"><div style="text-align:center"><div class="component-label" style="color:inherit">{{som_label|SOM}}</div><div class="metric-value" style="font-size:32px;color:inherit">{{som|$1.8B}}</div></div></div></div>
|
|
5
|
+
<div class="deck-footer" style="position:absolute;left:80px;bottom:30px">{{footer|PITCH DECK / MARKET}}</div><div class="deck-pageno" style="position:absolute;right:80px;bottom:30px">{{pageno|04}}</div></section>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
<!-- layouts/org-tree — structure-only variant (paint via skin). -->
|
|
2
2
|
<section class="slide" data-layout="org-tree" style="position:relative;width:1280px;height:720px;overflow:hidden"><div class="slide-backdrop"></div><div class="eyebrow-row" style="position:absolute;left:calc(96px * var(--space-scale,1));top:132px;display:flex;align-items:center;gap:14px"><span class="accent-bar" style="width:30px;height:1px;display:inline-block"></span><span class="eyebrow" style="font-size:calc(13px * var(--type-scale,1));letter-spacing:.28em">{{eyebrow|STRUCTURE}}</span></div><h2 class="deck-title" style="position:absolute;left:calc(92px * var(--space-scale,1));top:158px;font-size:calc(48px * var(--type-scale,1));letter-spacing:-.4px">{{title|组织架构}}</h2>
|
|
3
|
-
<svg width="1280" height="720" viewBox="0 0 1280 720" style="position:absolute;inset:0;pointer-events:none"><g class="hub-link" fill="none" stroke-width="1.5"><line x1="640" y1="352" x2="640" y2="416"/><line x1="300" y1="416" x2="980" y2="416"/><line x1="300" y1="416" x2="300" y2="452"/><line x1="640" y1="416" x2="640" y2="452"/><line x1="980" y1="416" x2="980" y2="452"/></g></svg><div class="card" style="position:absolute;left:520px;top:290px;width:240px;height:62px;display:flex;align-items:center;justify-content:center"><div class="card-title" style="font-size:calc(20px * var(--type-scale,1));font-weight:700">{{top|最高负责人}}</div></div><div class="card" style="position:absolute;left:180px;top:452px;width:240px;height:
|
|
3
|
+
<svg width="1280" height="720" viewBox="0 0 1280 720" style="position:absolute;inset:0;pointer-events:none"><g class="hub-link" fill="none" stroke-width="1.5"><line x1="640" y1="352" x2="640" y2="416"/><line x1="300" y1="416" x2="980" y2="416"/><line x1="300" y1="416" x2="300" y2="452"/><line x1="640" y1="416" x2="640" y2="452"/><line x1="980" y1="416" x2="980" y2="452"/></g></svg><div class="card" style="position:absolute;left:520px;top:290px;width:240px;height:62px;display:flex;align-items:center;justify-content:center"><div class="card-title" style="font-size:calc(20px * var(--type-scale,1));font-weight:700">{{top|最高负责人}}</div></div><div class="card" style="position:absolute;left:180px;top:452px;width:240px;min-height:96px;padding:22px"><div class="card-title" style="font-size:calc(18px * var(--type-scale,1));font-weight:700">{{dept1_title|技术部}}</div><p class="card-body" style="font-size:calc(14px * var(--type-scale,1));line-height:1.5;margin-top:8px">{{dept1_body|职能一句说明。}}</p></div><div class="card" style="position:absolute;left:520px;top:452px;width:240px;min-height:96px;padding:22px"><div class="card-title" style="font-size:calc(18px * var(--type-scale,1));font-weight:700">{{dept2_title|产品部}}</div><p class="card-body" style="font-size:calc(14px * var(--type-scale,1));line-height:1.5;margin-top:8px">{{dept2_body|职能一句说明。}}</p></div><div class="card" style="position:absolute;left:860px;top:452px;width:240px;min-height:96px;padding:22px"><div class="card-title" style="font-size:calc(18px * var(--type-scale,1));font-weight:700">{{dept3_title|运营部}}</div><p class="card-body" style="font-size:calc(14px * var(--type-scale,1));line-height:1.5;margin-top:8px">{{dept3_body|职能一句说明。}}</p></div>
|
|
4
4
|
<div class="rule rule-foot" style="position:absolute;left:calc(96px * var(--space-scale,1));right:calc(96px * var(--space-scale,1));bottom:40px;height:1px"></div><div class="deck-footer" style="position:absolute;left:calc(96px * var(--space-scale,1));bottom:17px;font-size:calc(12px * var(--type-scale,1));letter-spacing:.1em">{{footer|报告标题 / 章节}}</div><div class="deck-pageno" style="position:absolute;right:calc(96px * var(--space-scale,1));bottom:17px;font-size:calc(12px * var(--type-scale,1))">{{pageno|01}}</div></section>
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<!-- layouts/pitch-problem — Theme V2. role=pitch.problem; density=low; max-points=3. -->
|
|
2
|
+
<section class="slide" data-layout="pitch-problem" style="position:relative;width:1280px;height:720px;overflow:hidden"><div class="slide-backdrop"></div>
|
|
3
|
+
<div class="eyebrow-row" style="position:absolute;left:84px;top:66px;display:flex;gap:12px;align-items:center"><span class="accent-bar" style="width:28px;height:2px"></span><span class="eyebrow">{{eyebrow|THE PROBLEM}}</span></div><h2 class="deck-title" style="position:absolute;left:80px;top:104px;width:760px;font-size:calc(54px * var(--type-scale,1))">{{title|客户正在为一个昂贵的问题买单}}</h2>
|
|
4
|
+
<div class="metric-card metric-card--hero" style="position:absolute;right:80px;top:92px;width:276px;height:180px"><div class="metric-label">{{stat_label|年度损失}}</div><div class="metric-value" style="margin-top:28px">{{stat|$4.2B}}</div><p class="component-copy" style="margin-top:10px">{{stat_note|来自低效流程与信息断层}}</p></div>
|
|
5
|
+
<div class="component-grid" style="position:absolute;left:80px;right:80px;top:338px;grid-template-columns:repeat(3,1fr)"><div class="component-card"><div class="component-label">01</div><h3 class="component-title" style="font-size:22px;margin-top:14px">{{point1_title|耗时}}</h3><p class="component-copy" style="font-size:15px;margin-top:10px">{{point1_body|核心任务被大量手工步骤拖慢。}}</p></div><div class="component-card"><div class="component-label">02</div><h3 class="component-title" style="font-size:22px;margin-top:14px">{{point2_title|昂贵}}</h3><p class="component-copy" style="font-size:15px;margin-top:10px">{{point2_body|团队用人力填补系统之间的缺口。}}</p></div><div class="component-card"><div class="component-label">03</div><h3 class="component-title" style="font-size:22px;margin-top:14px">{{point3_title|不可控}}</h3><p class="component-copy" style="font-size:15px;margin-top:10px">{{point3_body|缺少统一数据导致决策滞后。}}</p></div></div>
|
|
6
|
+
<div class="deck-footer" style="position:absolute;left:80px;bottom:30px">{{footer|PITCH DECK / PROBLEM}}</div><div class="deck-pageno" style="position:absolute;right:80px;bottom:30px">{{pageno|02}}</div></section>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<!-- layouts/pitch-solution — Theme V2. role=pitch.solution; density=medium; max-pillars=3. -->
|
|
2
|
+
<section class="slide" data-layout="pitch-solution" style="position:relative;width:1280px;height:720px;overflow:hidden"><div class="slide-backdrop"></div>
|
|
3
|
+
<span class="badge badge--accent" style="position:absolute;left:80px;top:66px">{{badge|OUR SOLUTION}}</span><h2 class="deck-title" style="position:absolute;left:80px;top:116px;width:760px;font-size:calc(52px * var(--type-scale,1))">{{title|把复杂工作压缩成一条清晰路径}}</h2><p class="component-copy" style="position:absolute;right:80px;top:128px;width:300px;font-size:17px">{{lead|统一数据、自动执行,并把结果送回团队每天使用的工作界面。}}</p>
|
|
4
|
+
<div class="component-grid" style="position:absolute;left:80px;right:80px;top:298px;grid-template-columns:repeat(3,1fr)"><div class="feature-card"><span class="data-chip">01</span><h3 class="component-title" style="font-size:24px;margin-top:22px">{{pillar1_title|连接}}</h3><p class="component-copy" style="margin-top:12px">{{pillar1_body|接入现有系统与上下文。}}</p></div><div class="feature-card component-card--strong"><span class="data-chip">02</span><h3 class="component-title" style="font-size:24px;margin-top:22px">{{pillar2_title|理解}}</h3><p class="component-copy" style="margin-top:12px">{{pillar2_body|把信息转成可执行判断。}}</p></div><div class="feature-card"><span class="data-chip">03</span><h3 class="component-title" style="font-size:24px;margin-top:22px">{{pillar3_title|行动}}</h3><p class="component-copy" style="margin-top:12px">{{pillar3_body|自动完成流程并留下审计记录。}}</p></div></div>
|
|
5
|
+
<div class="deck-footer" style="position:absolute;left:80px;bottom:30px">{{footer|PITCH DECK / SOLUTION}}</div><div class="deck-pageno" style="position:absolute;right:80px;bottom:30px">{{pageno|03}}</div></section>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<!-- layouts/pricing-tiers — Theme V2. role=pitch.pricing; tiers=3. -->
|
|
2
|
+
<section class="slide" data-layout="pricing-tiers" style="position:relative;width:1280px;height:720px;overflow:hidden"><div class="slide-backdrop"></div>
|
|
3
|
+
<div class="eyebrow" style="position:absolute;left:80px;top:64px">{{eyebrow|PRICING}}</div><h2 class="deck-title" style="position:absolute;left:80px;top:104px;font-size:calc(50px * var(--type-scale,1))">{{title|简单定价,为扩张留出空间}}</h2>
|
|
4
|
+
<div class="component-grid" style="position:absolute;left:80px;right:80px;top:218px;grid-template-columns:repeat(3,1fr)"><div class="price-card"><div class="component-label">{{tier1|STARTER}}</div><div class="metric-value" style="margin-top:22px">{{price1|$99}}</div><div class="component-copy">{{unit1|/ month}}</div><h3 class="component-title" style="margin-top:34px">{{tier1_title|小团队起步}}</h3><p class="component-copy" style="margin-top:12px">{{tier1_body|核心工作流与标准集成。}}</p></div><div class="price-card price-card--featured"><span class="badge" style="position:absolute;right:18px;top:18px">{{featured|POPULAR}}</span><div class="component-label">{{tier2|GROWTH}}</div><div class="metric-value" style="margin-top:22px">{{price2|$399}}</div><div class="component-copy">{{unit2|/ month}}</div><h3 class="component-title" style="margin-top:34px">{{tier2_title|规模化增长}}</h3><p class="component-copy" style="margin-top:12px">{{tier2_body|高级自动化、分析与权限。}}</p></div><div class="price-card"><div class="component-label">{{tier3|ENTERPRISE}}</div><div class="metric-value" style="margin-top:22px">{{price3|Custom}}</div><div class="component-copy">{{unit3|annual contract}}</div><h3 class="component-title" style="margin-top:34px">{{tier3_title|企业级部署}}</h3><p class="component-copy" style="margin-top:12px">{{tier3_body|专属支持、安全与治理。}}</p></div></div>
|
|
5
|
+
<div class="deck-footer" style="position:absolute;left:80px;bottom:30px">{{footer|PITCH DECK / PRICING}}</div><div class="deck-pageno" style="position:absolute;right:80px;bottom:30px">{{pageno|08}}</div></section>
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<!-- layouts/product-device — Theme V2. role=pitch.product; media=device; features=3. -->
|
|
2
|
+
<section class="slide" data-layout="product-device" style="position:relative;width:1280px;height:720px;overflow:hidden"><div class="slide-backdrop"></div>
|
|
3
|
+
<div class="eyebrow" style="position:absolute;left:80px;top:68px">{{eyebrow|PRODUCT}}</div><h2 class="deck-title" style="position:absolute;left:80px;top:108px;width:490px;font-size:calc(50px * var(--type-scale,1))">{{title|产品在真实工作流里完成闭环}}</h2><p class="component-copy" style="position:absolute;left:80px;top:300px;width:430px;font-size:17px">{{body|从输入到决策再到行动,用户无需在多个工具之间切换。}}</p>
|
|
4
|
+
<div style="position:absolute;left:80px;top:398px;width:440px;display:grid;gap:12px"><div class="component-card" style="padding:13px 18px"><b class="component-title">{{feature1|自然语言发起任务}}</b></div><div class="component-card" style="padding:13px 18px"><b class="component-title">{{feature2|自动调用业务系统}}</b></div><div class="component-card" style="padding:13px 18px"><b class="component-title">{{feature3|全程可追踪与复核}}</b></div></div>
|
|
5
|
+
<div class="device-frame" style="position:absolute;right:92px;top:80px;width:570px;height:540px;display:flex;align-items:center;justify-content:center;background:var(--card-bg,transparent)"><div style="text-align:center;padding:50px"><div class="component-label">{{media_label|PRODUCT SCREEN}}</div><div class="metric-value" style="font-size:30px;margin-top:18px">{{screen_title|产品截图 / Demo}}</div><p class="component-copy" style="margin-top:12px">{{screen_note|用真实界面替换这个媒体槽。}}</p></div></div>
|
|
6
|
+
<div class="deck-footer" style="position:absolute;left:80px;bottom:30px">{{footer|PITCH DECK / PRODUCT}}</div><div class="deck-pageno" style="position:absolute;right:80px;bottom:30px">{{pageno|05}}</div></section>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"themeV2Layouts": ["pitch-problem","pitch-solution","market-rings","product-device","traction-milestones","business-model","pricing-tiers","funding-ask","customer-proof","team-founders"],
|
|
4
|
+
"intents": {
|
|
5
|
+
"cover": {"candidates":["cover","cover-statement","cover-image","cover-minimal"],"density":"low","maxItems":2,"media":"optional","scene":"hero","decorDensity":"high"},
|
|
6
|
+
"problem": {"candidates":["pitch-problem","problem-solution-banner","big-stat"],"density":"low","maxItems":3,"media":"none","scene":"hero","decorDensity":"high"},
|
|
7
|
+
"solution": {"candidates":["pitch-solution","problem-solution","cards-3"],"density":"medium","maxItems":3,"media":"optional","scene":"content","decorDensity":"medium"},
|
|
8
|
+
"product-demo": {"candidates":["product-device","image-left","image-full"],"density":"low","maxItems":3,"media":"required","scene":"media","decorDensity":"high"},
|
|
9
|
+
"market-size": {"candidates":["market-rings","ring-progress","big-stat"],"density":"low","maxItems":3,"media":"none","scene":"data","decorDensity":"medium"},
|
|
10
|
+
"market-growth": {"candidates":["chart-kpi","chart-full","stats-chart"],"density":"medium","maxItems":6,"media":"none","scene":"data","decorDensity":"medium"},
|
|
11
|
+
"competition": {"candidates":["matrix-2x2","comparison","versus"],"density":"medium","maxItems":6,"media":"none","scene":"data","decorDensity":"low"},
|
|
12
|
+
"business-model": {"candidates":["business-model","cards-3","funnel"],"density":"medium","maxItems":5,"media":"none","scene":"content","decorDensity":"low"},
|
|
13
|
+
"pricing": {"candidates":["pricing-tiers","comparison","data-table"],"density":"medium","maxItems":3,"media":"none","scene":"data","decorDensity":"medium"},
|
|
14
|
+
"traction": {"candidates":["traction-milestones","three-kpi","chart-kpi"],"density":"medium","maxItems":7,"media":"none","scene":"data","decorDensity":"medium"},
|
|
15
|
+
"go-to-market": {"candidates":["funnel","steps","timeline"],"density":"medium","maxItems":5,"media":"optional","scene":"content","decorDensity":"medium"},
|
|
16
|
+
"unit-economics": {"candidates":["two-kpi","three-kpi","data-table"],"density":"medium","maxItems":6,"media":"none","scene":"data","decorDensity":"medium"},
|
|
17
|
+
"financials": {"candidates":["chart-kpi","stats-chart","data-table"],"density":"high","maxItems":8,"media":"none","scene":"data","decorDensity":"low"},
|
|
18
|
+
"customer-proof": {"candidates":["customer-proof","quote-aside","quote"],"density":"low","maxItems":6,"media":"optional","scene":"media","decorDensity":"medium"},
|
|
19
|
+
"team": {"candidates":["team-founders","team-row","org-tree"],"density":"medium","maxItems":5,"media":"optional","scene":"media","decorDensity":"low"},
|
|
20
|
+
"funding-ask": {"candidates":["funding-ask","big-stat","section-stat"],"density":"low","maxItems":4,"media":"none","scene":"closing","decorDensity":"high"},
|
|
21
|
+
"use-of-funds": {"candidates":["funding-ask","ring-progress","data-table"],"density":"medium","maxItems":5,"media":"none","scene":"data","decorDensity":"medium"},
|
|
22
|
+
"close": {"candidates":["ending-contact","ending","cover-statement"],"density":"low","maxItems":3,"media":"optional","scene":"closing","decorDensity":"high"}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"banner-columns":{"slots":["banner","col1_title","b1","b2","col2_title","b3","b4","col3_title","b5"],"chart":false},"bento":{"slots":["eyebrow","title","big_title","big_num","big_unit","big_body","card1_title","card1_body","card2_title","card2_body","card3_title","card3_body","card4_title","card4_body","footer","pageno"],"chart":false},"big-stat":{"slots":["eyebrow","title","stat","unit","lead","note","footer","pageno"],"chart":false},"blocks-2x2":{"slots":["eyebrow","title","intro","block1_title","block1_body","block2_title","block2_body","block3_title","block3_body","block4_title","block4_body","quote","quote_attr","refs","footer","pageno"],"chart":false},"brand-values":{"slots":["eyebrow","title","footer","pageno"],"rows":{"values":["name","body"]},"chart":false},"cards-3":{"slots":["eyebrow","title","card1_title","card1_body","card2_title","card2_body","card3_title","card3_body","footer","pageno"],"chart":false},"cards-grid":{"slots":["eyebrow","title","card1_title","card1_body","card2_title","card2_body","card3_title","card3_body","card4_title","card4_body","card5_title","card5_body","card6_title","card6_body","footer","pageno"],"chart":false},"chart-full":{"slots":["eyebrow","title","lead","source","footer","pageno"],"chart":true},"chart-kpi":{"slots":["eyebrow","title","kpi1_num","kpi1_unit","kpi1_label","kpi2_num","kpi2_unit","kpi2_label","footer","pageno"],"chart":true},"color-palette":{"slots":["eyebrow","title","footer","pageno"],"rows":{"swatches":["name","hex"]},"chart":false},"comparison":{"slots":["eyebrow","title","colA_title","dim1","colA_v1","dim2","colA_v2","dim3","colA_v3","badge","colB_title","colB_v1","colB_v2","colB_v3","colC_title","colC_v1","colC_v2","colC_v3","footer","pageno"],"chart":false},"concept-hub":{"slots":["eyebrow","title","center_title","center_body","node1_title","node1_body","node2_title","node2_body","node3_title","node3_body","node4_title","node4_body","footer","pageno"],"chart":false},"cover-centered":{"slots":["eyebrow","title","subtitle","meta"],"chart":false},"cover-image":{"slots":["image_label","eyebrow","title","subtitle"],"chart":false},"cover-minimal":{"slots":["title","subtitle","meta"],"chart":false},"cover-statement":{"slots":["eyebrow","statement","meta"],"chart":false},"cover":{"slots":["eyebrow","title","subtitle","presenter","date"],"chart":false},"data-table":{"slots":["eyebrow","title","col0","col1","col2","col3","r1_key","r1c1","r1c2","r1c3","r2_key","r2c1","r2c2","r2c3","r3_key","r3c1","r3c2","r3c3","r4_key","r4c1","r4c2","r4c3","footer","pageno"],"chart":false},"dos-donts":{"slots":["eyebrow","do_head","do1","do2","do3","do4","dont_head","dont1","dont2","dont3","dont4","footer","pageno"],"chart":false},"editorial-panel":{"slots":["eyebrow","title","lead1","lead2","quote","quote_attr","card1_title","card1_body","card2_title","card2_body","card3_title","card3_body","card4_title","card4_body","list_title","list1","list2","list3","list4","note"],"chart":false},"ending-contact":{"slots":["eyebrow","title","email","phone","web","addr"],"chart":false},"ending":{"slots":["eyebrow","title","sub","contact"],"chart":false},"funnel":{"slots":["eyebrow","title","s1_label","s1_val","s2_label","s2_val","s3_label","s3_val","s4_label","s4_val","rate_label","rate","footer","pageno"],"chart":false},"gantt":{"slots":["eyebrow","title","footer","pageno"],"rows":{"cols":["label"],"tasks":["name","from","to"]},"chart":false},"hero":{"slots":["eyebrow","title","sub"],"chart":false},"icon-row":{"slots":["eyebrow","title","item1_title","item1_body","item2_title","item2_body","item3_title","item3_body","item4_title","item4_body","footer","pageno"],"chart":false},"image-full":{"slots":["image_label","eyebrow","title","caption","pageno"],"chart":false},"image-grid":{"slots":["eyebrow","title","img1_label","img1_title","img1_body","img2_label","img2_title","img2_body","img3_label","img3_title","img3_body","footer","pageno"],"chart":false},"image-left":{"slots":["eyebrow","title","image_label","card1_title","card1_body","card2_title","card2_body","card3_title","card3_body","footer","pageno"],"chart":false},"list":{"slots":["eyebrow","title","item1_title","item1_desc","item2_title","item2_desc","item3_title","item3_desc","item4_title","item4_desc","footer","pageno"],"chart":false},"logo-guidelines":{"slots":["eyebrow","title","wordmark","tagline","v1_label","v2_label","v3_label","footer","pageno"],"chart":false},"map-distribution":{"slots":["eyebrow","title","footer","pageno"],"rows":{"pins":["x","y"],"regions":["name","pct"]},"chart":false},"map-quad":{"slots":["title","q1_num","q1_unit","q1_label","q1_note","q2_num","q2_unit","q2_label","q2_note","q3_num","q3_unit","q3_label","q3_note","q4_num","q4_unit","q4_label","q4_note","footer","pageno"],"chart":false},"matrix-2x2":{"slots":["eyebrow","title","q1_title","q1_body","q2_title","q2_body","q3_title","q3_body","q4_title","q4_body","footer","pageno"],"chart":false},"numbered-brief":{"slots":["title","para1","para2","quote","source","right_title","item1_title","item2_title","item3_title","item4_title","source_label","source_note","pageno"],"chart":false},"org-tree":{"slots":["eyebrow","title","top","dept1_title","dept1_body","dept2_title","dept2_body","dept3_title","dept3_body","footer","pageno"],"chart":false},"problem-solution-banner":{"slots":["problem_label","problem_body","image_label","solution_body","solution_label"],"chart":false},"problem-solution":{"slots":["eyebrow","title","problem_title","problem_1","problem_2","problem_3","solution_title","solution_1","solution_2","solution_3","footer","pageno"],"chart":false},"pyramid":{"slots":["eyebrow","title","level1","level2","level3","level4","footer","pageno"],"chart":false},"quote-aside":{"slots":["quote","source","footer","pageno"],"chart":false},"quote":{"slots":["eyebrow","quote","source","footer","pageno"],"chart":false},"radar":{"slots":["eyebrow","title","footer","pageno"],"rows":{"metrics":["name","score"]},"chart":"derived"},"ring-progress":{"slots":["eyebrow","title","footer","pageno"],"rows":{"rings":["label","pct","note"]},"chart":false},"section-fullbleed":{"slots":["image_label","desc","index","title"],"chart":false},"section-image":{"slots":["index","eyebrow","title","desc","image_label","footer","pageno"],"chart":false},"section-stat":{"slots":["eyebrow","title","desc","stat","unit","stat_label","footer","pageno"],"chart":false},"section":{"slots":["index","eyebrow","title","desc","footer","pageno"],"chart":false},"split-two-col":{"slots":["eyebrow","title","card1_title","card1_body","card2_title","card2_body","card3_title","card3_body","image_label","footer","pageno"],"chart":false},"stats-chart":{"slots":["brand1","brand2","brand3","title","note"],"chart":true},"steps-serpentine":{"slots":["eyebrow","title","step1_title","step1_body","step2_title","step2_body","step3_title","step3_body","step4_title","step4_body","step5_title","step5_body","step6_title","step6_body","step7_title","step7_body","step8_title","step8_body"],"chart":false},"steps-vertical":{"slots":["eyebrow","title","footer","pageno"],"rows":{"steps":["name","body"]},"chart":false},"steps":{"slots":["eyebrow","title","step1_title","step1_body","step2_title","step2_body","step3_title","step3_body","step4_title","step4_body","footer","pageno"],"chart":false},"team-row":{"slots":["eyebrow","title","footer","pageno"],"rows":{"members":["name","role"]},"chart":false},"three-kpi":{"slots":["eyebrow","title","kpi1_num","kpi1_unit","kpi1_name","kpi1_desc","kpi2_num","kpi2_unit","kpi2_name","kpi2_desc","kpi3_num","kpi3_unit","kpi3_name","kpi3_desc","footer","pageno"],"chart":false},"timeline":{"slots":["eyebrow","title","item1_date","item1_title","item1_desc","item2_date","item2_title","item2_desc","item3_date","item3_title","item3_desc","item4_date","item4_title","item4_desc","footer","pageno"],"chart":false},"title-meta":{"slots":["index","eyebrow","title","subtitle","meta"],"chart":false},"title":{"slots":["eyebrow","title"],"chart":false},"toc-agenda":{"slots":["eyebrow","title","item1_title","item1_dur","item2_title","item2_dur","item3_title","item3_dur","item4_title","item4_dur","item5_title","item5_dur","footer","pageno"],"chart":false},"toc-editorial":{"slots":["item1_title","item1_desc","item2_title","item2_desc","item3_title","item3_desc","item4_title","item4_desc","title","desc","footer","pageno"],"chart":false},"toc-panel":{"slots":["brand1","brand2","brand3","title"],"rows":{"entries":["name","desc"]},"chart":false},"toc":{"slots":["eyebrow","title","item1_title","item1_desc","item2_title","item2_desc","item3_title","item3_desc","item4_title","item4_desc","footer","pageno"],"chart":false},"transition":{"slots":["eyebrow","number","title"],"chart":false},"two-kpi":{"slots":["eyebrow","title","kpi1_num","kpi1_unit","kpi1_label","kpi2_num","kpi2_unit","kpi2_label","footer","pageno"],"chart":false},"type-specimen":{"slots":["eyebrow","title","specimen","font_name","weights","heading_label","heading_sample","body_label","body_sample","charset","footer","pageno"],"chart":false},"versus":{"slots":["eyebrow","title","before_title","before_num","before_body","after_title","after_num","after_body","footer","pageno"],"chart":false}}
|
|
1
|
+
{"banner-columns":{"slots":["banner","col1_title","b1","b2","col2_title","b3","b4","col3_title","b5"],"chart":false},"bento":{"slots":["eyebrow","title","big_title","big_num","big_unit","big_body","card1_title","card1_body","card2_title","card2_body","card3_title","card3_body","card4_title","card4_body","footer","pageno"],"chart":false},"big-stat":{"slots":["eyebrow","title","stat","unit","lead","note","footer","pageno"],"chart":false},"blocks-2x2":{"slots":["eyebrow","title","intro","block1_title","block1_body","block2_title","block2_body","block3_title","block3_body","block4_title","block4_body","quote","quote_attr","refs","footer","pageno"],"chart":false},"brand-values":{"slots":["eyebrow","title","footer","pageno"],"rows":{"values":["name","body"]},"chart":false},"business-model":{"slots":["eyebrow","title","tag","stream1_label","stream1_value","stream1_body","stream2_label","stream2_value","stream2_body","stream3_label","stream3_value","stream3_body","econ1_label","econ1","econ2_label","econ2","footer","pageno"],"chart":false},"cards-3":{"slots":["eyebrow","title","card1_title","card1_body","card2_title","card2_body","card3_title","card3_body","footer","pageno"],"chart":false},"cards-grid":{"slots":["eyebrow","title","card1_title","card1_body","card2_title","card2_body","card3_title","card3_body","card4_title","card4_body","card5_title","card5_body","card6_title","card6_body","footer","pageno"],"chart":false},"chart-full":{"slots":["eyebrow","title","lead","source","footer","pageno"],"chart":true},"chart-kpi":{"slots":["eyebrow","title","kpi1_num","kpi1_unit","kpi1_label","kpi2_num","kpi2_unit","kpi2_label","footer","pageno"],"chart":true},"color-palette":{"slots":["eyebrow","title","footer","pageno"],"rows":{"swatches":["name","hex"]},"chart":false},"comparison":{"slots":["eyebrow","title","colA_title","dim1","colA_v1","dim2","colA_v2","dim3","colA_v3","badge","colB_title","colB_v1","colB_v2","colB_v3","colC_title","colC_v1","colC_v2","colC_v3","footer","pageno"],"chart":false},"concept-hub":{"slots":["eyebrow","title","center_title","center_body","node1_title","node1_body","node2_title","node2_body","node3_title","node3_body","node4_title","node4_body","footer","pageno"],"chart":false},"cover-centered":{"slots":["eyebrow","title","subtitle","meta"],"chart":false},"cover-image":{"slots":["image_label","eyebrow","title","subtitle"],"chart":false},"cover-minimal":{"slots":["title","subtitle","meta"],"chart":false},"cover-statement":{"slots":["eyebrow","statement","meta"],"chart":false},"cover":{"slots":["eyebrow","title","subtitle","presenter","date"],"chart":false},"customer-proof":{"slots":["eyebrow","title","quote","person","role","metric1_label","metric1","metric2_label","metric2","logo1","logo2","logo3","logo4","footer","pageno"],"chart":false},"data-table":{"slots":["eyebrow","title","col0","col1","col2","col3","r1_key","r1c1","r1c2","r1c3","r2_key","r2c1","r2c2","r2c3","r3_key","r3c1","r3c2","r3c3","r4_key","r4c1","r4c2","r4c3","footer","pageno"],"chart":false},"dos-donts":{"slots":["eyebrow","do_head","do1","do2","do3","do4","dont_head","dont1","dont2","dont3","dont4","footer","pageno"],"chart":false},"editorial-panel":{"slots":["eyebrow","title","lead1","lead2","quote","quote_attr","card1_title","card1_body","card2_title","card2_body","card3_title","card3_body","card4_title","card4_body","list_title","list1","list2","list3","list4","note"],"chart":false},"ending-contact":{"slots":["eyebrow","title","email","phone","web","addr"],"chart":false},"ending":{"slots":["eyebrow","title","sub","contact"],"chart":false},"funding-ask":{"slots":["eyebrow","round","ask","runway","title","use1","pct1","use2","pct2","use3","pct3","footer","pageno"],"chart":false},"funnel":{"slots":["eyebrow","title","s1_label","s1_val","s2_label","s2_val","s3_label","s3_val","s4_label","s4_val","rate_label","rate","footer","pageno"],"chart":false},"gantt":{"slots":["eyebrow","title","footer","pageno"],"rows":{"cols":["label"],"tasks":["name","from","to"]},"chart":false},"hero":{"slots":["eyebrow","title","sub"],"chart":false},"icon-row":{"slots":["eyebrow","title","item1_title","item1_body","item2_title","item2_body","item3_title","item3_body","item4_title","item4_body","footer","pageno"],"chart":false},"image-full":{"slots":["image_label","eyebrow","title","caption","pageno"],"chart":false},"image-grid":{"slots":["eyebrow","title","img1_label","img1_title","img1_body","img2_label","img2_title","img2_body","img3_label","img3_title","img3_body","footer","pageno"],"chart":false},"image-left":{"slots":["eyebrow","title","image_label","card1_title","card1_body","card2_title","card2_body","card3_title","card3_body","footer","pageno"],"chart":false},"list":{"slots":["eyebrow","title","item1_title","item1_desc","item2_title","item2_desc","item3_title","item3_desc","item4_title","item4_desc","footer","pageno"],"chart":false},"logo-guidelines":{"slots":["eyebrow","title","wordmark","tagline","v1_label","v2_label","v3_label","footer","pageno"],"chart":false},"map-distribution":{"slots":["eyebrow","title","footer","pageno"],"rows":{"pins":["x","y"],"regions":["name","pct"]},"chart":false},"map-quad":{"slots":["title","q1_num","q1_unit","q1_label","q1_note","q2_num","q2_unit","q2_label","q2_note","q3_num","q3_unit","q3_label","q3_note","q4_num","q4_unit","q4_label","q4_note","footer","pageno"],"chart":false},"market-rings":{"slots":["eyebrow","title","body","growth","tam_label","tam","sam_label","sam","som_label","som","footer","pageno"],"chart":false},"matrix-2x2":{"slots":["eyebrow","title","q1_title","q1_body","q2_title","q2_body","q3_title","q3_body","q4_title","q4_body","footer","pageno"],"chart":false},"numbered-brief":{"slots":["title","para1","para2","quote","source","right_title","item1_title","item2_title","item3_title","item4_title","source_label","source_note","pageno"],"chart":false},"org-tree":{"slots":["eyebrow","title","top","dept1_title","dept1_body","dept2_title","dept2_body","dept3_title","dept3_body","footer","pageno"],"chart":false},"pitch-problem":{"slots":["eyebrow","title","stat_label","stat","stat_note","point1_title","point1_body","point2_title","point2_body","point3_title","point3_body","footer","pageno"],"chart":false},"pitch-solution":{"slots":["badge","title","lead","pillar1_title","pillar1_body","pillar2_title","pillar2_body","pillar3_title","pillar3_body","footer","pageno"],"chart":false},"pricing-tiers":{"slots":["eyebrow","title","tier1","price1","unit1","tier1_title","tier1_body","featured","tier2","price2","unit2","tier2_title","tier2_body","tier3","price3","unit3","tier3_title","tier3_body","footer","pageno"],"chart":false},"problem-solution-banner":{"slots":["problem_label","problem_body","image_label","solution_body","solution_label"],"chart":false},"problem-solution":{"slots":["eyebrow","title","problem_title","problem_1","problem_2","problem_3","solution_title","solution_1","solution_2","solution_3","footer","pageno"],"chart":false},"product-device":{"slots":["eyebrow","title","body","feature1","feature2","feature3","media_label","screen_title","screen_note","footer","pageno"],"chart":false},"pyramid":{"slots":["eyebrow","title","level1","level2","level3","level4","footer","pageno"],"chart":false},"quote-aside":{"slots":["quote","source","footer","pageno"],"chart":false},"quote":{"slots":["eyebrow","quote","source","footer","pageno"],"chart":false},"radar":{"slots":["eyebrow","title","footer","pageno"],"rows":{"metrics":["name","score"]},"chart":"derived"},"ring-progress":{"slots":["eyebrow","title","footer","pageno"],"rows":{"rings":["label","pct","note"]},"chart":false},"section-fullbleed":{"slots":["image_label","desc","index","title"],"chart":false},"section-image":{"slots":["index","eyebrow","title","desc","image_label","footer","pageno"],"chart":false},"section-stat":{"slots":["eyebrow","title","desc","stat","unit","stat_label","footer","pageno"],"chart":false},"section":{"slots":["index","eyebrow","title","desc","footer","pageno"],"chart":false},"split-two-col":{"slots":["eyebrow","title","card1_title","card1_body","card2_title","card2_body","card3_title","card3_body","image_label","footer","pageno"],"chart":false},"stats-chart":{"slots":["brand1","brand2","brand3","title","note"],"chart":true},"steps-serpentine":{"slots":["eyebrow","title","step1_title","step1_body","step2_title","step2_body","step3_title","step3_body","step4_title","step4_body","step5_title","step5_body","step6_title","step6_body","step7_title","step7_body","step8_title","step8_body"],"chart":false},"steps-vertical":{"slots":["eyebrow","title","footer","pageno"],"rows":{"steps":["name","body"]},"chart":false},"steps":{"slots":["eyebrow","title","step1_title","step1_body","step2_title","step2_body","step3_title","step3_body","step4_title","step4_body","footer","pageno"],"chart":false},"team-founders":{"slots":["eyebrow","title","lead","f1_initials","f1_name","f1_role","f1_bio","f2_initials","f2_name","f2_role","f2_bio","f3_initials","f3_name","f3_role","f3_bio","footer","pageno"],"chart":false},"team-row":{"slots":["eyebrow","title","footer","pageno"],"rows":{"members":["name","role"]},"chart":false},"three-kpi":{"slots":["eyebrow","title","kpi1_num","kpi1_unit","kpi1_name","kpi1_desc","kpi2_num","kpi2_unit","kpi2_name","kpi2_desc","kpi3_num","kpi3_unit","kpi3_name","kpi3_desc","footer","pageno"],"chart":false},"timeline":{"slots":["eyebrow","title","item1_date","item1_title","item1_desc","item2_date","item2_title","item2_desc","item3_date","item3_title","item3_desc","item4_date","item4_title","item4_desc","footer","pageno"],"chart":false},"title-meta":{"slots":["index","eyebrow","title","subtitle","meta"],"chart":false},"title":{"slots":["eyebrow","title"],"chart":false},"toc-agenda":{"slots":["eyebrow","title","item1_title","item1_dur","item2_title","item2_dur","item3_title","item3_dur","item4_title","item4_dur","item5_title","item5_dur","footer","pageno"],"chart":false},"toc-editorial":{"slots":["item1_title","item1_desc","item2_title","item2_desc","item3_title","item3_desc","item4_title","item4_desc","title","desc","footer","pageno"],"chart":false},"toc-panel":{"slots":["brand1","brand2","brand3","title"],"rows":{"entries":["name","desc"]},"chart":false},"toc":{"slots":["eyebrow","title","item1_title","item1_desc","item2_title","item2_desc","item3_title","item3_desc","item4_title","item4_desc","footer","pageno"],"chart":false},"traction-milestones":{"slots":["eyebrow","title","metric1_label","metric1","metric2_label","metric2","metric3_label","metric3","m1_date","m1","m2_date","m2","m3_date","m3","m4_date","m4","footer","pageno"],"chart":false},"transition":{"slots":["eyebrow","number","title"],"chart":false},"two-kpi":{"slots":["eyebrow","title","kpi1_num","kpi1_unit","kpi1_label","kpi2_num","kpi2_unit","kpi2_label","footer","pageno"],"chart":false},"type-specimen":{"slots":["eyebrow","title","specimen","font_name","weights","heading_label","heading_sample","body_label","body_sample","charset","footer","pageno"],"chart":false},"versus":{"slots":["eyebrow","title","before_title","before_num","before_body","after_title","after_num","after_body","footer","pageno"],"chart":false}}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
<!-- layouts/steps-vertical — structure-only variant (paint via skin). rows.steps{name,body} — the numbered circle uses the row index ({{_n}}); the connector line spans the list, so 3–5 steps all sit right. -->
|
|
2
2
|
<section class="slide" data-layout="steps-vertical" style="position:relative;width:1280px;height:720px;overflow:hidden"><div class="slide-backdrop"></div><div class="eyebrow-row" style="position:absolute;left:calc(96px * var(--space-scale,1));top:132px;display:flex;align-items:center;gap:14px"><span class="accent-bar" style="width:30px;height:1px;display:inline-block"></span><span class="eyebrow" style="font-size:calc(13px * var(--type-scale,1));letter-spacing:.28em">{{eyebrow|PROCESS}}</span></div><h2 class="deck-title" style="position:absolute;left:calc(92px * var(--space-scale,1));top:158px;font-size:calc(48px * var(--type-scale,1));letter-spacing:-.4px">{{title|实施步骤}}</h2>
|
|
3
|
-
<div style="position:absolute;left:calc(96px * var(--space-scale,1));right:calc(96px * var(--space-scale,1));top:290px;display:flex;flex-direction:column;gap:20px"><div class="step-line" style="position:absolute;left:
|
|
3
|
+
<div style="position:absolute;left:calc(96px * var(--space-scale,1));right:calc(96px * var(--space-scale,1));top:290px;display:flex;flex-direction:column;gap:20px"><div class="step-line" style="position:absolute;left:31px;top:41px;bottom:41px;width:2px"></div>{{#steps}}<div style="position:relative;display:flex;align-items:center;gap:28px;height:82px"><div class="step-circle" style="width:64px;height:64px;border-radius:50%;flex:0 0 auto;display:flex;align-items:center;justify-content:center;text-align:center;line-height:1;font-size:calc(26px * var(--type-scale,1));font-weight:700">{{_n|1}}</div><div><div class="step-title" style="font-size:calc(21px * var(--type-scale,1));font-weight:700">{{name|占位步骤}}</div><p class="step-body" style="font-size:calc(15px * var(--type-scale,1));line-height:1.5;margin-top:4px">{{body|一句说明,替换为真实内容。}}</p></div></div>{{/steps}}</div>
|
|
4
4
|
<div class="rule rule-foot" style="position:absolute;left:calc(96px * var(--space-scale,1));right:calc(96px * var(--space-scale,1));bottom:40px;height:1px"></div><div class="deck-footer" style="position:absolute;left:calc(96px * var(--space-scale,1));bottom:17px;font-size:calc(12px * var(--type-scale,1));letter-spacing:.1em">{{footer|报告标题 / 章节}}</div><div class="deck-pageno" style="position:absolute;right:calc(96px * var(--space-scale,1));bottom:17px;font-size:calc(12px * var(--type-scale,1))">{{pageno|01}}</div></section>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<!-- layouts/team-founders — Theme V2. role=pitch.team; founders=3. -->
|
|
2
|
+
<section class="slide" data-layout="team-founders" style="position:relative;width:1280px;height:720px;overflow:hidden"><div class="slide-backdrop"></div>
|
|
3
|
+
<div class="eyebrow" style="position:absolute;left:80px;top:66px">{{eyebrow|FOUNDING TEAM}}</div><h2 class="deck-title" style="position:absolute;left:80px;top:106px;width:700px;font-size:calc(50px * var(--type-scale,1))">{{title|为这个问题而生的团队}}</h2><p class="component-copy" style="position:absolute;right:80px;top:120px;width:330px">{{lead|兼具行业经验、技术能力与规模化商业执行。}}</p>
|
|
4
|
+
<div class="component-grid" style="position:absolute;left:80px;right:80px;top:248px;grid-template-columns:repeat(3,1fr)"><div class="team-card"><div class="avatar-frame" style="width:74px;height:74px;display:flex;align-items:center;justify-content:center;background:var(--hair)"><span class="data-chip">{{f1_initials|AL}}</span></div><h3 class="component-title" style="font-size:24px;margin-top:20px">{{f1_name|Alex Lin}}</h3><div class="component-label" style="margin-top:6px">{{f1_role|CEO}}</div><p class="component-copy" style="font-size:14px;margin-top:18px">{{f1_bio|曾负责行业产品与商业化,拥有十年一线经验。}}</p></div><div class="team-card"><div class="avatar-frame" style="width:74px;height:74px;display:flex;align-items:center;justify-content:center;background:var(--hair)"><span class="data-chip">{{f2_initials|MY}}</span></div><h3 class="component-title" style="font-size:24px;margin-top:20px">{{f2_name|Mina Yu}}</h3><div class="component-label" style="margin-top:6px">{{f2_role|CTO}}</div><p class="component-copy" style="font-size:14px;margin-top:18px">{{f2_bio|构建过大规模数据与 AI 平台,带领多学科团队。}}</p></div><div class="team-card"><div class="avatar-frame" style="width:74px;height:74px;display:flex;align-items:center;justify-content:center;background:var(--hair)"><span class="data-chip">{{f3_initials|RC}}</span></div><h3 class="component-title" style="font-size:24px;margin-top:20px">{{f3_name|Ray Chen}}</h3><div class="component-label" style="margin-top:6px">{{f3_role|CRO}}</div><p class="component-copy" style="font-size:14px;margin-top:18px">{{f3_bio|从零搭建企业销售体系并完成全球市场扩张。}}</p></div></div>
|
|
5
|
+
<div class="deck-footer" style="position:absolute;left:80px;bottom:30px">{{footer|PITCH DECK / TEAM}}</div><div class="deck-pageno" style="position:absolute;right:80px;bottom:30px">{{pageno|11}}</div></section>
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<!-- layouts/traction-milestones — Theme V2. role=pitch.traction; metrics=3; milestones=4. -->
|
|
2
|
+
<section class="slide" data-layout="traction-milestones" style="position:relative;width:1280px;height:720px;overflow:hidden"><div class="slide-backdrop"></div>
|
|
3
|
+
<div class="eyebrow" style="position:absolute;left:80px;top:64px">{{eyebrow|TRACTION}}</div><h2 class="deck-title" style="position:absolute;left:80px;top:104px;font-size:calc(50px * var(--type-scale,1))">{{title|增长已经发生,而且正在加速}}</h2>
|
|
4
|
+
<div class="component-grid" style="position:absolute;left:80px;right:80px;top:206px;grid-template-columns:repeat(3,1fr)"><div class="metric-card"><div class="metric-label">{{metric1_label|ARR}}</div><div class="metric-value" style="margin-top:16px">{{metric1|$3.2M}}</div></div><div class="metric-card metric-card--hero"><div class="metric-label">{{metric2_label|YoY GROWTH}}</div><div class="metric-value" style="margin-top:16px">{{metric2|214%}}</div></div><div class="metric-card"><div class="metric-label">{{metric3_label|NET RETENTION}}</div><div class="metric-value" style="margin-top:16px">{{metric3|132%}}</div></div></div>
|
|
5
|
+
<div style="position:absolute;left:104px;right:104px;top:472px;height:2px;background:var(--hair)"></div><div style="position:absolute;left:80px;right:80px;top:444px;display:grid;grid-template-columns:repeat(4,1fr);gap:24px"><div><span class="timeline-node" style="display:block;margin:22px 0 18px"></span><b class="component-title">{{m1_date|Q1 2025}}</b><p class="component-copy" style="font-size:13px;margin-top:6px">{{m1|产品上线}}</p></div><div><span class="timeline-node" style="display:block;margin:22px 0 18px"></span><b class="component-title">{{m2_date|Q2 2025}}</b><p class="component-copy" style="font-size:13px;margin-top:6px">{{m2|首批付费客户}}</p></div><div><span class="timeline-node" style="display:block;margin:22px 0 18px"></span><b class="component-title">{{m3_date|Q4 2025}}</b><p class="component-copy" style="font-size:13px;margin-top:6px">{{m3|规模化销售}}</p></div><div><span class="timeline-node" style="display:block;margin:22px 0 18px"></span><b class="component-title">{{m4_date|Q2 2026}}</b><p class="component-copy" style="font-size:13px;margin-top:6px">{{m4|进入新市场}}</p></div></div>
|
|
6
|
+
<div class="deck-footer" style="position:absolute;left:80px;bottom:30px">{{footer|PITCH DECK / TRACTION}}</div><div class="deck-pageno" style="position:absolute;right:80px;bottom:30px">{{pageno|06}}</div></section>
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
:root{--cmp-media-radius:2px;--cmp-media-fit:cover;--cmp-media-filter:saturate(.72) contrast(1.16);--cmp-media-shadow:0 24px 54px rgba(0,0,0,.34)}
|
|
2
|
+
.media-frame:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 55%,rgba(0,0,0,.52));pointer-events:none}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
:root{--cmp-media-radius:28px;--cmp-media-fit:cover;--cmp-media-filter:none;--cmp-media-shadow:0 28px 64px rgba(0,0,0,.28)}
|
|
2
|
+
.device-frame{border:8px solid var(--title);outline:1px solid var(--hair)}
|
|
3
|
+
.device-frame:after{content:"";position:absolute;left:50%;top:7px;transform:translateX(-50%);width:22%;height:5px;border-radius:99px;background:var(--muted)}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
:root{--cmp-media-radius:28px;--cmp-media-fit:contain;--cmp-media-filter:saturate(1.08);--cmp-media-shadow:18px 28px 48px rgba(0,0,0,.24)}
|
|
2
|
+
.media-cutout,.media-frame{transform:perspective(900px) rotateY(-7deg) rotateX(3deg);border:1px solid color-mix(in srgb,var(--accent) 45%,var(--hair));background:color-mix(in srgb,var(--accent) 8%,var(--slide-bg))}
|
|
3
|
+
.media-cutout:after,.media-frame:after{content:"";position:absolute;inset:8%;border-radius:50%;background:var(--accent);filter:blur(42px);opacity:.16;z-index:-1}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"transition": {
|
|
3
|
+
"effect": "fade",
|
|
4
|
+
"durMs": 320
|
|
5
|
+
},
|
|
6
|
+
"entrance": {
|
|
7
|
+
"cover": [
|
|
8
|
+
{
|
|
9
|
+
"sel": ".overlay-title",
|
|
10
|
+
"anim": "fade-up",
|
|
11
|
+
"dur": 620
|
|
12
|
+
}
|
|
13
|
+
],
|
|
14
|
+
"cards": [
|
|
15
|
+
{
|
|
16
|
+
"sel": ".card",
|
|
17
|
+
"anim": "appear",
|
|
18
|
+
"stagger": 90
|
|
19
|
+
}
|
|
20
|
+
]
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"transition": {
|
|
3
|
+
"effect": "push",
|
|
4
|
+
"dir": "l",
|
|
5
|
+
"durMs": 420
|
|
6
|
+
},
|
|
7
|
+
"entrance": {
|
|
8
|
+
"cover": [
|
|
9
|
+
{
|
|
10
|
+
"sel": ".cover-sub",
|
|
11
|
+
"anim": "fade-up",
|
|
12
|
+
"dur": 620,
|
|
13
|
+
"delay": 150
|
|
14
|
+
}
|
|
15
|
+
],
|
|
16
|
+
"section": [
|
|
17
|
+
{
|
|
18
|
+
"sel": ".section-desc",
|
|
19
|
+
"anim": "fly-up",
|
|
20
|
+
"delay": 100
|
|
21
|
+
}
|
|
22
|
+
],
|
|
23
|
+
"stat": [
|
|
24
|
+
{
|
|
25
|
+
"sel": ".stat-note",
|
|
26
|
+
"anim": "appear",
|
|
27
|
+
"delay": 220
|
|
28
|
+
}
|
|
29
|
+
]
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
# packs ——
|
|
1
|
+
# packs —— 旧版组合包(兼容保留)
|
|
2
2
|
|
|
3
|
-
pack =
|
|
3
|
+
V1 pack = `pack.css` **加上**一组包专属签名版式。这个耦合模型为旧 deck
|
|
4
|
+
保留;新 deck 应把视觉 Theme 与 `layoutPack` 分开声明,见 `../theme-system.md`。
|
|
4
5
|
|
|
5
6
|
因为 `pack.css` 实现了契约,共享 `layouts/` 的全部结构版式在包内天然可用;
|
|
6
|
-
|
|
7
|
+
旧 spec 未写 `layoutPack` 时,包自带的同名版式仍**包内优先**;新 spec 可用
|
|
8
|
+
`layoutPack:"none"` 只取该包的视觉,或给另一个 style 显式配这个 layout pack。
|
|
7
9
|
|
|
8
10
|
目录结构见 `docs/superpowers/specs/2026-09-01-ppt-tpl-prod-design.md` §5.3。
|
|
9
11
|
|
|
@@ -20,6 +22,8 @@ pack = 实现完整 class 契约的 `pack.css` **加上**一组包专属签名
|
|
|
20
22
|
|---|---|---|---|
|
|
21
23
|
| **board-brief** 董事会简报 | biz-premium | `cover`(顶部密级条 + 标题压到中轴以下,共享版靠留白撑气势)· `toc-agenda`(编号/议题/时长的表格式议程,共享版是卡片列表) | 四角角标 |
|
|
22
24
|
| **press-room** 报刊头版 | editorial | `cover`(报头通栏 + 三分之二版大标题)· `section`(左栏轴 + 并列刊号,共享版是幽灵数字压在标题后)· `quote`(左侧巨型引号 + 右侧不对称引文,共享版是居中) | 顶部报头条 |
|
|
25
|
+
| **prismatic-3d** 棱镜空间 | tech-future | `cover`(左侧超大标题 + 右侧空间棱面)· `section-image`(三角媒体舞台 + 偏轴章节)· `big-stat`(巨型数字 + 角面地平线) | 紫黑棱面 + `spatial-3d` 媒体 |
|
|
26
|
+
| **mckinsey-photo** 咨询影像 | biz-premium | `cover` / `cover-image`(全幅企业照片 + 信息导轨)· `image-left`(55/45 图证分栏)· `numbered-brief`(渐变结论面板) | mckinsey 式咨询结构 + 照片叙事 |
|
|
23
27
|
|
|
24
28
|
## 新增一个包
|
|
25
29
|
|