@taloswork/ose-shared 0.0.2 → 0.0.4
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/mcp/gen/mcp.json +26 -0
- package/package.json +3 -3
- package/skills/document/SKILL.md +11 -7
- package/skills/document/assets/fonts/Anton-Regular.woff2 +0 -0
- package/skills/document/bin/doc-convert.cjs +983 -936
- package/skills/document/bin/doc-gen.cjs +52 -4
- package/skills/document/bin/html2pptx.cjs +34 -10
- package/skills/document/content-pipeline.md +4 -3
- package/skills/document/layouts/README.md +9 -0
- package/skills/document/layouts/bento.tpl +1 -1
- package/skills/document/layouts/big-stat.tpl +1 -1
- package/skills/document/layouts/blocks-2x2.tpl +3 -3
- package/skills/document/layouts/brand-values.tpl +1 -1
- package/skills/document/layouts/cards-3.tpl +1 -1
- package/skills/document/layouts/cards-grid.tpl +1 -1
- package/skills/document/layouts/chart-full.tpl +1 -1
- package/skills/document/layouts/chart-kpi.tpl +1 -1
- package/skills/document/layouts/color-palette.tpl +6 -6
- package/skills/document/layouts/comparison.tpl +2 -2
- package/skills/document/layouts/concept-hub.tpl +1 -1
- package/skills/document/layouts/cover-centered.tpl +1 -1
- package/skills/document/layouts/cover-image.tpl +1 -1
- package/skills/document/layouts/cover-minimal.tpl +1 -1
- package/skills/document/layouts/cover-statement.tpl +1 -1
- package/skills/document/layouts/cover.tpl +1 -1
- package/skills/document/layouts/data-table.tpl +1 -1
- package/skills/document/layouts/dos-donts.tpl +1 -1
- package/skills/document/layouts/editorial-panel.tpl +5 -5
- package/skills/document/layouts/ending-contact.tpl +1 -1
- package/skills/document/layouts/ending.tpl +1 -1
- package/skills/document/layouts/funnel.tpl +1 -1
- package/skills/document/layouts/gantt.tpl +2 -2
- package/skills/document/layouts/hero.tpl +1 -1
- package/skills/document/layouts/icon-row.tpl +1 -1
- package/skills/document/layouts/image-grid.tpl +1 -1
- package/skills/document/layouts/image-left.tpl +1 -1
- package/skills/document/layouts/list.tpl +1 -1
- package/skills/document/layouts/logo-guidelines.tpl +3 -3
- package/skills/document/layouts/map-distribution.tpl +1 -1
- package/skills/document/layouts/map-quad.tpl +1 -1
- package/skills/document/layouts/matrix-2x2.tpl +1 -1
- package/skills/document/layouts/numbered-brief.tpl +3 -3
- package/skills/document/layouts/org-tree.tpl +1 -1
- package/skills/document/layouts/problem-solution-banner.tpl +12 -0
- package/skills/document/layouts/problem-solution.tpl +2 -2
- package/skills/document/layouts/pyramid.tpl +1 -1
- package/skills/document/layouts/quote.tpl +1 -1
- package/skills/document/layouts/radar.tpl +1 -1
- package/skills/document/layouts/ring-progress.tpl +1 -1
- package/skills/document/layouts/section-fullbleed.tpl +8 -0
- package/skills/document/layouts/section-image.tpl +1 -1
- package/skills/document/layouts/section-stat.tpl +1 -1
- package/skills/document/layouts/section.tpl +1 -1
- package/skills/document/layouts/slots.json +763 -1
- package/skills/document/layouts/split-two-col.tpl +1 -1
- package/skills/document/layouts/stats-chart.tpl +2 -2
- package/skills/document/layouts/steps-serpentine.tpl +19 -0
- package/skills/document/layouts/steps-vertical.tpl +1 -1
- package/skills/document/layouts/steps.tpl +1 -1
- package/skills/document/layouts/team-row.tpl +6 -6
- package/skills/document/layouts/three-kpi.tpl +1 -1
- package/skills/document/layouts/timeline.tpl +1 -1
- package/skills/document/layouts/title-meta.tpl +1 -1
- package/skills/document/layouts/title.tpl +1 -1
- package/skills/document/layouts/toc-agenda.tpl +1 -1
- package/skills/document/layouts/toc-panel.tpl +3 -3
- package/skills/document/layouts/toc.tpl +1 -1
- package/skills/document/layouts/transition.tpl +1 -1
- package/skills/document/layouts/two-kpi.tpl +1 -1
- package/skills/document/layouts/type-specimen.tpl +3 -3
- package/skills/document/layouts/versus.tpl +1 -1
- package/skills/document/styles/README.md +42 -6
- package/skills/document/styles/_backdrops/arch.html +5 -0
- package/skills/document/styles/_backdrops/aurora.html +6 -0
- package/skills/document/styles/_backdrops/beam.html +5 -0
- package/skills/document/styles/_backdrops/bloom.html +5 -0
- package/skills/document/styles/_backdrops/duotone.html +6 -0
- package/skills/document/styles/_backdrops/frosted.html +4 -0
- package/skills/document/styles/_backdrops/rimlight.html +7 -0
- package/skills/document/styles/_backdrops/shared.html +5 -0
- package/skills/document/styles/_samples/anthropic.webp +0 -0
- package/skills/document/styles/_samples/apple.webp +0 -0
- package/skills/document/styles/_samples/black-gold.webp +0 -0
- package/skills/document/styles/_samples/branding.webp +0 -0
- package/skills/document/styles/_samples/cinereel.webp +0 -0
- package/skills/document/styles/_samples/cool.webp +0 -0
- package/skills/document/styles/_samples/hand-drawn.webp +0 -0
- package/skills/document/styles/_samples/ivory-gold.webp +0 -0
- package/skills/document/styles/_samples/magazine-ink.webp +0 -0
- package/skills/document/styles/_samples/mckinsey.webp +0 -0
- package/skills/document/styles/_samples/mono.webp +0 -0
- package/skills/document/styles/_samples/olive-gold.webp +0 -0
- package/skills/document/styles/_samples/swiss-grid.webp +0 -0
- package/skills/document/styles/anthropic/skin.css +1 -1
- package/skills/document/styles/apple/skin.css +1 -1
- package/skills/document/styles/black-gold/skin.css +1 -1
- package/skills/document/styles/cinereel/backdrop.html +2 -0
- package/skills/document/styles/cinereel/skin.css +133 -0
- package/skills/document/styles/cool/skin.css +1 -1
- package/skills/document/styles/hand-drawn/skin.css +1 -1
- package/skills/document/styles/ivory-gold/backdrop.html +15 -0
- package/skills/document/styles/ivory-gold/skin.css +137 -0
- package/skills/document/styles/magazine-ink/backdrop.html +12 -0
- package/skills/document/styles/magazine-ink/skin.css +121 -0
- package/skills/document/styles/mckinsey/skin.css +1 -1
- package/skills/document/styles/mono/skin.css +1 -1
- package/skills/document/styles/swiss-grid/backdrop.html +2 -0
- package/skills/document/styles/swiss-grid/skin.css +117 -0
- package/skills/document/themes/README.md +5 -1
- package/skills/document/themes/cinereel.json +24 -0
- package/skills/document/themes/ivory-gold.json +24 -0
- package/skills/document/themes/magazine-ink.json +24 -0
- package/skills/document/themes/swiss-grid.json +24 -0
- package/mcp/Linear/mcp.json +0 -17
- package/skills/document/styles/anthropic/backdrop-arch.html +0 -3
- package/skills/document/styles/anthropic/backdrop-shared.html +0 -3
- package/skills/document/styles/apple/backdrop-shared.html +0 -3
- package/skills/document/styles/cool/backdrop-spotlight.html +0 -3
- package/skills/document/styles/mckinsey/backdrop-shared.html +0 -3
- /package/skills/document/styles/{apple/backdrop-spotlight.html → _backdrops/spotlight.html} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
<!-- layouts/split-two-col — structure-only (paint via styles/<skin>/skin.css). data-layout drives P1/P2/P3 + dedup. -->
|
|
2
|
-
<section class="slide" data-layout="split-two-col" style="position:relative;width:1280px;height:720px;overflow:hidden"><div class="slide-backdrop"></div><div class="eyebrow-row" style="position:absolute;left:96px;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:13px;letter-spacing:.28em">{{eyebrow|CASE STUDY}}</span></div><h2 class="deck-title" style="position:absolute;left:92px;top:158px;font-size:48px;
|
|
2
|
+
<section class="slide" data-layout="split-two-col" style="position:relative;width:1280px;height:720px;overflow:hidden"><div class="slide-backdrop"></div><div class="eyebrow-row" style="position:absolute;left:96px;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:13px;letter-spacing:.28em">{{eyebrow|CASE STUDY}}</span></div><h2 class="deck-title" style="position:absolute;left:92px;top:158px;font-size:48px;letter-spacing:-.4px">{{title|论点 + 视觉}}</h2>
|
|
3
3
|
<div style="position:absolute;left:96px;top:280px;width:520px;display:flex;flex-direction:column;gap:22px"><div class="card" style="position:relative;padding:22px 26px"><span class="card-rail" style="position:absolute;left:0;top:22px;width:3px;height:34px;border-radius:2px"></span><div class="card-title" style="font-size:20px;font-weight:700">{{card1_title|背景}}</div><p class="card-body" style="font-size:15px;line-height:1.6;margin-top:6px">{{card1_body|一句说明,替换为真实内容。}}</p></div><div class="card" style="position:relative;padding:22px 26px"><span class="card-rail" style="position:absolute;left:0;top:22px;width:3px;height:34px;border-radius:2px"></span><div class="card-title" style="font-size:20px;font-weight:700">{{card2_title|方案}}</div><p class="card-body" style="font-size:15px;line-height:1.6;margin-top:6px">{{card2_body|一句说明,替换为真实内容。}}</p></div><div class="card" style="position:relative;padding:22px 26px"><span class="card-rail" style="position:absolute;left:0;top:22px;width:3px;height:34px;border-radius:2px"></span><div class="card-title" style="font-size:20px;font-weight:700">{{card3_title|结果}}</div><p class="card-body" style="font-size:15px;line-height:1.6;margin-top:6px">{{card3_body|一句说明,替换为真实内容。}}</p></div></div><div class="surface" style="position:absolute;right:96px;top:280px;width:512px;height:320px;display:flex;align-items:center;justify-content:center"><span class="surface-label" style="font-size:15px">{{image_label|图片 / 图表占位}}</span></div>
|
|
4
4
|
<div class="rule rule-foot" style="position:absolute;left:96px;right:96px;bottom:40px;height:1px"></div><div class="deck-footer" style="position:absolute;left:96px;bottom:17px;font-size:12px;letter-spacing:.1em">{{footer|报告标题 / 章节}}</div><div class="deck-pageno" style="position:absolute;right:96px;bottom:17px;font-size:12px">{{pageno|01}}</div></section>
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
<!-- layouts/stats-chart — structure-only. role=content·data. 大标题+段落 + 深色面板内横向条形图. -->
|
|
2
2
|
<section class="slide" data-layout="stats-chart" style="position:relative;width:1280px;height:720px;overflow:hidden"><div class="slide-backdrop"></div>
|
|
3
3
|
<div class="toc-topbar" style="position:absolute;left:80px;right:80px;top:34px;display:flex;justify-content:space-between;align-items:center;font-size:15px;font-weight:700"><span class="toc-brand">{{brand1|公司名称}}</span><span class="toc-brand">{{brand2|战略评审}}</span><span class="toc-brand">{{brand3|2026-03-15}}</span></div>
|
|
4
|
-
<h1 class="cover-title" style="position:absolute;left:80px;top:96px;font-size:72px;
|
|
4
|
+
<h1 class="cover-title" style="position:absolute;left:80px;top:96px;font-size:72px;letter-spacing:-1px">{{title|数据统计}}</h1>
|
|
5
5
|
<p class="stat-note" style="position:absolute;left:82px;top:200px;width:1120px;font-size:18px;line-height:1.6">{{note|在此展开介绍所呈现的关键统计数据,用一到三句话说明数据来源、口径与要点,帮助读者快速理解图表含义。}}</p>
|
|
6
|
-
<div class="panel" style="position:absolute;left:80px;right:80px;top:320px;bottom:44px;border-radius:
|
|
6
|
+
<div class="panel" style="position:absolute;left:80px;right:80px;top:320px;bottom:44px;border-radius:var(--card-radius);padding:36px 44px">
|
|
7
7
|
<div class="chart" style="position:absolute;inset:36px 44px"><div class="talos-chart" style="width:100%;height:100%" data-chart='{"type":"barH","labels":["条目一","条目二","条目三","条目四"],"series":[{"name":"数值","values":[20,30,36,50]}],"colors":["__CHART1__"],"axisColor":"__AXIS__"}'></div></div>
|
|
8
8
|
</div>
|
|
9
9
|
</section>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<!-- layouts/steps-serpentine — structure-only (paint via skin). 8 步二行蛇形流程:上排左→右,下排右→左,
|
|
2
|
+
右侧一条弧线连接两排,用于步骤数超过单排 steps(3–5) 上限的场景。 -->
|
|
3
|
+
<section class="slide" data-layout="steps-serpentine" style="position:relative;width:1280px;height:720px;overflow:hidden"><div class="slide-backdrop"></div><div class="eyebrow-row" style="position:absolute;left:96px;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:13px;letter-spacing:.28em">{{eyebrow|WORKFLOW}}</span></div><h2 class="deck-title" style="position:absolute;left:92px;top:158px;font-size:44px;letter-spacing:-.4px">{{title|多阶段流程}}</h2>
|
|
4
|
+
<svg width="1280" height="720" viewBox="0 0 1280 720" style="position:absolute;inset:0;pointer-events:none"><path d="M 1170 300 C 1230 300, 1230 460, 1170 460" fill="none" stroke="var(--hair)" stroke-width="1"/></svg>
|
|
5
|
+
<div class="step-line" style="position:absolute;left:150px;right:150px;top:300px;height:1px"></div>
|
|
6
|
+
<div class="steps" style="position:absolute;left:96px;right:96px;top:262px;display:grid;grid-template-columns:repeat(4,1fr);gap:20px">
|
|
7
|
+
<div class="step" style="text-align:center"><div class="step-circle" style="width:64px;height:64px;margin:0 auto;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:20px">▶</div><div class="step-title" style="font-size:16px;font-weight:700;margin-top:18px">{{step1_title|阶段 01}}</div><p class="step-body" style="font-size:13px;margin-top:6px;line-height:1.5">{{step1_body|一句说明,替换为真实内容。}}</p></div>
|
|
8
|
+
<div class="step" style="text-align:center"><div class="step-circle" style="width:64px;height:64px;margin:0 auto;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:20px">▶</div><div class="step-title" style="font-size:16px;font-weight:700;margin-top:18px">{{step2_title|阶段 02}}</div><p class="step-body" style="font-size:13px;margin-top:6px;line-height:1.5">{{step2_body|一句说明,替换为真实内容。}}</p></div>
|
|
9
|
+
<div class="step" style="text-align:center"><div class="step-circle" style="width:64px;height:64px;margin:0 auto;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:20px">▶</div><div class="step-title" style="font-size:16px;font-weight:700;margin-top:18px">{{step3_title|阶段 03}}</div><p class="step-body" style="font-size:13px;margin-top:6px;line-height:1.5">{{step3_body|一句说明,替换为真实内容。}}</p></div>
|
|
10
|
+
<div class="step" style="text-align:center"><div class="step-circle" style="width:64px;height:64px;margin:0 auto;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:20px">▶</div><div class="step-title" style="font-size:16px;font-weight:700;margin-top:18px">{{step4_title|阶段 04}}</div><p class="step-body" style="font-size:13px;margin-top:6px;line-height:1.5">{{step4_body|一句说明,替换为真实内容。}}</p></div>
|
|
11
|
+
</div>
|
|
12
|
+
<div class="step-line" style="position:absolute;left:150px;right:150px;top:460px;height:1px"></div>
|
|
13
|
+
<div class="steps" style="position:absolute;left:96px;right:96px;top:422px;display:grid;grid-template-columns:repeat(4,1fr);gap:20px">
|
|
14
|
+
<div class="step" style="text-align:center"><div class="step-circle" style="width:64px;height:64px;margin:0 auto;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:20px">◀</div><div class="step-title" style="font-size:16px;font-weight:700;margin-top:18px">{{step5_title|阶段 05}}</div><p class="step-body" style="font-size:13px;margin-top:6px;line-height:1.5">{{step5_body|一句说明,替换为真实内容。}}</p></div>
|
|
15
|
+
<div class="step" style="text-align:center"><div class="step-circle" style="width:64px;height:64px;margin:0 auto;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:20px">◀</div><div class="step-title" style="font-size:16px;font-weight:700;margin-top:18px">{{step6_title|阶段 06}}</div><p class="step-body" style="font-size:13px;margin-top:6px;line-height:1.5">{{step6_body|一句说明,替换为真实内容。}}</p></div>
|
|
16
|
+
<div class="step" style="text-align:center"><div class="step-circle" style="width:64px;height:64px;margin:0 auto;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:20px">◀</div><div class="step-title" style="font-size:16px;font-weight:700;margin-top:18px">{{step7_title|阶段 07}}</div><p class="step-body" style="font-size:13px;margin-top:6px;line-height:1.5">{{step7_body|一句说明,替换为真实内容。}}</p></div>
|
|
17
|
+
<div class="step" style="text-align:center"><div class="step-circle" style="width:64px;height:64px;margin:0 auto;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:20px">◀</div><div class="step-title" style="font-size:16px;font-weight:700;margin-top:18px">{{step8_title|阶段 08}}</div><p class="step-body" style="font-size:13px;margin-top:6px;line-height:1.5">{{step8_body|一句说明,替换为真实内容。}}</p></div>
|
|
18
|
+
</div>
|
|
19
|
+
</section>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
<!-- layouts/steps-vertical — structure-only variant (paint via skin). -->
|
|
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:96px;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:13px;letter-spacing:.28em">PROCESS</span></div><h2 class="deck-title" style="position:absolute;left:92px;top:158px;font-size:48px;
|
|
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:96px;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:13px;letter-spacing:.28em">PROCESS</span></div><h2 class="deck-title" style="position:absolute;left:92px;top:158px;font-size:48px;letter-spacing:-.4px">实施步骤</h2>
|
|
3
3
|
<div class="step-line" style="position:absolute;left:158px;top:300px;bottom:96px;width:2px"></div><div style="position:absolute;left:96px;right:96px;top:290px;display:flex;flex-direction:column;gap:20px"><div style="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:26px;font-weight:700">1</div><div><div class="step-title" style="font-size:21px;font-weight:700">调研立项</div><p class="step-body" style="font-size:15px;line-height:1.5;margin-top:4px">明确目标与范围,组建团队。</p></div></div><div style="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:26px;font-weight:700">2</div><div><div class="step-title" style="font-size:21px;font-weight:700">方案设计</div><p class="step-body" style="font-size:15px;line-height:1.5;margin-top:4px">拆解关键路径,评审技术选型。</p></div></div><div style="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:26px;font-weight:700">3</div><div><div class="step-title" style="font-size:21px;font-weight:700">试点落地</div><p class="step-body" style="font-size:15px;line-height:1.5;margin-top:4px">小范围验证,收集反馈迭代。</p></div></div><div style="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:26px;font-weight:700">4</div><div><div class="step-title" style="font-size:21px;font-weight:700">全面推广</div><p class="step-body" style="font-size:15px;line-height:1.5;margin-top:4px">复制成功经验,规模化落地。</p></div></div></div>
|
|
4
4
|
<div class="rule rule-foot" style="position:absolute;left:96px;right:96px;bottom:40px;height:1px"></div><div class="deck-footer" style="position:absolute;left:96px;bottom:17px;font-size:12px;letter-spacing:.1em">报告标题 / 章节</div><div class="deck-pageno" style="position:absolute;right:96px;bottom:17px;font-size:12px">01</div></section>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
<!-- layouts/steps — structure-only (paint via styles/<skin>/skin.css). data-layout drives P1/P2/P3 + dedup. -->
|
|
2
|
-
<section class="slide" data-layout="steps" style="position:relative;width:1280px;height:720px;overflow:hidden"><div class="slide-backdrop"></div><div class="eyebrow-row" style="position:absolute;left:96px;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:13px;letter-spacing:.28em">{{eyebrow|ROADMAP}}</span></div><h2 class="deck-title" style="position:absolute;left:92px;top:158px;font-size:48px;
|
|
2
|
+
<section class="slide" data-layout="steps" style="position:relative;width:1280px;height:720px;overflow:hidden"><div class="slide-backdrop"></div><div class="eyebrow-row" style="position:absolute;left:96px;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:13px;letter-spacing:.28em">{{eyebrow|ROADMAP}}</span></div><h2 class="deck-title" style="position:absolute;left:92px;top:158px;font-size:48px;letter-spacing:-.4px">{{title|实施路径}}</h2>
|
|
3
3
|
<div class="step-line" style="position:absolute;left:150px;right:150px;top:392px;height:1px"></div><div class="steps" style="position:absolute;left:96px;right:96px;top:330px;display:grid;grid-template-columns:repeat(4,1fr);gap:24px"><div class="step" style="text-align:center"><div class="step-circle" style="width:120px;height:120px;margin:0 auto;border-radius:50%;display:flex;align-items:center;justify-content:center;text-align:center;line-height:1;font-size:44px;font-weight:700">1</div><div class="step-tag" style="font-size:12px;letter-spacing:.18em;margin-top:22px">STEP 01</div><div class="step-title" style="font-size:21px;font-weight:600;margin-top:8px">{{step1_title|调研立项}}</div><p class="step-body" style="font-size:14px;margin-top:6px">{{step1_body|明确目标范围}}</p></div><div class="step" style="text-align:center"><div class="step-circle" style="width:120px;height:120px;margin:0 auto;border-radius:50%;display:flex;align-items:center;justify-content:center;text-align:center;line-height:1;font-size:44px;font-weight:700">2</div><div class="step-tag" style="font-size:12px;letter-spacing:.18em;margin-top:22px">STEP 02</div><div class="step-title" style="font-size:21px;font-weight:600;margin-top:8px">{{step2_title|方案设计}}</div><p class="step-body" style="font-size:14px;margin-top:6px">{{step2_body|拆解关键路径}}</p></div><div class="step" style="text-align:center"><div class="step-circle" style="width:120px;height:120px;margin:0 auto;border-radius:50%;display:flex;align-items:center;justify-content:center;text-align:center;line-height:1;font-size:44px;font-weight:700">3</div><div class="step-tag" style="font-size:12px;letter-spacing:.18em;margin-top:22px">STEP 03</div><div class="step-title" style="font-size:21px;font-weight:600;margin-top:8px">{{step3_title|试点落地}}</div><p class="step-body" style="font-size:14px;margin-top:6px">{{step3_body|小范围验证}}</p></div><div class="step" style="text-align:center"><div class="step-circle" style="width:120px;height:120px;margin:0 auto;border-radius:50%;display:flex;align-items:center;justify-content:center;text-align:center;line-height:1;font-size:44px;font-weight:700">4</div><div class="step-tag" style="font-size:12px;letter-spacing:.18em;margin-top:22px">STEP 04</div><div class="step-title" style="font-size:21px;font-weight:600;margin-top:8px">{{step4_title|全面推广}}</div><p class="step-body" style="font-size:14px;margin-top:6px">{{step4_body|复制成功经验}}</p></div></div>
|
|
4
4
|
<div class="rule rule-foot" style="position:absolute;left:96px;right:96px;bottom:40px;height:1px"></div><div class="deck-footer" style="position:absolute;left:96px;bottom:17px;font-size:12px;letter-spacing:.1em">{{footer|报告标题 / 章节}}</div><div class="deck-pageno" style="position:absolute;right:96px;bottom:17px;font-size:12px">{{pageno|01}}</div></section>
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
<!-- layouts/team-row — structure-only (paint via skin). "团队成员":一排 5 张竖版人像槽 + 姓名(accent)+ 职位. 图片槽 = .surface 占位(后填真图,同 image-grid 约定);姓名走 .team-name/职位 .team-role. data-layout drives P1/P2/P3 + dedup. -->
|
|
2
2
|
<section class="slide" data-layout="team-row" style="position:relative;width:1280px;height:720px;overflow:hidden"><div class="slide-backdrop"></div>
|
|
3
3
|
<div class="eyebrow-row" style="position:absolute;left:96px;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:13px;letter-spacing:.28em">MEET OUR TEAM</span></div>
|
|
4
|
-
<h2 class="deck-title" style="position:absolute;left:92px;top:158px;font-size:48px;
|
|
4
|
+
<h2 class="deck-title" style="position:absolute;left:92px;top:158px;font-size:48px;letter-spacing:-.4px">团队成员</h2>
|
|
5
5
|
<div style="position:absolute;left:96px;right:96px;top:262px;display:grid;grid-template-columns:repeat(5,1fr);gap:20px">
|
|
6
|
-
<div><div class="surface" style="height:300px;border-radius:
|
|
7
|
-
<div><div class="surface" style="height:300px;border-radius:
|
|
8
|
-
<div><div class="surface" style="height:300px;border-radius:
|
|
9
|
-
<div><div class="surface" style="height:300px;border-radius:
|
|
10
|
-
<div><div class="surface" style="height:300px;border-radius:
|
|
6
|
+
<div><div class="surface" style="height:300px;border-radius:var(--card-radius);display:flex;align-items:center;justify-content:center"><span class="surface-label" style="font-size:13px">人像 01</span></div><div class="team-name" style="font-size:18px;font-weight:800;margin-top:16px;letter-spacing:.02em">姓名 · NAME</div><div class="team-role" style="font-size:13px;margin-top:3px">职位 Job Position</div></div>
|
|
7
|
+
<div><div class="surface" style="height:300px;border-radius:var(--card-radius);display:flex;align-items:center;justify-content:center"><span class="surface-label" style="font-size:13px">人像 02</span></div><div class="team-name" style="font-size:18px;font-weight:800;margin-top:16px;letter-spacing:.02em">姓名 · NAME</div><div class="team-role" style="font-size:13px;margin-top:3px">职位 Job Position</div></div>
|
|
8
|
+
<div><div class="surface" style="height:300px;border-radius:var(--card-radius);display:flex;align-items:center;justify-content:center"><span class="surface-label" style="font-size:13px">人像 03</span></div><div class="team-name" style="font-size:18px;font-weight:800;margin-top:16px;letter-spacing:.02em">姓名 · NAME</div><div class="team-role" style="font-size:13px;margin-top:3px">职位 Job Position</div></div>
|
|
9
|
+
<div><div class="surface" style="height:300px;border-radius:var(--card-radius);display:flex;align-items:center;justify-content:center"><span class="surface-label" style="font-size:13px">人像 04</span></div><div class="team-name" style="font-size:18px;font-weight:800;margin-top:16px;letter-spacing:.02em">姓名 · NAME</div><div class="team-role" style="font-size:13px;margin-top:3px">职位 Job Position</div></div>
|
|
10
|
+
<div><div class="surface" style="height:300px;border-radius:var(--card-radius);display:flex;align-items:center;justify-content:center"><span class="surface-label" style="font-size:13px">人像 05</span></div><div class="team-name" style="font-size:18px;font-weight:800;margin-top:16px;letter-spacing:.02em">姓名 · NAME</div><div class="team-role" style="font-size:13px;margin-top:3px">职位 Job Position</div></div>
|
|
11
11
|
</div>
|
|
12
12
|
<div class="rule rule-foot" style="position:absolute;left:96px;right:96px;bottom:40px;height:1px"></div><div class="deck-footer" style="position:absolute;left:96px;bottom:17px;font-size:12px;letter-spacing:.1em">报告标题 / 章节</div><div class="deck-pageno" style="position:absolute;right:96px;bottom:17px;font-size:12px">01</div>
|
|
13
13
|
</section>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
<!-- layouts/three-kpi — structure-only variant (paint via skin). reuses class contract, no skin change. -->
|
|
2
|
-
<section class="slide" data-layout="three-kpi" style="position:relative;width:1280px;height:720px;overflow:hidden"><div class="slide-backdrop"></div><div class="eyebrow-row" style="position:absolute;left:96px;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:13px;letter-spacing:.28em">{{eyebrow|KEY METRICS}}</span></div><h2 class="deck-title" style="position:absolute;left:92px;top:158px;font-size:48px;
|
|
2
|
+
<section class="slide" data-layout="three-kpi" style="position:relative;width:1280px;height:720px;overflow:hidden"><div class="slide-backdrop"></div><div class="eyebrow-row" style="position:absolute;left:96px;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:13px;letter-spacing:.28em">{{eyebrow|KEY METRICS}}</span></div><h2 class="deck-title" style="position:absolute;left:92px;top:158px;font-size:48px;letter-spacing:-.4px">{{title|三个关键指标}}</h2>
|
|
3
3
|
<div style="position:absolute;left:96px;right:96px;top:300px;display:grid;grid-template-columns:1fr 1fr 1fr;gap:36px"><div class="kpi" style="position:relative;padding-left:20px"><span class="accent-bar" style="position:absolute;left:0;top:8px;width:4px;height:96px"></span><div class="kpi-num" style="font-size:92px;font-weight:800;line-height:1">{{kpi1_num|585}}<span class="stat-unit" style="font-size:32px">{{kpi1_unit| 单位}}</span></div><div class="kpi-label" style="font-size:15px;margin-top:12px;font-weight:600">{{kpi1_name|指标名}}</div><p class="card-body" style="font-size:14px;line-height:1.5;margin-top:6px">{{kpi1_desc|指标一,给上下文说明。}}</p></div><div class="kpi" style="position:relative;padding-left:20px"><span class="accent-bar" style="position:absolute;left:0;top:8px;width:4px;height:96px"></span><div class="kpi-num" style="font-size:92px;font-weight:800;line-height:1">{{kpi2_num|92}}<span class="stat-unit" style="font-size:32px">{{kpi2_unit| %}}</span></div><div class="kpi-label" style="font-size:15px;margin-top:12px;font-weight:600">{{kpi2_name|指标名}}</div><p class="card-body" style="font-size:14px;line-height:1.5;margin-top:6px">{{kpi2_desc|指标二,给上下文说明。}}</p></div><div class="kpi" style="position:relative;padding-left:20px"><span class="accent-bar" style="position:absolute;left:0;top:8px;width:4px;height:96px"></span><div class="kpi-num" style="font-size:92px;font-weight:800;line-height:1">{{kpi3_num|3.4}}<span class="stat-unit" style="font-size:32px">{{kpi3_unit| ×}}</span></div><div class="kpi-label" style="font-size:15px;margin-top:12px;font-weight:600">{{kpi3_name|指标名}}</div><p class="card-body" style="font-size:14px;line-height:1.5;margin-top:6px">{{kpi3_desc|指标三,给上下文说明。}}</p></div></div>
|
|
4
4
|
<div class="rule rule-foot" style="position:absolute;left:96px;right:96px;bottom:40px;height:1px"></div><div class="deck-footer" style="position:absolute;left:96px;bottom:17px;font-size:12px;letter-spacing:.1em">{{footer|报告标题 / 章节}}</div><div class="deck-pageno" style="position:absolute;right:96px;bottom:17px;font-size:12px">{{pageno|01}}</div></section>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
<!-- layouts/timeline — structure-only variant (paint via skin; uses batch-5 classes). -->
|
|
2
|
-
<section class="slide" data-layout="timeline" style="position:relative;width:1280px;height:720px;overflow:hidden"><div class="slide-backdrop"></div><div class="eyebrow-row" style="position:absolute;left:96px;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:13px;letter-spacing:.28em">{{eyebrow|TIMELINE}}</span></div><h2 class="deck-title" style="position:absolute;left:92px;top:158px;font-size:48px;
|
|
2
|
+
<section class="slide" data-layout="timeline" style="position:relative;width:1280px;height:720px;overflow:hidden"><div class="slide-backdrop"></div><div class="eyebrow-row" style="position:absolute;left:96px;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:13px;letter-spacing:.28em">{{eyebrow|TIMELINE}}</span></div><h2 class="deck-title" style="position:absolute;left:92px;top:158px;font-size:48px;letter-spacing:-.4px">{{title|关键里程碑}}</h2>
|
|
3
3
|
<div class="step-line" style="position:absolute;left:170px;right:170px;top:396px;height:2px"></div><div style="position:absolute;left:96px;right:96px;top:298px;display:grid;grid-template-columns:repeat(4,1fr)"><div style="text-align:center"><div class="tl-date" style="font-size:34px;font-weight:800;line-height:1">{{item1_date|2022}}</div><div class="tl-dot" style="width:16px;height:16px;margin:34px auto 0"></div><div class="tl-title" style="font-size:19px;font-weight:700;margin-top:22px">{{item1_title|立项启动}}</div><p class="tl-desc" style="font-size:14px;line-height:1.5;margin-top:6px">{{item1_desc|一句里程碑说明。}}</p></div><div style="text-align:center"><div class="tl-date" style="font-size:34px;font-weight:800;line-height:1">{{item2_date|2023}}</div><div class="tl-dot" style="width:16px;height:16px;margin:34px auto 0"></div><div class="tl-title" style="font-size:19px;font-weight:700;margin-top:22px">{{item2_title|试点验证}}</div><p class="tl-desc" style="font-size:14px;line-height:1.5;margin-top:6px">{{item2_desc|一句里程碑说明。}}</p></div><div style="text-align:center"><div class="tl-date" style="font-size:34px;font-weight:800;line-height:1">{{item3_date|2024}}</div><div class="tl-dot" style="width:16px;height:16px;margin:34px auto 0"></div><div class="tl-title" style="font-size:19px;font-weight:700;margin-top:22px">{{item3_title|规模推广}}</div><p class="tl-desc" style="font-size:14px;line-height:1.5;margin-top:6px">{{item3_desc|一句里程碑说明。}}</p></div><div style="text-align:center"><div class="tl-date" style="font-size:34px;font-weight:800;line-height:1">{{item4_date|2025}}</div><div class="tl-dot" style="width:16px;height:16px;margin:34px auto 0"></div><div class="tl-title" style="font-size:19px;font-weight:700;margin-top:22px">{{item4_title|全面落地}}</div><p class="tl-desc" style="font-size:14px;line-height:1.5;margin-top:6px">{{item4_desc|一句里程碑说明。}}</p></div></div>
|
|
4
4
|
<div class="rule rule-foot" style="position:absolute;left:96px;right:96px;bottom:40px;height:1px"></div><div class="deck-footer" style="position:absolute;left:96px;bottom:17px;font-size:12px;letter-spacing:.1em">{{footer|报告标题 / 章节}}</div><div class="deck-pageno" style="position:absolute;right:96px;bottom:17px;font-size:12px">{{pageno|01}}</div></section>
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<section class="slide" data-layout="title-meta" style="position:relative;width:1280px;height:720px;overflow:hidden"><div class="slide-backdrop"></div>
|
|
3
3
|
<div class="section-ghost" style="position:absolute;right:80px;top:120px;font-weight:800;line-height:1;font-size:340px">{{index|01}}</div>
|
|
4
4
|
<div class="eyebrow-row" style="position:absolute;left:96px;top:300px;display:flex;align-items:center;gap:14px"><span class="accent-bar" style="width:40px;height:3px;display:inline-block"></span><span class="eyebrow" style="font-size:13px;letter-spacing:.28em">{{eyebrow|SECTION · 01}}</span></div>
|
|
5
|
-
<h1 class="cover-title" style="position:absolute;left:92px;top:336px;width:900px;font-size:74px;
|
|
5
|
+
<h1 class="cover-title" style="position:absolute;left:92px;top:336px;width:900px;font-size:74px;line-height:1.08;letter-spacing:-1px">{{title|篇章标题<br>可换两行}}</h1>
|
|
6
6
|
<p class="cover-sub" style="position:absolute;left:96px;top:520px;width:820px;font-size:20px;line-height:1.5">{{subtitle|一句本篇导语 / 副标题,点出这一部分的主旨。}}</p>
|
|
7
7
|
<div class="ending-contact" style="position:absolute;left:96px;bottom:44px;font-size:13px;letter-spacing:.14em">{{meta|2026 · 报告名称}}</div>
|
|
8
8
|
</section>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<!-- layouts/title — structure-only. role=title (内封/篇章大标题). -->
|
|
2
2
|
<section class="slide" data-layout="title" style="position:relative;width:1280px;height:720px;overflow:hidden"><div class="slide-backdrop"></div>
|
|
3
3
|
<div class="eyebrow" style="position:absolute;left:0;right:0;top:288px;text-align:center;font-size:15px;letter-spacing:.34em">{{eyebrow|PART ONE}}</div>
|
|
4
|
-
<h1 class="cover-title" style="position:absolute;left:0;right:0;top:322px;text-align:center;font-size:92px;
|
|
4
|
+
<h1 class="cover-title" style="position:absolute;left:0;right:0;top:322px;text-align:center;font-size:92px;line-height:1.06;letter-spacing:-1px">{{title|标题页}}</h1>
|
|
5
5
|
<div style="position:absolute;left:50%;top:472px;transform:translateX(-50%)"><span class="accent-bar" style="display:inline-block;width:72px;height:3px"></span></div>
|
|
6
6
|
</section>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
<!-- layouts/toc-agenda — structure-only variant (paint via skin). -->
|
|
2
|
-
<section class="slide" data-layout="toc-agenda" style="position:relative;width:1280px;height:720px;overflow:hidden"><div class="slide-backdrop"></div><div class="eyebrow-row" style="position:absolute;left:96px;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:13px;letter-spacing:.28em">{{eyebrow|议程 · AGENDA}}</span></div><h2 class="deck-title" style="position:absolute;left:92px;top:158px;font-size:48px;
|
|
2
|
+
<section class="slide" data-layout="toc-agenda" style="position:relative;width:1280px;height:720px;overflow:hidden"><div class="slide-backdrop"></div><div class="eyebrow-row" style="position:absolute;left:96px;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:13px;letter-spacing:.28em">{{eyebrow|议程 · AGENDA}}</span></div><h2 class="deck-title" style="position:absolute;left:92px;top:158px;font-size:48px;letter-spacing:-.4px">{{title|议程}}</h2>
|
|
3
3
|
<div style="position:absolute;left:96px;right:96px;top:258px;bottom:76px;display:flex;flex-direction:column;justify-content:space-between"><div class="toc-item" style="display:flex;gap:26px;align-items:center;padding:14px 0"><span class="toc-num" style="font-size:30px;font-weight:700">01</span><div class="toc-title" style="font-size:22px;font-weight:600;flex:1">{{item1_title|议程项标题}}</div><span class="toc-desc" style="font-size:14px">{{item1_dur|10 min}}</span></div><div class="toc-item" style="display:flex;gap:26px;align-items:center;padding:14px 0"><span class="toc-num" style="font-size:30px;font-weight:700">02</span><div class="toc-title" style="font-size:22px;font-weight:600;flex:1">{{item2_title|议程项标题}}</div><span class="toc-desc" style="font-size:14px">{{item2_dur|10 min}}</span></div><div class="toc-item" style="display:flex;gap:26px;align-items:center;padding:14px 0"><span class="toc-num" style="font-size:30px;font-weight:700">03</span><div class="toc-title" style="font-size:22px;font-weight:600;flex:1">{{item3_title|议程项标题}}</div><span class="toc-desc" style="font-size:14px">{{item3_dur|10 min}}</span></div><div class="toc-item" style="display:flex;gap:26px;align-items:center;padding:14px 0"><span class="toc-num" style="font-size:30px;font-weight:700">04</span><div class="toc-title" style="font-size:22px;font-weight:600;flex:1">{{item4_title|议程项标题}}</div><span class="toc-desc" style="font-size:14px">{{item4_dur|10 min}}</span></div><div class="toc-item" style="display:flex;gap:26px;align-items:center;padding:14px 0"><span class="toc-num" style="font-size:30px;font-weight:700">05</span><div class="toc-title" style="font-size:22px;font-weight:600;flex:1">{{item5_title|议程项标题}}</div><span class="toc-desc" style="font-size:14px">{{item5_dur|10 min}}</span></div></div>
|
|
4
4
|
<div class="rule rule-foot" style="position:absolute;left:96px;right:96px;bottom:40px;height:1px"></div><div class="deck-footer" style="position:absolute;left:96px;bottom:17px;font-size:12px;letter-spacing:.1em">{{footer|报告标题 / 章节}}</div><div class="deck-pageno" style="position:absolute;right:96px;bottom:17px;font-size:12px">{{pageno|01}}</div></section>
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
<!-- layouts/toc-panel — structure-only. role=toc. 左大标题+插图 / 右深色面板目录. -->
|
|
2
2
|
<section class="slide" data-layout="toc-panel" style="position:relative;width:1280px;height:720px;overflow:hidden"><div class="slide-backdrop"></div>
|
|
3
3
|
<div class="toc-topbar" style="position:absolute;left:80px;right:80px;top:34px;display:flex;justify-content:space-between;align-items:center;font-size:15px;font-weight:700"><span class="toc-brand">公司名称</span><span class="toc-brand">战略评审</span><span class="toc-brand">2026-03-15</span></div>
|
|
4
|
-
<div class="surface" style="position:absolute;left:96px;top:150px;width:300px;height:280px;display:flex;align-items:center;justify-content:center;border-radius:
|
|
5
|
-
<h1 class="cover-title" style="position:absolute;left:92px;top:456px;font-size:76px;
|
|
6
|
-
<div class="panel" style="position:absolute;left:700px;right:80px;top:96px;bottom:56px;border-radius:
|
|
4
|
+
<div class="surface" style="position:absolute;left:96px;top:150px;width:300px;height:280px;display:flex;align-items:center;justify-content:center;border-radius:var(--card-radius)"><span class="surface-label" style="font-size:14px">插图占位</span></div>
|
|
5
|
+
<h1 class="cover-title" style="position:absolute;left:92px;top:456px;font-size:76px;line-height:1.02;letter-spacing:-1px">目录</h1>
|
|
6
|
+
<div class="panel" style="position:absolute;left:700px;right:80px;top:96px;bottom:56px;border-radius:var(--card-radius);padding:56px 60px;display:flex;flex-direction:column;justify-content:space-between">
|
|
7
7
|
<div class="panel-item"><div class="panel-item-title" style="font-size:30px;font-weight:800;letter-spacing:.5px">引言</div><p class="panel-item-desc" style="font-size:19px;margin-top:8px">简述本节要讨论的内容。</p></div>
|
|
8
8
|
<div class="panel-item"><div class="panel-item-title" style="font-size:30px;font-weight:800;letter-spacing:.5px">我们的项目</div><p class="panel-item-desc" style="font-size:19px;margin-top:8px">简述本节要讨论的内容。</p></div>
|
|
9
9
|
<div class="panel-item"><div class="panel-item-title" style="font-size:30px;font-weight:800;letter-spacing:.5px">关于我们</div><p class="panel-item-desc" style="font-size:19px;margin-top:8px">简述本节要讨论的内容。</p></div>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
<!-- layouts/toc — structure-only (paint via styles/<skin>/skin.css). data-layout drives P1/P2/P3 + dedup. -->
|
|
2
|
-
<section class="slide" data-layout="toc" style="position:relative;width:1280px;height:720px;overflow:hidden"><div class="slide-backdrop"></div><div class="eyebrow-row" style="position:absolute;left:96px;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:13px;letter-spacing:.28em">{{eyebrow|目录 · CONTENTS}}</span></div><h2 class="deck-title" style="position:absolute;left:92px;top:158px;font-size:52px;
|
|
2
|
+
<section class="slide" data-layout="toc" style="position:relative;width:1280px;height:720px;overflow:hidden"><div class="slide-backdrop"></div><div class="eyebrow-row" style="position:absolute;left:96px;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:13px;letter-spacing:.28em">{{eyebrow|目录 · CONTENTS}}</span></div><h2 class="deck-title" style="position:absolute;left:92px;top:158px;font-size:52px;letter-spacing:-.4px">{{title|目录}}</h2>
|
|
3
3
|
<div class="toc-grid" style="position:absolute;left:96px;right:96px;top:290px;display:grid;grid-template-columns:1fr 1fr;gap:0 72px"><div class="toc-item" style="display:flex;gap:22px;align-items:baseline;padding:22px 0"><span class="toc-num" style="font-size:32px;font-weight:700">01</span><div><div class="toc-title" style="font-size:22px;font-weight:600">{{item1_title|章节标题}}</div><div class="toc-desc" style="font-size:14px;margin-top:5px">{{item1_desc|一句概述}}</div></div></div><div class="toc-item" style="display:flex;gap:22px;align-items:baseline;padding:22px 0"><span class="toc-num" style="font-size:32px;font-weight:700">02</span><div><div class="toc-title" style="font-size:22px;font-weight:600">{{item2_title|章节标题}}</div><div class="toc-desc" style="font-size:14px;margin-top:5px">{{item2_desc|一句概述}}</div></div></div><div class="toc-item" style="display:flex;gap:22px;align-items:baseline;padding:22px 0"><span class="toc-num" style="font-size:32px;font-weight:700">03</span><div><div class="toc-title" style="font-size:22px;font-weight:600">{{item3_title|章节标题}}</div><div class="toc-desc" style="font-size:14px;margin-top:5px">{{item3_desc|一句概述}}</div></div></div><div class="toc-item" style="display:flex;gap:22px;align-items:baseline;padding:22px 0"><span class="toc-num" style="font-size:32px;font-weight:700">04</span><div><div class="toc-title" style="font-size:22px;font-weight:600">{{item4_title|章节标题}}</div><div class="toc-desc" style="font-size:14px;margin-top:5px">{{item4_desc|一句概述}}</div></div></div></div>
|
|
4
4
|
<div class="rule rule-foot" style="position:absolute;left:96px;right:96px;bottom:40px;height:1px"></div><div class="deck-footer" style="position:absolute;left:96px;bottom:17px;font-size:12px;letter-spacing:.1em">{{footer|报告标题 / 章节}}</div><div class="deck-pageno" style="position:absolute;right:96px;bottom:17px;font-size:12px">{{pageno|01}}</div></section>
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
<!-- layouts/transition — structure-only. role=transition. reuse across chapter breaks. -->
|
|
2
|
-
<section class="slide" data-layout="transition" style="position:relative;width:1280px;height:720px;overflow:hidden"><div class="slide-backdrop"></div><div style="position:absolute;left:0;right:0;top:264px;text-align:center"><span class="eyebrow-row" style="display:inline-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:13px;letter-spacing:.34em">{{eyebrow|NEXT · 下一章}}</span></span></div><h2 class="ending-title" style="position:absolute;left:0;right:0;top:302px;text-align:center;font-size:120px;
|
|
2
|
+
<section class="slide" data-layout="transition" style="position:relative;width:1280px;height:720px;overflow:hidden"><div class="slide-backdrop"></div><div style="position:absolute;left:0;right:0;top:264px;text-align:center"><span class="eyebrow-row" style="display:inline-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:13px;letter-spacing:.34em">{{eyebrow|NEXT · 下一章}}</span></span></div><h2 class="ending-title" style="position:absolute;left:0;right:0;top:302px;text-align:center;font-size:120px;letter-spacing:-2px">{{number|02}}</h2><div class="section-desc" style="position:absolute;left:0;right:0;top:492px;text-align:center;font-size:22px;font-weight:600">{{title|下一章标题}}</div></section>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
<!-- layouts/two-kpi — structure-only variant (paint via skin). -->
|
|
2
|
-
<section class="slide" data-layout="two-kpi" style="position:relative;width:1280px;height:720px;overflow:hidden"><div class="slide-backdrop"></div><div class="eyebrow-row" style="position:absolute;left:96px;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:13px;letter-spacing:.28em">{{eyebrow|KEY METRICS}}</span></div><h2 class="deck-title" style="position:absolute;left:92px;top:158px;font-size:48px;
|
|
2
|
+
<section class="slide" data-layout="two-kpi" style="position:relative;width:1280px;height:720px;overflow:hidden"><div class="slide-backdrop"></div><div class="eyebrow-row" style="position:absolute;left:96px;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:13px;letter-spacing:.28em">{{eyebrow|KEY METRICS}}</span></div><h2 class="deck-title" style="position:absolute;left:92px;top:158px;font-size:48px;letter-spacing:-.4px">{{title|两个关键指标}}</h2>
|
|
3
3
|
<div style="position:absolute;left:96px;right:96px;top:320px;display:grid;grid-template-columns:1fr 1fr;gap:40px"><div class="kpi" style="position:relative;padding-left:22px"><span class="accent-bar" style="position:absolute;left:0;top:10px;width:5px;height:120px"></span><div class="kpi-num" style="font-size:132px;font-weight:800;line-height:1">{{kpi1_num|585}}<span class="stat-unit" style="font-size:44px">{{kpi1_unit| 单位}}</span></div><p class="kpi-label" style="font-size:16px;margin-top:12px">{{kpi1_label|指标一说明,给上下文}}</p></div><div class="kpi" style="position:relative;padding-left:22px"><span class="accent-bar" style="position:absolute;left:0;top:10px;width:5px;height:120px"></span><div class="kpi-num" style="font-size:132px;font-weight:800;line-height:1">{{kpi2_num|92}}<span class="stat-unit" style="font-size:44px">{{kpi2_unit| %}}</span></div><p class="kpi-label" style="font-size:16px;margin-top:12px">{{kpi2_label|指标二说明,给上下文}}</p></div></div>
|
|
4
4
|
<div class="rule rule-foot" style="position:absolute;left:96px;right:96px;bottom:40px;height:1px"></div><div class="deck-footer" style="position:absolute;left:96px;bottom:17px;font-size:12px;letter-spacing:.1em">{{footer|报告标题 / 章节}}</div><div class="deck-pageno" style="position:absolute;right:96px;bottom:17px;font-size:12px">{{pageno|01}}</div></section>
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
<!-- layouts/type-specimen — structure-only (paint via skin). 品牌手册"字体规范":左 大 Aa 范样 + 字体名 + 字重梯度;右 标题/正文范样 + 字符集. 全部复用既有 class(.deck-title 衬线大字 / .card-body / .surface / .rule). data-layout drives P1/P2/P3 + dedup. -->
|
|
2
2
|
<section class="slide" data-layout="type-specimen" style="position:relative;width:1280px;height:720px;overflow:hidden"><div class="slide-backdrop"></div>
|
|
3
3
|
<div class="eyebrow-row" style="position:absolute;left:96px;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:13px;letter-spacing:.28em">TYPOGRAPHY</span></div>
|
|
4
|
-
<h2 class="deck-title" style="position:absolute;left:92px;top:158px;font-size:48px;
|
|
4
|
+
<h2 class="deck-title" style="position:absolute;left:92px;top:158px;font-size:48px;letter-spacing:-.4px">字体规范</h2>
|
|
5
5
|
<!-- left: Aa specimen -->
|
|
6
|
-
<div class="surface" style="position:absolute;left:96px;top:264px;width:520px;bottom:92px;padding:36px 40px;display:flex;flex-direction:column;justify-content:center"><div class="deck-title" style="font-size:168px;line-height:.9;
|
|
6
|
+
<div class="surface" style="position:absolute;left:96px;top:264px;width:520px;bottom:92px;padding:36px 40px;display:flex;flex-direction:column;justify-content:center"><div class="deck-title" style="font-size:168px;line-height:.9;">Aa</div><div class="deck-title" style="font-size:24px;margin-top:22px">Georgia · 衬线标题</div><div class="surface-label" style="font-size:14px;margin-top:8px;letter-spacing:.08em">Regular · Medium · Bold</div></div>
|
|
7
7
|
<!-- right: samples -->
|
|
8
8
|
<div style="position:absolute;left:660px;right:96px;top:274px">
|
|
9
9
|
<div class="surface-label" style="font-size:12px;letter-spacing:.2em">HEADING · 标题</div>
|
|
10
|
-
<div class="deck-title" style="font-size:40px;
|
|
10
|
+
<div class="deck-title" style="font-size:40px;margin-top:6px">优雅、克制、有呼吸感</div>
|
|
11
11
|
<div class="rule" style="height:1px;margin:22px 0"></div>
|
|
12
12
|
<div class="surface-label" style="font-size:12px;letter-spacing:.2em">BODY · 正文</div>
|
|
13
13
|
<p class="card-body" style="font-size:16px;line-height:1.8;margin-top:8px">正文使用无衬线体,行距宽松、字重规整,保证长段落的可读性。标题用衬线、正文用无衬线,层级清晰,替换为真实内容。</p>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
<!-- layouts/versus — structure-only variant (paint via skin). reuses class contract, no skin change. -->
|
|
2
|
-
<section class="slide" data-layout="versus" style="position:relative;width:1280px;height:720px;overflow:hidden"><div class="slide-backdrop"></div><div class="eyebrow-row" style="position:absolute;left:96px;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:13px;letter-spacing:.28em">{{eyebrow|BEFORE / AFTER}}</span></div><h2 class="deck-title" style="position:absolute;left:92px;top:158px;font-size:48px;
|
|
2
|
+
<section class="slide" data-layout="versus" style="position:relative;width:1280px;height:720px;overflow:hidden"><div class="slide-backdrop"></div><div class="eyebrow-row" style="position:absolute;left:96px;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:13px;letter-spacing:.28em">{{eyebrow|BEFORE / AFTER}}</span></div><h2 class="deck-title" style="position:absolute;left:92px;top:158px;font-size:48px;letter-spacing:-.4px">{{title|改造前后对比}}</h2>
|
|
3
3
|
<div class="card" style="position:absolute;left:96px;top:300px;width:472px;height:300px;padding:34px;display:flex;flex-direction:column;justify-content:center"><div class="card-title" style="font-size:20px;font-weight:700">{{before_title|改造前}}</div><div class="kpi-num" style="font-size:72px;font-weight:800;line-height:1.1;margin-top:10px">{{before_num|T+1}}</div><p class="card-body" style="font-size:15px;margin-top:8px">{{before_body|报表时效,人工汇总。}}</p></div><div class="step-circle" style="position:absolute;left:50%;top:410px;transform:translateX(-50%);width:88px;height:88px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:24px;font-weight:700;z-index:2">VS</div><div class="card cmp-col--rec" style="position:absolute;right:96px;top:300px;width:472px;height:300px;padding:34px;display:flex;flex-direction:column;justify-content:center"><div class="card-title" style="font-size:20px;font-weight:700">{{after_title|改造后}}</div><div class="kpi-num" style="font-size:72px;font-weight:800;line-height:1.1;margin-top:10px">{{after_num|分钟级}}</div><p class="card-body" style="font-size:15px;margin-top:8px">{{after_body|实时计算,自动刷新。}}</p></div>
|
|
4
4
|
<div class="rule rule-foot" style="position:absolute;left:96px;right:96px;bottom:40px;height:1px"></div><div class="deck-footer" style="position:absolute;left:96px;bottom:17px;font-size:12px;letter-spacing:.1em">{{footer|报告标题 / 章节}}</div><div class="deck-pageno" style="position:absolute;right:96px;bottom:17px;font-size:12px">{{pageno|01}}</div></section>
|
|
@@ -20,6 +20,10 @@ of the 54 layouts renders in any skin.
|
|
|
20
20
|
| **branding** | light | 品牌手册 · 可持续 · 美妆 · 零售 · 极简 | 暖米底 + 鼠尾草/薄荷绿 + 优雅衬线标题 |
|
|
21
21
|
| **hand-drawn** | light | 创意 · 头脑风暴 · 教学 · 工作坊 | 纸感 + 马克笔色 + **手绘歪框卡** |
|
|
22
22
|
| **mono** | light | 极简 · 高端 · 设计 · 单色报告 | 纯白 + 黑灰明度层级 + 细线 + 大留白 |
|
|
23
|
+
| **ivory-gold** | light | 奢华极简 · 品牌手册 · 路演 · 高端零售 | 奶油底 + 青铜金 Anton 粗体大写标题(标题=accent)+ **黑色反色区块**(`.slide-inverse`) |
|
|
24
|
+
| **cinereel** | dark | 影视 · 创意作品集 · 音乐/传媒行业 · 幕后花絮 | 黑底/照片底 + 白色 Anton 粗体大写(无色相)+ **常驻胶片取景框**(顶/底黑遮幅条,每页恒定)+ 浅灰面板反色(`.slide-inverse`) |
|
|
25
|
+
| **magazine-ink** | light | 人文分享 · 行业观察 · 商业发布 · 杂志感演讲 | 瓷白底 + 靛蓝 Noto Serif SC 衬线大标题 + 无衬线正文 + 等宽元数据 + 无阴影无卡片盒(纯发丝线分隔)+ 巨幅淡墨水印章节号 |
|
|
26
|
+
| **swiss-grid** | light | 科技产品 · 数据汇报 · 设计/工程分享 · 年度总结 | 全无衬线 + 克莱因蓝单色高亮 + 极致字号反差(标题细/KPI 粗)+ 零阴影零圆角零渐变 + 点阵网格底纹 |
|
|
23
27
|
|
|
24
28
|
**Default** — when the user didn't specify: `cool` (酷炫深色). For clean/formal/light
|
|
25
29
|
ask, use `mckinsey` / `mono`. Match the rest by 适用场景.
|
|
@@ -31,15 +35,47 @@ padding of your own:
|
|
|
31
35
|
`apple` → **纯黑极简 · 产品发布** · `olive-gold` → **橄榄亮金 · 高端招商** ·
|
|
32
36
|
`mckinsey` → **白底藏青 · 咨询评审** · `anthropic` → **奶油珊瑚 · AI 研究** ·
|
|
33
37
|
`branding` → **暖米绿意 · 品牌手册** · `hand-drawn` → **纸感手绘 · 创意教学** ·
|
|
34
|
-
`mono` → **纯白黑灰 · 极简设计**
|
|
38
|
+
`mono` → **纯白黑灰 · 极简设计** · `ivory-gold` → **奶油青铜 · 奢华极简** ·
|
|
39
|
+
`cinereel` → **黑白胶片 · 影视创意** · `magazine-ink` → **瓷白靛蓝 · 杂志人文** ·
|
|
40
|
+
`swiss-grid` → **克莱因蓝白 · 瑞士国际**
|
|
35
41
|
|
|
36
42
|
## Backdrop variants
|
|
37
43
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
44
|
+
Every skin ships its own signature `styles/<skin>/backdrop.html`. Beyond that,
|
|
45
|
+
`styles/_backdrops/` is a shared, skin-neutral library — pure `__ACCENT__`/`__AXIS__`-
|
|
46
|
+
driven SVG, no hardcoded color — that **any** skin can borrow from, same idea as
|
|
47
|
+
`styles/_lines/` for the line motif. Shared pool, currently: `shared` · `spotlight` ·
|
|
48
|
+
`arch` · `duotone` · `aurora` · `rimlight` · `bloom` · `frosted` · `beam`.
|
|
49
|
+
|
|
50
|
+
All nine are the **light** family — corner/edge glows in different shapes, from
|
|
51
|
+
deck-design.md's Premium-craft "Light" layer (`bloom`/`frosted` complete the six
|
|
52
|
+
originally named there; `beam` extends the family with a directional beam shape).
|
|
53
|
+
`shared`, `arch`, `aurora`, and `rimlight` each wrap their linework in `.bd-arc`
|
|
54
|
+
using the same gradient-fade + `feGaussianBlur` technique as the skins' own default
|
|
55
|
+
line (`_lines/arc-band.html`), so `--line <name>`/`--line none` works on them too;
|
|
56
|
+
`spotlight`/`duotone`/`bloom`/`frosted`/`beam` are pure background-gradient (no line).
|
|
57
|
+
|
|
58
|
+
Pick one with `--backdrop <variant>`: html2pptx checks `styles/<skin>/backdrop-
|
|
59
|
+
<variant>.html` first (a skin's own named variant, if it has one), then falls back
|
|
60
|
+
to `styles/_backdrops/<variant>.html` — so every skin can select every variant, not
|
|
61
|
+
just the ones that happen to have a local copy.
|
|
62
|
+
|
|
63
|
+
Leave `--backdrop` unset and html2pptx **auto-picks** from [the skin's own
|
|
64
|
+
`backdrop.html`] ∪ [the shared pool], seeded by the deck's own HTML content — the
|
|
65
|
+
same deck.html always resolves to the same variant (stable across the QA
|
|
66
|
+
fix-loop's re-renders), but different decks usually land on a different one, so
|
|
67
|
+
repeat generations of one skin don't all look identical.
|
|
68
|
+
|
|
69
|
+
Opt-outs (auto-pick skips these; `--backdrop` still works explicitly if ever
|
|
70
|
+
needed): `mckinsey`, `mono` → 纯色(no backdrop, by design) · `cinereel` → 常驻胶片
|
|
71
|
+
取景框(每页恒定,故意排除在自动挑选之外).
|
|
72
|
+
|
|
73
|
+
Leave `--backdrop` unset and html2pptx **auto-picks one of the skin's available
|
|
74
|
+
`backdrop*.html` variants**, seeded by the deck's HTML content — the same
|
|
75
|
+
deck.html always resolves to the same variant (stable across the QA fix-loop's
|
|
76
|
+
re-renders), but different decks land on different variants, so repeat
|
|
77
|
+
generations of the same skin don't all look identical. Pass `--backdrop
|
|
78
|
+
<variant>` only when you need a specific one pinned.
|
|
43
79
|
|
|
44
80
|
## Extend
|
|
45
81
|
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<!-- backdrop-arch (portable) — accent 大圆弧柔光 + 两条同心大圆弧描边。变量驱动(__ACCENT__ 自动
|
|
2
|
+
上色)、明暗中性,可原样复制到任意 styles/<skin>/。描边跟皮肤默认线(_lines/arc-band.html)同款:
|
|
3
|
+
linearGradient 两端渐隐 + 宽层 feGaussianBlur 打底 + 细层清晰描边,并包进 .bd-arc,可被 --line
|
|
4
|
+
摘除/替换。 -->
|
|
5
|
+
<svg width="1280" height="720" viewBox="0 0 1280 720" style="position:absolute;inset:0;pointer-events:none"><defs><radialGradient id="arg" cx="86%" cy="10%" r="56%"><stop offset="0" stop-color="__ACCENT__" stop-opacity=".14"/><stop offset="1" stop-color="__ACCENT__" stop-opacity="0"/></radialGradient></defs><rect width="1280" height="720" fill="url(#arg)"/></svg><div class="bd-arc" style="position:absolute;inset:0;pointer-events:none"><svg width="100%" height="100%" viewBox="0 0 1280 720"><defs><linearGradient id="arl" x1="0" y1="0" x2="1" y2="0"><stop offset="0" stop-color="__ACCENT__" stop-opacity=".12"/><stop offset=".5" stop-color="__ACCENT__" stop-opacity=".34"/><stop offset="1" stop-color="__ACCENT__" stop-opacity=".12"/></linearGradient><filter id="arlb"><feGaussianBlur stdDeviation="1.4"/></filter></defs><g fill="none" stroke="url(#arl)"><path d="M-80 720 A 640 640 0 0 1 1160 720" stroke-width="1.6" filter="url(#arlb)"/><path d="M40 720 A 900 900 0 0 1 1480 720" stroke-width=".7"/></g></svg></div>
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<!-- backdrop-aurora (portable) — 底部多段位光带(同色多层不透明度堆叠,不引入第二色相以保持
|
|
2
|
+
skin-neutral) + 一条贴底的高光地平线(渐变两端渐隐 + feGaussianBlur 打底,跟皮肤默认线
|
|
3
|
+
_lines/arc-band.html 同款,包进 .bd-arc,可被 --line 摘除/替换)。原先端点/控制点只差 14,弧度
|
|
4
|
+
太平,已加大到端点 y680/控制点 y584(起拱 ~96),跟 shared/arc-band 的拱形比例接近。变量驱动
|
|
5
|
+
(__ACCENT__ 自动上色)、明暗中性,可原样复制到任意 styles/<skin>/。 -->
|
|
6
|
+
<svg width="1280" height="720" viewBox="0 0 1280 720" style="position:absolute;inset:0;pointer-events:none"><defs><linearGradient id="aur" x1="0" y1="1" x2="0" y2="0"><stop offset="0" stop-color="__ACCENT__" stop-opacity=".20"/><stop offset=".18" stop-color="__ACCENT__" stop-opacity=".10"/><stop offset=".4" stop-color="__ACCENT__" stop-opacity="0"/></linearGradient></defs><rect width="1280" height="720" fill="url(#aur)"/></svg><div class="bd-arc" style="position:absolute;inset:0;pointer-events:none"><svg width="100%" height="100%" viewBox="0 0 1280 720"><defs><linearGradient id="aurl" x1="0" y1="0" x2="1" y2="0"><stop offset="0" stop-color="__ACCENT__" stop-opacity=".12"/><stop offset=".5" stop-color="__ACCENT__" stop-opacity=".34"/><stop offset="1" stop-color="__ACCENT__" stop-opacity=".12"/></linearGradient><filter id="aurlb"><feGaussianBlur stdDeviation="1.4"/></filter></defs><path d="M-80 680 C 300 584,980 584,1360 680" fill="none" stroke="url(#aurl)" stroke-width="1.6" filter="url(#aurlb)"/><path d="M-80 680 C 300 584,980 584,1360 680" fill="none" stroke="url(#aurl)" stroke-width=".7"/></svg></div>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<!-- backdrop-beam (portable) — 一道斜向光束扫过画面(像追光灯的光柱),用一个斜切四边形 + 沿光束
|
|
2
|
+
方向渐隐的 fill,比其余环境光更有方向性/戏剧感。四边形边缘加大 feGaussianBlur 羽化 —— 不羽化会是
|
|
3
|
+
一条生硬的几何色带,不像光。纯背景渐变,无额外描边。变量驱动(__ACCENT__ 自动上色)、明暗中性,
|
|
4
|
+
可原样复制到任意 styles/<skin>/。 -->
|
|
5
|
+
<svg width="1280" height="720" viewBox="0 0 1280 720" style="position:absolute;inset:0;pointer-events:none"><defs><linearGradient id="bm1" gradientUnits="userSpaceOnUse" x1="300" y1="-40" x2="730" y2="760"><stop offset="0" stop-color="__ACCENT__" stop-opacity=".22"/><stop offset=".55" stop-color="__ACCENT__" stop-opacity=".10"/><stop offset="1" stop-color="__ACCENT__" stop-opacity="0"/></linearGradient><filter id="bmb" x="-50%" y="-50%" width="200%" height="200%"><feGaussianBlur stdDeviation="55"/></filter></defs><polygon points="180,-40 420,-40 860,760 600,760" fill="url(#bm1)" filter="url(#bmb)"/></svg>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<!-- backdrop-bloom (portable) — 偏移柔光圆盘:光源不卡在顶部居中(那是 spotlight)、不卡在角上
|
|
2
|
+
(那是 shared/arch/duotone),挪到画面左上偏内侧一个不对称的位置,像随手打的一盏暖光,没有
|
|
3
|
+
spotlight 那种舞台聚光的正式感。纯背景渐变,无描边。变量驱动(__ACCENT__ 自动上色)、明暗中性,
|
|
4
|
+
可原样复制到任意 styles/<skin>/。 -->
|
|
5
|
+
<svg width="1280" height="720" viewBox="0 0 1280 720" style="position:absolute;inset:0;pointer-events:none"><defs><radialGradient id="bl1" cx="30%" cy="34%" r="52%"><stop offset="0" stop-color="__ACCENT__" stop-opacity=".20"/><stop offset=".6" stop-color="__ACCENT__" stop-opacity=".06"/><stop offset="1" stop-color="__ACCENT__" stop-opacity="0"/></radialGradient></defs><rect width="1280" height="720" fill="url(#bl1)"/></svg>
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<!-- backdrop-duotone (portable) — 双角对冲洗色:一角 accent、对角 muted(__AXIS__),纯背景渐变,
|
|
2
|
+
无描边(deck-design.md「pure background-gradient div — no text, no background-clip」)。半径 44/48%、
|
|
3
|
+
accent 角峰值 .30 太扎眼(一个亮斑),已回调到 .20 并放宽半径到 52%(同样的总亮度摊得更开,读起来是
|
|
4
|
+
"洗色"而不是"光斑");muted 角保持 .26/48%,对比仍然读得出来。变量驱动(__ACCENT__/__AXIS__ 自动
|
|
5
|
+
上色)、明暗中性,可原样复制到任意 styles/<skin>/。 -->
|
|
6
|
+
<svg width="1280" height="720" viewBox="0 0 1280 720" style="position:absolute;inset:0;pointer-events:none"><defs><radialGradient id="dt1" cx="6%" cy="2%" r="52%"><stop offset="0" stop-color="__ACCENT__" stop-opacity=".20"/><stop offset="1" stop-color="__ACCENT__" stop-opacity="0"/></radialGradient><radialGradient id="dt2" cx="96%" cy="102%" r="48%"><stop offset="0" stop-color="__AXIS__" stop-opacity=".26"/><stop offset="1" stop-color="__AXIS__" stop-opacity="0"/></radialGradient></defs><rect width="1280" height="720" fill="url(#dt1)"/><rect width="1280" height="720" fill="url(#dt2)"/></svg>
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<!-- backdrop-frosted (portable) — 角落磨砂柔化:两层大半径、低不透明度的叠加光晕(不是单层陡峭
|
|
2
|
+
falloff),做出毛玻璃一样的绵密柔化,是这组里最克制、最不抢戏的一个。纯背景渐变,无描边。变量驱动
|
|
3
|
+
(__ACCENT__ 自动上色)、明暗中性,可原样复制到任意 styles/<skin>/。 -->
|
|
4
|
+
<svg width="1280" height="720" viewBox="0 0 1280 720" style="position:absolute;inset:0;pointer-events:none"><defs><radialGradient id="fr1" cx="10%" cy="6%" r="70%"><stop offset="0" stop-color="__ACCENT__" stop-opacity=".11"/><stop offset="1" stop-color="__ACCENT__" stop-opacity="0"/></radialGradient><radialGradient id="fr2" cx="14%" cy="10%" r="40%"><stop offset="0" stop-color="__ACCENT__" stop-opacity=".08"/><stop offset="1" stop-color="__ACCENT__" stop-opacity="0"/></radialGradient></defs><rect width="1280" height="720" fill="url(#fr1)"/><rect width="1280" height="720" fill="url(#fr2)"/></svg>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<!-- backdrop-rimlight (portable) — 顶部通栏边光(linear gradient,从顶边向下衰减 — 跟 spotlight 的
|
|
2
|
+
居中圆形光斑不同,是贴边的一整条通栏光带,营造"背后打光/舞台顶光"的边缘感) + 一条更亮的高光边线
|
|
3
|
+
(渐变两端渐隐 + feGaussianBlur 打底,跟皮肤默认线 _lines/arc-band.html 同款,包进 .bd-arc,可被
|
|
4
|
+
--line 摘除/替换)。原先用"中心透明→边缘上色"的反向径向渐变会在画面中央糊出一圈突兀的暗色椭圆,
|
|
5
|
+
已弃用,改成方向性更清楚的顶部通栏衰减。变量驱动(__ACCENT__ 自动上色)、明暗中性,可原样复制到
|
|
6
|
+
任意 styles/<skin>/。 -->
|
|
7
|
+
<svg width="1280" height="720" viewBox="0 0 1280 720" style="position:absolute;inset:0;pointer-events:none"><defs><linearGradient id="rlg" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="__ACCENT__" stop-opacity=".22"/><stop offset=".16" stop-color="__ACCENT__" stop-opacity=".08"/><stop offset=".38" stop-color="__ACCENT__" stop-opacity="0"/></linearGradient></defs><rect width="1280" height="720" fill="url(#rlg)"/></svg><div class="bd-arc" style="position:absolute;inset:0;pointer-events:none"><svg width="100%" height="100%" viewBox="0 0 1280 720"><defs><linearGradient id="rll" x1="0" y1="0" x2="1" y2="0"><stop offset="0" stop-color="__ACCENT__" stop-opacity=".16"/><stop offset=".5" stop-color="__ACCENT__" stop-opacity=".42"/><stop offset="1" stop-color="__ACCENT__" stop-opacity=".16"/></linearGradient><filter id="rllb"><feGaussianBlur stdDeviation="1.2"/></filter></defs><path d="M-80 8 C 300 2,980 2,1360 8" fill="none" stroke="url(#rll)" stroke-width="1.8" filter="url(#rllb)"/><path d="M-80 8 C 300 2,980 2,1360 8" fill="none" stroke="url(#rll)" stroke-width=".8"/></svg></div>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<!-- shared/portable backdrop — 变量驱动、明暗中性:accent 走 __ACCENT__(每皮肤自动上色),
|
|
2
|
+
纹理用中性 rgba(在黑底/白底上都成立)。可原样复制到任意 styles/<skin>/。弧线跟皮肤默认线
|
|
3
|
+
(_lines/arc-band.html)同款:linearGradient 两端渐隐 + 宽层 feGaussianBlur 打底 + 细层清晰
|
|
4
|
+
描边,并包进 .bd-arc,可被 --line 摘除/替换。 -->
|
|
5
|
+
<svg width="1280" height="720" viewBox="0 0 1280 720" style="position:absolute;inset:0;pointer-events:none" preserveAspectRatio="none"><defs><radialGradient id="bsg" cx="86%" cy="6%" r="54%"><stop offset="0" stop-color="__ACCENT__" stop-opacity=".16"/><stop offset="1" stop-color="__ACCENT__" stop-opacity="0"/></radialGradient></defs><rect width="1280" height="720" fill="url(#bsg)"/></svg><div class="bd-arc" style="position:absolute;inset:0;pointer-events:none"><svg width="100%" height="100%" viewBox="0 0 1280 720" preserveAspectRatio="none"><defs><linearGradient id="bsl" x1="0" y1="0" x2="1" y2="0"><stop offset="0" stop-color="__ACCENT__" stop-opacity=".12"/><stop offset=".5" stop-color="__ACCENT__" stop-opacity=".34"/><stop offset="1" stop-color="__ACCENT__" stop-opacity=".12"/></linearGradient><filter id="bslb"><feGaussianBlur stdDeviation="1.4"/></filter></defs><path d="M-80 706 C 360 612,900 656,1360 556" fill="none" stroke="url(#bsl)" stroke-width="1.6" filter="url(#bslb)"/><path d="M-80 706 C 360 612,900 656,1360 556" fill="none" stroke="url(#bsl)" stroke-width=".7"/></svg></div><div style="position:absolute;inset:0;background:radial-gradient(130% 92% at 50% 128%,rgba(127,127,127,.10),transparent 46%)"></div>
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
.deck-header,.deck-footer,.deck-pageno{color:var(--muted)}
|
|
19
19
|
.rule{background:var(--hair)} .rule-foot{background:#E7E1D3}
|
|
20
20
|
.eyebrow{color:var(--accent);font-weight:700} .accent-bar{background:var(--accent);border-radius:1px}
|
|
21
|
-
.deck-title,.cover-title,.section-title,.ending-title{color:var(--title);font-family:var(--font-head)}
|
|
21
|
+
.deck-title,.cover-title,.section-title,.ending-title{color:var(--title);font-family:var(--font-head);font-weight:700}
|
|
22
22
|
.cover-sub,.ending-sub,.section-desc{color:var(--muted)}
|
|
23
23
|
/* soft warm card + earthy ramp */
|
|
24
24
|
.card{border-radius:var(--card-radius);background:#FAF8F2;border:1px solid var(--hair);box-shadow:0 10px 28px rgba(80,55,30,.07);overflow:hidden}
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
.deck-header,.deck-footer,.deck-pageno{color:var(--muted)}
|
|
19
19
|
.rule{background:var(--hair)} .rule-foot{background:rgba(255,255,255,.06)}
|
|
20
20
|
.eyebrow{color:var(--muted);font-family:var(--font-body);letter-spacing:.24em} .accent-bar{background:var(--title);border-radius:1px}
|
|
21
|
-
.deck-title,.cover-title,.section-title,.ending-title{color:var(--title);font-family:var(--font-head);letter-spacing:-.02em}
|
|
21
|
+
.deck-title,.cover-title,.section-title,.ending-title{color:var(--title);font-family:var(--font-head);font-weight:700;letter-spacing:-.02em}
|
|
22
22
|
.cover-sub,.ending-sub,.section-desc{color:var(--body)}
|
|
23
23
|
/* glass card + neutral value ramp (no hue) */
|
|
24
24
|
.card{border-radius:var(--card-radius);background:linear-gradient(180deg,rgba(255,255,255,.06),rgba(255,255,255,.02));border:1px solid var(--hair);box-shadow:0 24px 60px rgba(0,0,0,.5),inset 0 1px 0 rgba(255,255,255,.08);overflow:hidden}
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
.deck-header,.deck-footer,.deck-pageno{color:var(--muted)}
|
|
19
19
|
.rule{background:var(--hair)} .rule-foot{background:rgba(212,175,55,.10)}
|
|
20
20
|
.eyebrow{color:var(--accent)} .accent-bar{background:var(--accent);border-radius:1px}
|
|
21
|
-
.deck-title,.cover-title,.section-title,.ending-title{color:var(--title);font-family:var(--font-head)}
|
|
21
|
+
.deck-title,.cover-title,.section-title,.ending-title{color:var(--title);font-family:var(--font-head);font-weight:700}
|
|
22
22
|
.cover-sub,.ending-sub,.section-desc{color:var(--body)}
|
|
23
23
|
.card{border-radius:var(--card-radius);background:linear-gradient(180deg,rgba(212,175,55,.06),rgba(212,175,55,.015));border:1px solid rgba(212,175,55,.20);box-shadow:0 24px 60px rgba(0,0,0,.5);overflow:hidden}
|
|
24
24
|
.card-idx{color:var(--muted)} .card-body{color:var(--body)}
|