@cyber-dash-tech/revela 0.18.16 → 0.19.0
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/README.md +27 -13
- package/README.zh-CN.md +27 -13
- package/assets/img/lucent-01.jpg +0 -0
- package/assets/img/lucent-02.jpg +0 -0
- package/assets/img/lucent-03.jpg +0 -0
- package/assets/img/lucent-dark-01.jpg +0 -0
- package/assets/img/lucent-dark-02.jpg +0 -0
- package/assets/img/lucent-dark-03.jpg +0 -0
- package/assets/img/monet-01.jpg +0 -0
- package/assets/img/monet-02.jpg +0 -0
- package/assets/img/monet-03.jpg +0 -0
- package/assets/img/starter-01.jpg +0 -0
- package/assets/img/starter-02.jpg +0 -0
- package/assets/img/starter-03.jpg +0 -0
- package/assets/img/summit-01.jpg +0 -0
- package/assets/img/summit-02.jpg +0 -0
- package/assets/img/summit-03.jpg +0 -0
- package/designs/lucent/DESIGN.md +76 -0
- package/designs/lucent/design.css +283 -0
- package/designs/lucent-dark/DESIGN.md +278 -0
- package/designs/lucent-dark/assets/card-lens.jpg +0 -0
- package/designs/lucent-dark/assets/closing-background.jpg +0 -0
- package/designs/lucent-dark/assets/cover-background.jpg +0 -0
- package/designs/lucent-dark/assets/report-visual.jpg +0 -0
- package/designs/lucent-dark/assets/soft-texture.jpg +0 -0
- package/designs/lucent-dark/assets/toc-orb.png +0 -0
- package/designs/lucent-dark/design.css +417 -0
- package/designs/monet/DESIGN.md +14 -0
- package/designs/monet/assets/card-lens.jpg +0 -0
- package/designs/monet/assets/closing-background.jpg +0 -0
- package/designs/monet/assets/cover-background.jpg +0 -0
- package/designs/monet/assets/report-visual.jpg +0 -0
- package/designs/monet/assets/soft-texture.jpg +0 -0
- package/designs/monet/assets/toc-orb.png +0 -0
- package/designs/monet/design.css +340 -0
- package/designs/starter/DESIGN.md +14 -0
- package/designs/starter/assets/card-lens.jpg +0 -0
- package/designs/starter/assets/closing-background.jpg +0 -0
- package/designs/starter/assets/cover-background.jpg +0 -0
- package/designs/starter/assets/report-visual.jpg +0 -0
- package/designs/starter/assets/soft-texture.jpg +0 -0
- package/designs/starter/assets/toc-orb.png +0 -0
- package/designs/starter/design.css +322 -0
- package/designs/summit/DESIGN.md +18 -0
- package/designs/summit/assets/card-lens.jpg +0 -0
- package/designs/summit/assets/closing-background.jpg +0 -0
- package/designs/summit/assets/cover-background.jpg +0 -0
- package/designs/summit/assets/report-visual.jpg +0 -0
- package/designs/summit/assets/soft-texture.jpg +0 -0
- package/designs/summit/assets/toc-orb.png +0 -0
- package/designs/summit/design.css +334 -0
- package/lib/commands/designs-new.ts +13 -25
- package/lib/commands/designs-preview.ts +3 -8
- package/lib/deck-html/foundation.ts +8 -8
- package/lib/design/designs.ts +305 -14
- package/lib/narrative-state/deck-plan-artifact.ts +40 -3
- package/lib/page-templates/built-in-preview.html +373 -0
- package/lib/page-templates/contracts.ts +2 -0
- package/lib/page-templates/css.ts +2 -0
- package/lib/page-templates/foundation.ts +41 -0
- package/lib/page-templates/index.ts +6 -0
- package/lib/page-templates/registry.ts +3 -0
- package/lib/page-templates/render.ts +1202 -0
- package/lib/page-templates/templates/agenda.ts +4 -0
- package/lib/page-templates/templates/chart-takeaways.ts +4 -0
- package/lib/page-templates/templates/claim-supporting-visual.ts +4 -0
- package/lib/page-templates/templates/closing.ts +4 -0
- package/lib/page-templates/templates/cover.ts +4 -0
- package/lib/page-templates/templates/executive-summary.ts +4 -0
- package/lib/page-templates/templates/index.ts +19 -0
- package/lib/page-templates/templates/key-message-evidence.ts +4 -0
- package/lib/page-templates/templates/metric-highlight.ts +4 -0
- package/lib/page-templates/templates/problem-context.ts +4 -0
- package/lib/page-templates/templates/process-steps.ts +4 -0
- package/lib/page-templates/templates/recommendation-decision.ts +4 -0
- package/lib/page-templates/templates/risks-tradeoffs.ts +4 -0
- package/lib/page-templates/templates/section-divider.ts +4 -0
- package/lib/page-templates/templates/shared.ts +11 -0
- package/lib/page-templates/templates/table-comparison.ts +4 -0
- package/lib/page-templates/templates/timeline-roadmap.ts +4 -0
- package/lib/page-templates/vocabulary.ts +158 -0
- package/lib/prompt-builder.ts +5 -5
- package/lib/qa/artifact.ts +66 -1
- package/lib/qa/compliance.ts +5 -1
- package/lib/runtime/index.ts +99 -3
- package/package.json +7 -15
- package/plugins/revela/.codex-plugin/plugin.json +1 -1
- package/plugins/revela/hooks/revela_guard.ts +35 -0
- package/plugins/revela/mcp/revela-server.ts +101 -5
- package/plugins/revela/skills/revela-design/SKILL.md +21 -16
- package/plugins/revela/skills/revela-make-deck/SKILL.md +24 -15
- package/designs/lucent/preview.html +0 -529
- package/designs/monet/preview.html +0 -190
- package/designs/starter/preview.html +0 -335
- package/designs/summit/preview.html +0 -186
package/README.md
CHANGED
|
@@ -39,7 +39,7 @@ npm_config_cache=/tmp/revela-npm-cache bun run smoke:mcp-pack
|
|
|
39
39
|
Install Revela through the Codex Git marketplace:
|
|
40
40
|
|
|
41
41
|
```bash
|
|
42
|
-
codex plugin marketplace add https://github.com/cyber-dash-tech/revela --ref v0.
|
|
42
|
+
codex plugin marketplace add https://github.com/cyber-dash-tech/revela --ref v0.19.0
|
|
43
43
|
codex plugin add revela@revela
|
|
44
44
|
```
|
|
45
45
|
|
|
@@ -77,33 +77,47 @@ The Git marketplace ref and `.mcp.json` plugin launcher are part of the same rel
|
|
|
77
77
|
|
|
78
78
|
## Built-In Designs
|
|
79
79
|
|
|
80
|
-
Revela includes built-in deck designs
|
|
80
|
+
Revela includes built-in deck designs. Design previews are generated from the built-in page-template preview fixture plus the selected design CSS. Each row shows a cover plus representative template pages chosen to highlight that design's character.
|
|
81
81
|
|
|
82
|
-
###
|
|
82
|
+
### starter
|
|
83
|
+
|
|
84
|
+
<p align="center">
|
|
85
|
+
<img src="assets/img/starter-01.jpg" alt="Starter design cover preview" width="32%" />
|
|
86
|
+
<img src="assets/img/starter-02.jpg" alt="Starter design executive-summary preview" width="32%" />
|
|
87
|
+
<img src="assets/img/starter-03.jpg" alt="Starter design process-steps preview" width="32%" />
|
|
88
|
+
</p>
|
|
89
|
+
|
|
90
|
+
### summit
|
|
83
91
|
|
|
84
92
|
<p align="center">
|
|
85
93
|
<img src="assets/img/summit-01.jpg" alt="Summit design cover preview" width="32%" />
|
|
86
|
-
<img src="assets/img/summit-02.jpg" alt="Summit design
|
|
87
|
-
<img src="assets/img/summit-03.jpg" alt="Summit design timeline preview" width="32%" />
|
|
94
|
+
<img src="assets/img/summit-02.jpg" alt="Summit design agenda preview" width="32%" />
|
|
95
|
+
<img src="assets/img/summit-03.jpg" alt="Summit design vertical timeline-roadmap preview" width="32%" />
|
|
88
96
|
</p>
|
|
89
97
|
|
|
90
|
-
###
|
|
98
|
+
### monet
|
|
91
99
|
|
|
92
100
|
<p align="center">
|
|
93
101
|
<img src="assets/img/monet-01.jpg" alt="Monet design cover preview" width="32%" />
|
|
94
|
-
<img src="assets/img/monet-02.jpg" alt="Monet design
|
|
95
|
-
<img src="assets/img/monet-03.jpg" alt="Monet design
|
|
102
|
+
<img src="assets/img/monet-02.jpg" alt="Monet design claim-supporting-visual preview" width="32%" />
|
|
103
|
+
<img src="assets/img/monet-03.jpg" alt="Monet design table-comparison preview" width="32%" />
|
|
96
104
|
</p>
|
|
97
105
|
|
|
98
|
-
###
|
|
106
|
+
### lucent
|
|
99
107
|
|
|
100
108
|
<p align="center">
|
|
101
109
|
<img src="assets/img/lucent-01.jpg" alt="Lucent design cover preview" width="32%" />
|
|
102
|
-
<img src="assets/img/lucent-02.jpg" alt="Lucent design
|
|
103
|
-
<img src="assets/img/lucent-03.jpg" alt="Lucent design
|
|
110
|
+
<img src="assets/img/lucent-02.jpg" alt="Lucent design chart-takeaways preview" width="32%" />
|
|
111
|
+
<img src="assets/img/lucent-03.jpg" alt="Lucent design recommendation-decision preview" width="32%" />
|
|
104
112
|
</p>
|
|
105
113
|
|
|
106
|
-
|
|
114
|
+
### lucent-dark
|
|
115
|
+
|
|
116
|
+
<p align="center">
|
|
117
|
+
<img src="assets/img/lucent-dark-01.jpg" alt="Lucent Dark design cover preview" width="32%" />
|
|
118
|
+
<img src="assets/img/lucent-dark-02.jpg" alt="Lucent Dark design agenda preview" width="32%" />
|
|
119
|
+
<img src="assets/img/lucent-dark-03.jpg" alt="Lucent Dark design horizontal timeline-roadmap preview" width="32%" />
|
|
120
|
+
</p>
|
|
107
121
|
|
|
108
122
|
To switch designs in Codex, ask:
|
|
109
123
|
|
|
@@ -135,7 +149,7 @@ Use these prompts in Codex from the workspace that contains your source material
|
|
|
135
149
|
|
|
136
150
|
> [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.18.16/skills/revela/SKILL.md), create a new design named neon-finance with a crisp financial-dashboard style: dark surfaces, precise grids, and bright green accents.
|
|
137
151
|
|
|
138
|
-
Revela may ask for references or constraints, then creates and
|
|
152
|
+
Revela may ask for references or constraints, then creates a workspace draft with `DESIGN.md`, `design.css`, and any local `assets/**`. It generates a preview from the built-in page-template fixture plus that CSS so you can review cover, agenda, timelines, charts, tables, cards, and visual slots before installing. When it is ready, switch to it:
|
|
139
153
|
|
|
140
154
|
> [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.18.16/skills/revela/SKILL.md), use neon-finance as the design.
|
|
141
155
|
|
package/README.zh-CN.md
CHANGED
|
@@ -39,7 +39,7 @@ npm_config_cache=/tmp/revela-npm-cache bun run smoke:mcp-pack
|
|
|
39
39
|
通过 Codex Git marketplace 安装 Revela:
|
|
40
40
|
|
|
41
41
|
```bash
|
|
42
|
-
codex plugin marketplace add https://github.com/cyber-dash-tech/revela --ref v0.
|
|
42
|
+
codex plugin marketplace add https://github.com/cyber-dash-tech/revela --ref v0.19.0
|
|
43
43
|
codex plugin add revela@revela
|
|
44
44
|
```
|
|
45
45
|
|
|
@@ -77,33 +77,47 @@ Git marketplace ref 和 `.mcp.json` plugin launcher 属于同一个 release arti
|
|
|
77
77
|
|
|
78
78
|
## 内置设计
|
|
79
79
|
|
|
80
|
-
Revela 内置多个 deck design
|
|
80
|
+
Revela 内置多个 deck design。Design preview 由内置 page-template preview fixture 加上当前 design CSS 生成。每组截图保留 cover,并选择更能体现该 design 特征的代表性 template 页面。
|
|
81
81
|
|
|
82
|
-
###
|
|
82
|
+
### starter
|
|
83
|
+
|
|
84
|
+
<p align="center">
|
|
85
|
+
<img src="assets/img/starter-01.jpg" alt="Starter design cover preview" width="32%" />
|
|
86
|
+
<img src="assets/img/starter-02.jpg" alt="Starter design executive-summary preview" width="32%" />
|
|
87
|
+
<img src="assets/img/starter-03.jpg" alt="Starter design process-steps preview" width="32%" />
|
|
88
|
+
</p>
|
|
89
|
+
|
|
90
|
+
### summit
|
|
83
91
|
|
|
84
92
|
<p align="center">
|
|
85
93
|
<img src="assets/img/summit-01.jpg" alt="Summit design cover preview" width="32%" />
|
|
86
|
-
<img src="assets/img/summit-02.jpg" alt="Summit design
|
|
87
|
-
<img src="assets/img/summit-03.jpg" alt="Summit design timeline preview" width="32%" />
|
|
94
|
+
<img src="assets/img/summit-02.jpg" alt="Summit design agenda preview" width="32%" />
|
|
95
|
+
<img src="assets/img/summit-03.jpg" alt="Summit design vertical timeline-roadmap preview" width="32%" />
|
|
88
96
|
</p>
|
|
89
97
|
|
|
90
|
-
###
|
|
98
|
+
### monet
|
|
91
99
|
|
|
92
100
|
<p align="center">
|
|
93
101
|
<img src="assets/img/monet-01.jpg" alt="Monet design cover preview" width="32%" />
|
|
94
|
-
<img src="assets/img/monet-02.jpg" alt="Monet design
|
|
95
|
-
<img src="assets/img/monet-03.jpg" alt="Monet design
|
|
102
|
+
<img src="assets/img/monet-02.jpg" alt="Monet design claim-supporting-visual preview" width="32%" />
|
|
103
|
+
<img src="assets/img/monet-03.jpg" alt="Monet design table-comparison preview" width="32%" />
|
|
96
104
|
</p>
|
|
97
105
|
|
|
98
|
-
###
|
|
106
|
+
### lucent
|
|
99
107
|
|
|
100
108
|
<p align="center">
|
|
101
109
|
<img src="assets/img/lucent-01.jpg" alt="Lucent design cover preview" width="32%" />
|
|
102
|
-
<img src="assets/img/lucent-02.jpg" alt="Lucent design
|
|
103
|
-
<img src="assets/img/lucent-03.jpg" alt="Lucent design
|
|
110
|
+
<img src="assets/img/lucent-02.jpg" alt="Lucent design chart-takeaways preview" width="32%" />
|
|
111
|
+
<img src="assets/img/lucent-03.jpg" alt="Lucent design recommendation-decision preview" width="32%" />
|
|
104
112
|
</p>
|
|
105
113
|
|
|
106
|
-
|
|
114
|
+
### lucent-dark
|
|
115
|
+
|
|
116
|
+
<p align="center">
|
|
117
|
+
<img src="assets/img/lucent-dark-01.jpg" alt="Lucent Dark design cover preview" width="32%" />
|
|
118
|
+
<img src="assets/img/lucent-dark-02.jpg" alt="Lucent Dark design agenda preview" width="32%" />
|
|
119
|
+
<img src="assets/img/lucent-dark-03.jpg" alt="Lucent Dark design horizontal timeline-roadmap preview" width="32%" />
|
|
120
|
+
</p>
|
|
107
121
|
|
|
108
122
|
在 Codex 中切换 design,可以这样问:
|
|
109
123
|
|
|
@@ -135,7 +149,7 @@ Domain 提供特定场景的沟通 guidance,例如 consulting、product 或 in
|
|
|
135
149
|
|
|
136
150
|
> [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.18.16/skills/revela/SKILL.md),创建一个名为 neon-finance 的新 design:金融仪表盘风格,深色界面、精密网格、亮绿色重点色。
|
|
137
151
|
|
|
138
|
-
Revela
|
|
152
|
+
Revela 可能会继续询问参考图、风格约束或禁忌项,然后在 workspace draft 中创建 `DESIGN.md`、`design.css` 和需要的本地 `assets/**`。它会用内置 page-template fixture 加上这份 CSS 生成 preview,让你在 install 前先检查 cover、agenda、timeline、chart、table、card 和 visual slot。创建完成后再切换使用:
|
|
139
153
|
|
|
140
154
|
> [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.18.16/skills/revela/SKILL.md),使用 neon-finance 作为 design。
|
|
141
155
|
|
|
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
|
|
Binary file
|
|
Binary file
|
package/designs/lucent/DESIGN.md
CHANGED
|
@@ -73,6 +73,68 @@ Asset policy:
|
|
|
73
73
|
- Use `assets/toc-orb.png` only when transparency is needed for the Lucent glass orb.
|
|
74
74
|
- Use `assets/soft-texture.jpg`, `assets/card-lens.jpg`, and `assets/report-visual.jpg` as subtle report accents; never inline base64 images in generated decks.
|
|
75
75
|
|
|
76
|
+
```javascript
|
|
77
|
+
class SlidePresentation {
|
|
78
|
+
constructor() {
|
|
79
|
+
this.slides = document.querySelectorAll('.slide');
|
|
80
|
+
this.currentSlide = 0;
|
|
81
|
+
this.setupScaling();
|
|
82
|
+
this.setupIntersectionObserver();
|
|
83
|
+
this.setupKeyboardNav();
|
|
84
|
+
this.setupTouchNav();
|
|
85
|
+
this.setupMouseWheel();
|
|
86
|
+
}
|
|
87
|
+
setupScaling() {
|
|
88
|
+
const canvases = document.querySelectorAll('.slide-canvas');
|
|
89
|
+
const BASE_W = 1920;
|
|
90
|
+
const BASE_H = 1080;
|
|
91
|
+
const update = () => {
|
|
92
|
+
const scale = Math.min(window.innerWidth / BASE_W, window.innerHeight / BASE_H);
|
|
93
|
+
canvases.forEach((canvas) => { canvas.style.transform = `scale(${scale})`; });
|
|
94
|
+
};
|
|
95
|
+
window.addEventListener('resize', update);
|
|
96
|
+
update();
|
|
97
|
+
}
|
|
98
|
+
setupIntersectionObserver() {
|
|
99
|
+
const observer = new IntersectionObserver((entries) => {
|
|
100
|
+
entries.forEach((entry) => {
|
|
101
|
+
if (entry.isIntersecting) entry.target.querySelectorAll('.reveal').forEach((el) => el.classList.add('visible'));
|
|
102
|
+
});
|
|
103
|
+
}, { threshold: 0.2 });
|
|
104
|
+
this.slides.forEach((slide) => observer.observe(slide));
|
|
105
|
+
}
|
|
106
|
+
setupKeyboardNav() {
|
|
107
|
+
document.addEventListener('keydown', (event) => {
|
|
108
|
+
if (['ArrowDown', 'ArrowRight', ' ', 'PageDown'].includes(event.key)) { event.preventDefault(); this.goTo(this.currentSlide + 1); }
|
|
109
|
+
else if (['ArrowUp', 'ArrowLeft', 'PageUp'].includes(event.key)) { event.preventDefault(); this.goTo(this.currentSlide - 1); }
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
setupTouchNav() {
|
|
113
|
+
let startY = 0;
|
|
114
|
+
document.addEventListener('touchstart', (event) => { startY = event.touches[0].clientY; }, { passive: true });
|
|
115
|
+
document.addEventListener('touchend', (event) => {
|
|
116
|
+
const deltaY = startY - event.changedTouches[0].clientY;
|
|
117
|
+
if (Math.abs(deltaY) > 40) this.goTo(this.currentSlide + (deltaY > 0 ? 1 : -1));
|
|
118
|
+
}, { passive: true });
|
|
119
|
+
}
|
|
120
|
+
setupMouseWheel() {
|
|
121
|
+
let last = 0;
|
|
122
|
+
document.addEventListener('wheel', (event) => {
|
|
123
|
+
const now = Date.now();
|
|
124
|
+
if (now - last < 800) return;
|
|
125
|
+
last = now;
|
|
126
|
+
this.goTo(this.currentSlide + (event.deltaY > 0 ? 1 : -1));
|
|
127
|
+
}, { passive: true });
|
|
128
|
+
}
|
|
129
|
+
goTo(index) {
|
|
130
|
+
const clamped = Math.max(0, Math.min(this.slides.length - 1, index));
|
|
131
|
+
this.slides[clamped].scrollIntoView({ behavior: 'smooth' });
|
|
132
|
+
this.currentSlide = clamped;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
new SlidePresentation();
|
|
136
|
+
```
|
|
137
|
+
|
|
76
138
|
<!-- @design:foundation:end -->
|
|
77
139
|
|
|
78
140
|
<!-- @design:rules:start -->
|
|
@@ -189,6 +251,20 @@ Small top-right logo or brand mark. Keep it clear, restrained, and never use log
|
|
|
189
251
|
|
|
190
252
|
<!-- @design:components:end -->
|
|
191
253
|
|
|
254
|
+
<!-- @design:page-templates:start -->
|
|
255
|
+
|
|
256
|
+
### Page Template Mapping
|
|
257
|
+
|
|
258
|
+
Lucent skins Revela built-in page templates without owning their semantic structure. The template renderer owns required fields, DOM skeletons, and template QA; Lucent supplies bright report surfaces, blue-violet-cyan accents, fixed-pixel typography, and local assets.
|
|
259
|
+
|
|
260
|
+
- `cover`, `section-divider`, `closing`: use full-bleed hero treatment with Lucent package assets.
|
|
261
|
+
- `agenda`, `executive-summary`, `problem-context`, `key-message-evidence`, `claim-supporting-visual`: use report-story/card-grid language with quiet surfaces.
|
|
262
|
+
- `metric-highlight`, `chart-takeaways`, `table-comparison`: use data-forward Lucent panels with explicit interpretation regions.
|
|
263
|
+
- `timeline-roadmap`: map to the roadmap visual system. Dots remain milestone anchors inside each timeline item; do not absolutely position detached decorative dots.
|
|
264
|
+
- `process-steps`, `recommendation-decision`, `risks-tradeoffs`: use recommendation and steps surfaces with no nested card-in-card framing.
|
|
265
|
+
|
|
266
|
+
<!-- @design:page-templates:end -->
|
|
267
|
+
|
|
192
268
|
<!-- @design:chart-rules:start -->
|
|
193
269
|
|
|
194
270
|
### Chart Rules
|
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
/* Lucent design CSS. Template HTML owns structure; this file owns visual treatment. */
|
|
2
|
+
|
|
3
|
+
:root {
|
|
4
|
+
--bg-frame: #07111f;
|
|
5
|
+
--bg-page: #f7f9fc;
|
|
6
|
+
--bg-page-alt: #eef3f9;
|
|
7
|
+
--surface: #ffffff;
|
|
8
|
+
--surface-tint: #f1f6fc;
|
|
9
|
+
--surface-blue: #e7f0fb;
|
|
10
|
+
--text-primary: #101a2b;
|
|
11
|
+
--text-secondary: #42526a;
|
|
12
|
+
--text-muted: #7b8aa0;
|
|
13
|
+
--line: rgba(44, 70, 108, 0.14);
|
|
14
|
+
--line-strong: rgba(44, 70, 108, 0.28);
|
|
15
|
+
--accent-primary: #315eea;
|
|
16
|
+
--accent-secondary: #6e5df6;
|
|
17
|
+
--accent-cyan: #18a8d8;
|
|
18
|
+
--accent-coral: #f06370;
|
|
19
|
+
--accent-soft: #dbe8ff;
|
|
20
|
+
--shadow-soft: rgba(30, 65, 130, 0.13);
|
|
21
|
+
--font-display: DengXian, "Microsoft YaHei", "PingFang SC", Arial, ui-sans-serif, sans-serif;
|
|
22
|
+
--font-body: DengXian, "Microsoft YaHei", "PingFang SC", Arial, ui-sans-serif, sans-serif;
|
|
23
|
+
--grid-margin-x: 72px;
|
|
24
|
+
--grid-margin-y: 56px;
|
|
25
|
+
--grid-columns: 12;
|
|
26
|
+
--grid-gutter: 24px;
|
|
27
|
+
--grid-safe-top: 56px;
|
|
28
|
+
--grid-safe-bottom: 64px;
|
|
29
|
+
--space-1: 8px;
|
|
30
|
+
--space-2: 16px;
|
|
31
|
+
--space-3: 24px;
|
|
32
|
+
--space-4: 32px;
|
|
33
|
+
--space-5: 48px;
|
|
34
|
+
--space-6: 72px;
|
|
35
|
+
--font-size-caption: 16px;
|
|
36
|
+
--font-size-body: 22px;
|
|
37
|
+
--font-size-body-small: 18px;
|
|
38
|
+
--font-size-h3: 31px;
|
|
39
|
+
--font-size-h2: 52px;
|
|
40
|
+
--font-size-hero: 104px;
|
|
41
|
+
--surface-radius: 8px;
|
|
42
|
+
--surface-radius-large: 12px;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
* { box-sizing: border-box; }
|
|
46
|
+
html { scroll-snap-type: y mandatory; overflow-y: scroll; height: 100%; }
|
|
47
|
+
body { margin: 0; background: var(--bg-frame, #07111f); color: var(--text-primary, #101a2b); font-family: var(--font-body, Arial, sans-serif); -webkit-font-smoothing: antialiased; }
|
|
48
|
+
.slide { min-height: 100dvh; scroll-snap-align: start; display: flex; align-items: center; justify-content: center; overflow: hidden; background: var(--bg-frame, #07111f); }
|
|
49
|
+
.slide-canvas { width: 1920px; height: 1080px; flex-shrink: 0; transform-origin: center center; position: relative; overflow: hidden; }
|
|
50
|
+
.template-slide .slide-canvas {
|
|
51
|
+
background:
|
|
52
|
+
radial-gradient(circle at 82% 16%, rgba(49, 94, 234, 0.11), transparent 29%),
|
|
53
|
+
linear-gradient(135deg, var(--bg-page), var(--bg-page-alt));
|
|
54
|
+
color: var(--text-primary);
|
|
55
|
+
padding: 72px;
|
|
56
|
+
box-sizing: border-box;
|
|
57
|
+
}
|
|
58
|
+
.template-frame { width: 100%; height: 100%; display: flex; flex-direction: column; gap: 34px; }
|
|
59
|
+
.template-frame--catalog { gap: 26px; }
|
|
60
|
+
.template-eyebrow { margin: 0 0 14px; font-size: 16px; text-transform: uppercase; letter-spacing: 0.18em; color: var(--text-muted); font-weight: 700; }
|
|
61
|
+
.template-frame header { flex: 0 0 auto; padding-bottom: 8px; overflow: visible; }
|
|
62
|
+
.template-title { margin: 0; max-width: 1320px; font-family: var(--font-display); font-size: 62px; line-height: 1.22; color: var(--text-primary); padding-bottom: 6px; overflow: visible; }
|
|
63
|
+
.template-body { flex: 1; min-height: 0; }
|
|
64
|
+
.template-grid { display: grid; gap: 24px; height: 100%; }
|
|
65
|
+
.template-grid.cols-2 { grid-template-columns: 0.95fr 1.05fr; }
|
|
66
|
+
.template-grid.cols-3 { grid-template-columns: repeat(3, 1fr); }
|
|
67
|
+
.template-grid.cols-4 { grid-template-columns: repeat(4, 1fr); }
|
|
68
|
+
.template-chart-layout { grid-template-columns: 2fr 1fr; }
|
|
69
|
+
.template-card { background: rgba(255,255,255,0.82); border: 1px solid var(--line); border-radius: var(--surface-radius); padding: 28px; box-shadow: 0 18px 44px var(--shadow-soft); }
|
|
70
|
+
.template-card h2, .template-card h3 { margin: 0 0 12px; font-size: 28px; line-height: 1.32; padding-bottom: 4px; overflow: visible; }
|
|
71
|
+
.template-card p { margin: 10px 0; font-size: 21px; line-height: 1.42; color: var(--text-secondary); }
|
|
72
|
+
.template-key-message-panel { display: flex; flex-direction: column; justify-content: flex-start; gap: 24px; padding: 0; background: transparent; border-radius: 0; box-shadow: none; }
|
|
73
|
+
.template-key-message-kicker { margin: 0; max-width: 720px; font-size: 32px; line-height: 1.24; letter-spacing: 0.14em; text-transform: uppercase; color: var(--accent-primary); font-weight: 800; padding-bottom: 6px; overflow: visible; }
|
|
74
|
+
.template-key-message-panel p { margin: 0; max-width: 760px; font-size: 25px; line-height: 1.5; color: var(--text-secondary); }
|
|
75
|
+
.template-evidence-grid { display: grid; gap: 24px; min-height: 0; }
|
|
76
|
+
.template-evidence-card { min-height: 0; }
|
|
77
|
+
.template-claim-text-panel { min-height: 0; display: flex; flex-direction: column; justify-content: flex-start; align-items: flex-start; gap: 18px; padding: 0; background: transparent; border: 0; border-radius: 0; box-shadow: none; }
|
|
78
|
+
.template-claim-text-title { margin: 0; max-width: 760px; font-size: 31px; line-height: 1.26; color: var(--text-primary); padding-bottom: 4px; overflow: visible; }
|
|
79
|
+
.template-claim-text-body { margin: 0; max-width: 760px; font-size: 22px; line-height: 1.48; color: var(--text-secondary); }
|
|
80
|
+
.template-claim-text-panel .template-list { margin-top: 4px; }
|
|
81
|
+
.template-list { display: grid; gap: 18px; margin: 0; padding: 0; list-style: none; }
|
|
82
|
+
.template-list li { position: relative; padding-left: 24px; font-size: 24px; line-height: 1.38; color: var(--text-secondary); }
|
|
83
|
+
.template-list li::before { content: ""; position: absolute; left: 0; top: 14px; width: 7px; height: 7px; background: var(--accent-primary); }
|
|
84
|
+
.template-hero { margin: 0; max-width: none; justify-content: center; align-items: flex-start; }
|
|
85
|
+
.template-hero > [data-template-slot="hero"] { width: 100%; }
|
|
86
|
+
.template-hero header { padding-bottom: 0; }
|
|
87
|
+
.template-hero-title { font-size: 120px; line-height: 1.18; color: white; font-weight: 800; opacity: 0.8; padding: 12px 0 20px; max-width: 1320px; }
|
|
88
|
+
.template-hero .template-eyebrow { color: rgba(255,255,255,0.78); }
|
|
89
|
+
.template-hero--cover, .template-hero--section-divider { justify-content: center; align-items: flex-start; }
|
|
90
|
+
.template-hero--closing { justify-content: flex-end; align-items: flex-end; }
|
|
91
|
+
.template-hero--closing > [data-template-slot="hero"] { display: flex; justify-content: flex-end; text-align: right; }
|
|
92
|
+
.template-hero--closing .template-hero-title { max-width: 1120px; }
|
|
93
|
+
.template-slide[data-template="agenda"] .template-frame { display: grid; grid-template-rows: 1fr auto; gap: 28px; }
|
|
94
|
+
.template-slide[data-template="cover"] .slide-canvas,
|
|
95
|
+
.template-slide[data-template="section-divider"] .slide-canvas,
|
|
96
|
+
.template-slide[data-template="closing"] .slide-canvas {
|
|
97
|
+
background:
|
|
98
|
+
radial-gradient(circle at 80% 14%, rgba(24,168,216,0.32), transparent 28%),
|
|
99
|
+
linear-gradient(135deg, #07111f, #101a2b 62%, #243a73);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.template-slide[data-design="lucent"][data-template="cover"] .slide-canvas {
|
|
103
|
+
background:
|
|
104
|
+
linear-gradient(90deg, rgba(7,17,31,0.82), rgba(7,17,31,0.42) 52%, rgba(7,17,31,0.24)),
|
|
105
|
+
url("./assets/cover-background.jpg") center center / cover no-repeat;
|
|
106
|
+
}
|
|
107
|
+
.template-slide[data-design="lucent"][data-template="agenda"] .slide-canvas {
|
|
108
|
+
background:
|
|
109
|
+
linear-gradient(90deg, rgba(7,17,31,0.86), rgba(7,17,31,0.58) 52%, rgba(7,17,31,0.32)),
|
|
110
|
+
url("./assets/cover-background.jpg") center center / cover no-repeat;
|
|
111
|
+
}
|
|
112
|
+
.template-slide[data-design="lucent"][data-template="section-divider"] .slide-canvas {
|
|
113
|
+
background:
|
|
114
|
+
linear-gradient(90deg, rgba(7,17,31,0.86), rgba(16,26,43,0.62) 58%, rgba(36,58,115,0.36)),
|
|
115
|
+
url("./assets/cover-background.jpg") center center / cover no-repeat;
|
|
116
|
+
}
|
|
117
|
+
.template-slide[data-template="closing"] .slide-canvas { background: linear-gradient(135deg, #07111f, #315eea 58%, #18a8d8); }
|
|
118
|
+
|
|
119
|
+
.template-slide[data-design="lucent"][data-template="closing"] .slide-canvas {
|
|
120
|
+
background:
|
|
121
|
+
linear-gradient(90deg, rgba(7,17,31,0.82), rgba(49,94,234,0.42) 58%, rgba(24,168,216,0.24)),
|
|
122
|
+
url("./assets/closing-background.jpg") center center / cover no-repeat;
|
|
123
|
+
}
|
|
124
|
+
.template-agenda-panel { height: 100%; min-height: 0; display: flex; overflow: hidden; color: white; }
|
|
125
|
+
.template-agenda-inner { width: 100%; display: grid; grid-template-columns: 37% minmax(0, 1fr); align-items: stretch; gap: 76px; }
|
|
126
|
+
.template-agenda-header { display: flex; flex-direction: column; min-height: 0; padding: 10px 0 0; }
|
|
127
|
+
.template-agenda-header .template-eyebrow { color: rgba(255,255,255,0.64); }
|
|
128
|
+
.template-agenda-header .template-title { max-width: 440px; font-size: 54px; line-height: 1.16; letter-spacing: 0; text-transform: uppercase; color: white; padding-bottom: 8px; overflow: visible; }
|
|
129
|
+
.template-agenda-footer { margin: auto 0 0; font-size: 13px; line-height: 1.4; letter-spacing: 0.12em; text-transform: uppercase; font-weight: 800; color: rgba(255,255,255,0.84); }
|
|
130
|
+
.template-agenda-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; justify-content: center; gap: 40px; height: 100%; }
|
|
131
|
+
.template-agenda-item { display: grid; grid-template-columns: 86px minmax(0, 1fr); gap: 44px; align-items: center; min-height: 58px; overflow: visible; }
|
|
132
|
+
.template-agenda-item span { font-family: var(--font-display); font-size: 44px; line-height: 1; letter-spacing: 0.03em; color: var(--accent-cyan, #18a8d8); font-weight: 800; font-variant-numeric: tabular-nums; }
|
|
133
|
+
.template-agenda-item strong { font-size: 18px; line-height: 1.45; letter-spacing: 0.1em; text-transform: uppercase; font-weight: 700; color: rgba(255,255,255,0.92); }
|
|
134
|
+
.template-metric-layout { height: 100%; min-height: 0; display: grid; gap: 26px; }
|
|
135
|
+
.template-metric-layout--insight-top { grid-template-rows: auto minmax(0, 1fr); }
|
|
136
|
+
.template-metric-layout--insight-bottom { grid-template-rows: minmax(0, 1fr) auto; }
|
|
137
|
+
.template-stat-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; align-items: stretch; }
|
|
138
|
+
.template-stat-value { display: block; min-height: 96px; font-size: 58px; line-height: 1.42; color: var(--accent-primary); font-weight: 800; margin-bottom: 18px; padding-bottom: 14px; overflow: visible; }
|
|
139
|
+
.template-chart-panel { min-height: 520px; display: grid; place-items: center; border: 1px solid var(--line); background: rgba(255,255,255,0.72); }
|
|
140
|
+
.template-chart-placeholder { width: 76%; height: 56%; border-left: 2px solid var(--line-strong); border-bottom: 2px solid var(--line-strong); display: flex; align-items: end; gap: 28px; padding: 0 28px 24px; }
|
|
141
|
+
.template-visual-slot-panel { width: 100%; min-height: 520px; border: 1px dashed var(--line-strong); border-radius: var(--surface-radius); background: linear-gradient(135deg, rgba(49,94,234,0.08), rgba(24,168,216,0.08)); display: grid; place-items: center; padding: 0; }
|
|
142
|
+
.template-visual-slot-label { font-size: 13px; line-height: 1.35; letter-spacing: 0.1em; text-transform: uppercase; color: var(--text-muted); font-weight: 800; }
|
|
143
|
+
.template-text-panel.template-chart-takeaway-panel { gap: 28px; background: linear-gradient(135deg, #5f82c8 0%, var(--accent-primary) 58%, #18a8d8 115%); color: white; box-shadow: 0 22px 56px rgba(49,94,234,0.24); }
|
|
144
|
+
.template-chart-takeaway-panel .template-text-panel-title { color: white; }
|
|
145
|
+
.template-chart-takeaway-list { display: grid; gap: 22px; width: 100%; }
|
|
146
|
+
.template-chart-takeaway-item { display: grid; gap: 7px; padding-top: 18px; border-top: 1px solid rgba(255,255,255,0.24); }
|
|
147
|
+
.template-chart-takeaway-item:first-child { padding-top: 0; border-top: 0; }
|
|
148
|
+
.template-chart-takeaway-item h3 { margin: 0; font-size: 25px; line-height: 1.24; color: white; }
|
|
149
|
+
.template-chart-takeaway-item p { margin: 0; font-size: 20px; line-height: 1.46; color: rgba(255,255,255,0.78); }
|
|
150
|
+
.template-bar { flex: 1; background: linear-gradient(180deg, var(--accent-primary), var(--accent-cyan)); min-height: 80px; }
|
|
151
|
+
.template-table-wrap { display: grid; grid-template-rows: minmax(0, auto) auto; gap: 22px; height: 100%; align-content: start; }
|
|
152
|
+
.template-table { width: 100%; border-collapse: collapse; background: rgba(255,255,255,0.86); box-shadow: 0 18px 44px var(--shadow-soft); }
|
|
153
|
+
.template-table th, .template-table td { padding: 22px 24px; border-bottom: 1px solid var(--line); text-align: left; font-size: 21px; }
|
|
154
|
+
.template-table th { color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.12em; font-size: 15px; }
|
|
155
|
+
.template-text-panel { min-height: 0; display: flex; flex-direction: column; justify-content: flex-start; align-items: flex-start; gap: 20px; background: rgba(255,255,255,0.74); border-radius: var(--surface-radius); padding: 42px; }
|
|
156
|
+
.template-text-panel-title { margin: 0; font-size: 34px; line-height: 1.28; color: var(--text-primary); padding-bottom: 4px; overflow: visible; }
|
|
157
|
+
.template-text-panel-body { margin: 0; font-size: 23px; line-height: 1.52; color: var(--text-secondary); }
|
|
158
|
+
.template-side-panel { align-self: stretch; }
|
|
159
|
+
.template-side-panel-title { margin: 0; }
|
|
160
|
+
.template-side-panel-body { margin: 0; }
|
|
161
|
+
.template-insight-panel { display: grid; gap: 10px; background: rgba(255,255,255,0.88); border: 1px solid var(--line); border-radius: var(--surface-radius); padding: 22px 24px; box-shadow: 0 14px 34px var(--shadow-soft); }
|
|
162
|
+
.template-insight-title { margin: 0; display: flex; align-items: center; gap: 12px; font-size: 24px; line-height: 1.24; color: var(--text-primary); }
|
|
163
|
+
.template-insight-icon { width: 24px; height: 24px; color: var(--accent-primary); stroke-width: 2.2; flex: 0 0 auto; }
|
|
164
|
+
.template-insight-body { margin: 0; font-size: 20px; line-height: 1.42; color: var(--text-secondary); }
|
|
165
|
+
.template-metric-layout .template-insight-panel { border: 0; box-shadow: none; background: rgba(255,255,255,0.74); padding: 24px 28px; }
|
|
166
|
+
.template-metric-layout .template-insight-title { font-size: 18px; line-height: 1.22; letter-spacing: 0.04em; text-transform: uppercase; color: var(--text-muted); }
|
|
167
|
+
.template-metric-layout .template-insight-icon { width: 20px; height: 20px; }
|
|
168
|
+
.template-metric-layout .template-insight-body { font-size: 24px; line-height: 1.42; color: var(--text-primary); }
|
|
169
|
+
.template-timeline { position: relative; height: 100%; display: grid; align-items: center; }
|
|
170
|
+
.template-timeline-layout { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); gap: 34px; height: 100%; align-items: stretch; }
|
|
171
|
+
.template-timeline-layout--left { grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); }
|
|
172
|
+
.template-timeline-layout--left .template-side-panel { grid-column: 1; grid-row: 1; }
|
|
173
|
+
.template-timeline-layout--left .template-timeline { grid-column: 2; grid-row: 1; }
|
|
174
|
+
.template-timeline-layout--right { grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); }
|
|
175
|
+
.template-timeline-layout--right .template-timeline { grid-column: 1; grid-row: 1; }
|
|
176
|
+
.template-timeline-layout--right .template-side-panel { grid-column: 2; grid-row: 1; }
|
|
177
|
+
.template-timeline-layout .template-text-panel { background: linear-gradient(135deg, #7a7fe8 0%, #5f82c8 58%, #315eea 115%); color: white; box-shadow: 0 22px 56px rgba(49,94,234,0.22); }
|
|
178
|
+
.template-timeline-layout .template-text-panel-title { color: white; }
|
|
179
|
+
.template-timeline-layout .template-text-panel-body { color: rgba(255,255,255,0.78); }
|
|
180
|
+
.template-timeline--horizontal { grid-template-columns: repeat(var(--timeline-count), 1fr); column-gap: 18px; align-items: stretch; --timeline-axis-y: 86%; }
|
|
181
|
+
.template-timeline--horizontal::before { content: ""; position: absolute; left: 4%; right: 4%; top: var(--timeline-axis-y); border-top: 2px solid var(--line-strong); transform: translateY(-1px); }
|
|
182
|
+
.template-timeline-item { position: relative; min-height: 400px; display: grid; justify-items: center; align-items: center; }
|
|
183
|
+
.template-timeline--horizontal .template-timeline-item { grid-template-rows: minmax(0, 1fr) 42px 86px; align-items: stretch; }
|
|
184
|
+
.template-timeline-dot { z-index: 2; width: 22px; height: 22px; border-radius: 999px; background: var(--accent-primary); box-shadow: 0 0 0 8px rgba(49,94,234,0.12); }
|
|
185
|
+
.template-timeline-copy { z-index: 2; width: 86%; padding: 18px 4px; background: transparent; border: 0; box-shadow: none; }
|
|
186
|
+
.template-timeline--horizontal .template-timeline-copy.template-card { width: 94%; height: calc(100% - 55px); min-height: 254px; align-self: end; justify-self: center; display: flex; flex-direction: column; justify-content: flex-start; padding: 28px 24px 24px; margin-bottom: 22px; }
|
|
187
|
+
.template-timeline--horizontal .template-timeline-item--highlight .template-timeline-copy.template-card { height: calc(100% - 22px); min-height: 254px; }
|
|
188
|
+
.template-timeline--horizontal .template-insight-icon { width: 28px; height: 28px; margin: 0 auto 28px; color: var(--accent-primary); stroke-width: 2; flex: 0 0 auto; }
|
|
189
|
+
.template-timeline--horizontal .template-timeline-item--highlight .template-insight-icon { color: #f37021; }
|
|
190
|
+
.template-timeline--horizontal .template-timeline-item--highlight .template-timeline-copy h3 { color: #f37021; }
|
|
191
|
+
.template-timeline--horizontal .template-timeline-dot { grid-row: 2; align-self: center; justify-self: center; }
|
|
192
|
+
.template-timeline--horizontal .template-timeline-date { grid-row: 3; align-self: start; justify-self: center; margin: 8px 0 0; font-size: 38px; line-height: 1; font-weight: 300; letter-spacing: 0.03em; color: var(--text-muted); }
|
|
193
|
+
.template-timeline-date { margin: 0 0 8px; font-size: 15px; text-transform: uppercase; letter-spacing: 0.14em; color: var(--accent-primary); font-weight: 800; }
|
|
194
|
+
.template-timeline-copy h3 { margin: 0 0 8px; font-size: 27px; line-height: 1.28; padding-bottom: 4px; overflow: visible; }
|
|
195
|
+
.template-timeline-copy p:last-child { margin: 0; font-size: 19px; color: var(--text-secondary); }
|
|
196
|
+
.template-timeline--vertical { grid-template-columns: 1fr; align-items: stretch; padding: 18px 0; }
|
|
197
|
+
.template-timeline--vertical::before { content: ""; position: absolute; top: 0; bottom: 0; left: 50%; border-left: 2px solid var(--line-strong); }
|
|
198
|
+
.template-timeline--vertical .template-timeline-item { min-height: 128px; grid-template-columns: 1fr 56px 1fr; justify-items: stretch; }
|
|
199
|
+
.template-timeline--vertical .template-timeline-dot { grid-column: 2; grid-row: 1; justify-self: center; align-self: center; }
|
|
200
|
+
.template-timeline--vertical .template-timeline-copy { grid-row: 1; width: auto; align-self: center; background: transparent; border: 0; box-shadow: none; }
|
|
201
|
+
.template-timeline--vertical .template-timeline-item:nth-child(odd) .template-timeline-copy { grid-column: 1; text-align: right; align-self: center; }
|
|
202
|
+
.template-timeline--vertical .template-timeline-item:nth-child(even) .template-timeline-copy { grid-column: 3; text-align: left; align-self: center; }
|
|
203
|
+
.template-steps { display: grid; grid-template-columns: repeat(4, 1fr); gap: 22px; }
|
|
204
|
+
.template-step-number { font-size: 48px; color: var(--accent-primary); font-weight: 800; margin-bottom: 30px; }
|
|
205
|
+
.template-image-card { width: 100%; margin: 18px 0 0; display: grid; gap: 8px; }
|
|
206
|
+
.template-image-frame { width: 100%; height: 128px; border-radius: var(--surface-radius); overflow: hidden; background: var(--surface-tint, #f1f6fc); border: 1px solid var(--line); }
|
|
207
|
+
.template-image-frame img { display: block; width: 100%; height: 100%; object-fit: cover; }
|
|
208
|
+
.template-image-caption { margin: 0; font-size: 13px; line-height: 1.35; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.08em; }
|
|
209
|
+
.template-visual-placeholder { width: 100%; margin: 18px 0 0; display: grid; gap: 8px; }
|
|
210
|
+
.template-visual-placeholder-frame { width: 100%; height: 148px; border-radius: var(--surface-radius); border: 1px dashed var(--line-strong); background: linear-gradient(135deg, rgba(49,94,234,0.08), rgba(24,168,216,0.08)); display: grid; place-items: center; }
|
|
211
|
+
.template-visual-placeholder-label { font-size: 13px; line-height: 1.35; letter-spacing: 0.1em; text-transform: uppercase; color: var(--text-muted); font-weight: 800; }
|
|
212
|
+
.template-page-number { position: absolute; right: 72px; bottom: 52px; font-size: 15px; color: var(--text-muted); letter-spacing: 0.18em; }
|
|
213
|
+
.template-catalog-panel { flex: 0 0 auto; margin-top: auto; background: rgba(255,255,255,0.9); border: 1px solid var(--line); border-radius: var(--surface-radius); box-shadow: 0 18px 44px var(--shadow-soft); padding: 16px 22px; color: var(--text-primary); }
|
|
214
|
+
.template-hero .template-catalog-panel { background: rgba(247,249,252,0.92); }
|
|
215
|
+
.template-catalog-kicker { margin: 0 0 4px; font-size: 12px; text-transform: uppercase; letter-spacing: 0.16em; color: var(--accent-primary); font-weight: 800; }
|
|
216
|
+
.template-catalog-title { margin: 0 0 10px; font-size: 20px; line-height: 1.28; font-weight: 800; }
|
|
217
|
+
.template-catalog-grid { display: grid; grid-template-columns: 1.15fr 1fr 1fr; gap: 16px; }
|
|
218
|
+
.template-catalog-section { min-width: 0; }
|
|
219
|
+
.template-catalog-section h3 { margin: 0 0 6px; font-size: 13px; text-transform: uppercase; letter-spacing: 0.12em; color: var(--text-muted); }
|
|
220
|
+
.template-catalog-section p { margin: 0; font-size: 15px; line-height: 1.36; color: var(--text-secondary); }
|
|
221
|
+
.template-catalog-list { margin: 0; padding-left: 16px; display: grid; gap: 2px; }
|
|
222
|
+
.template-catalog-list li { font-size: 14px; line-height: 1.3; color: var(--text-secondary); }
|
|
223
|
+
.template-frame--catalog .template-title { font-size: 52px; line-height: 1.18; }
|
|
224
|
+
.template-slide[data-template="agenda"] .template-frame--catalog .template-title { font-size: 54px; line-height: 1.04; }
|
|
225
|
+
.template-frame--catalog .template-card { padding: 22px; }
|
|
226
|
+
.template-frame--catalog .template-card h2,
|
|
227
|
+
.template-frame--catalog .template-card h3 { font-size: 24px; line-height: 1.22; margin-bottom: 8px; }
|
|
228
|
+
.template-frame--catalog .template-card p { font-size: 18px; line-height: 1.32; }
|
|
229
|
+
.template-frame--catalog .template-key-message-panel { gap: 16px; }
|
|
230
|
+
.template-frame--catalog .template-key-message-kicker { font-size: 23px; line-height: 1.2; }
|
|
231
|
+
.template-frame--catalog .template-key-message-panel p { font-size: 19px; line-height: 1.42; }
|
|
232
|
+
.template-frame--catalog .template-claim-text-panel { gap: 12px; }
|
|
233
|
+
.template-frame--catalog .template-claim-text-title { font-size: 24px; line-height: 1.24; }
|
|
234
|
+
.template-frame--catalog .template-claim-text-body { font-size: 18px; line-height: 1.36; }
|
|
235
|
+
.template-frame--catalog .template-evidence-grid { gap: 18px; }
|
|
236
|
+
.template-frame--catalog .template-list { gap: 12px; }
|
|
237
|
+
.template-frame--catalog .template-list li { font-size: 20px; line-height: 1.28; }
|
|
238
|
+
.template-frame--catalog .template-metric-layout { gap: 18px; }
|
|
239
|
+
.template-frame--catalog .template-metric-layout .template-card { padding: 20px; }
|
|
240
|
+
.template-frame--catalog .template-metric-layout .template-stat-value { min-height: 70px; font-size: 48px; line-height: 1.24; margin-bottom: 10px; padding-bottom: 8px; }
|
|
241
|
+
.template-frame--catalog .template-metric-layout .template-insight-panel { padding: 18px 22px; gap: 7px; }
|
|
242
|
+
.template-frame--catalog .template-metric-layout .template-insight-title { font-size: 13px; line-height: 1.22; }
|
|
243
|
+
.template-frame--catalog .template-metric-layout .template-insight-icon { width: 16px; height: 16px; }
|
|
244
|
+
.template-frame--catalog .template-metric-layout .template-insight-body { font-size: 19px; line-height: 1.34; }
|
|
245
|
+
.template-frame--catalog .template-chart-panel { min-height: 360px; }
|
|
246
|
+
.template-frame--catalog .template-visual-slot-panel { min-height: 360px; }
|
|
247
|
+
.template-frame--catalog .template-visual-slot-label { font-size: 11px; }
|
|
248
|
+
.template-frame--catalog .template-chart-takeaway-panel { padding: 24px; gap: 16px; }
|
|
249
|
+
.template-frame--catalog .template-chart-takeaway-list { gap: 13px; }
|
|
250
|
+
.template-frame--catalog .template-chart-takeaway-item { gap: 4px; padding-top: 11px; }
|
|
251
|
+
.template-frame--catalog .template-chart-takeaway-item h3 { font-size: 19px; line-height: 1.2; }
|
|
252
|
+
.template-frame--catalog .template-chart-takeaway-item p { font-size: 15px; line-height: 1.3; }
|
|
253
|
+
.template-frame--catalog .template-table-wrap { gap: 16px; }
|
|
254
|
+
.template-frame--catalog .template-table th,
|
|
255
|
+
.template-frame--catalog .template-table td { padding: 14px 18px; font-size: 17px; line-height: 1.32; }
|
|
256
|
+
.template-frame--catalog .template-table th { font-size: 12px; }
|
|
257
|
+
.template-frame--catalog .template-insight-panel { padding: 16px 18px; gap: 6px; }
|
|
258
|
+
.template-frame--catalog .template-insight-title { font-size: 20px; line-height: 1.2; }
|
|
259
|
+
.template-frame--catalog .template-insight-icon { width: 20px; height: 20px; }
|
|
260
|
+
.template-frame--catalog .template-insight-body { font-size: 16px; line-height: 1.32; }
|
|
261
|
+
.template-frame--catalog .template-timeline--vertical { padding: 6px 0; }
|
|
262
|
+
.template-frame--catalog .template-timeline--vertical .template-timeline-item { min-height: 96px; }
|
|
263
|
+
.template-frame--catalog .template-timeline-layout { grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); gap: 22px; }
|
|
264
|
+
.template-frame--catalog .template-timeline-layout--left { grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); }
|
|
265
|
+
.template-frame--catalog .template-timeline-layout--right { grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); }
|
|
266
|
+
.template-frame--catalog .template-timeline-layout .template-text-panel { padding: 22px; gap: 10px; }
|
|
267
|
+
.template-frame--catalog .template-timeline-layout .template-text-panel-title { font-size: 25px; line-height: 1.3; }
|
|
268
|
+
.template-frame--catalog .template-timeline-layout .template-text-panel-body { font-size: 18px; line-height: 1.4; }
|
|
269
|
+
.template-frame--catalog .template-timeline--horizontal .template-timeline-item { grid-template-rows: minmax(0, 1fr) 32px 58px; min-height: 330px; }
|
|
270
|
+
.template-frame--catalog .template-timeline--horizontal .template-timeline-copy.template-card { height: calc(100% - 51px); min-height: 178px; padding: 20px 18px 18px; margin-bottom: 18px; }
|
|
271
|
+
.template-frame--catalog .template-timeline--horizontal .template-timeline-item--highlight .template-timeline-copy.template-card { height: calc(100% - 18px); min-height: 178px; }
|
|
272
|
+
.template-frame--catalog .template-timeline--horizontal .template-insight-icon { width: 22px; height: 22px; margin-bottom: 18px; }
|
|
273
|
+
.template-frame--catalog .template-timeline--horizontal .template-timeline-date { font-size: 28px; }
|
|
274
|
+
.template-frame--catalog .template-timeline-copy { padding: 8px 4px; }
|
|
275
|
+
.template-frame--catalog .template-timeline-copy h3 { font-size: 21px; line-height: 1.18; margin-bottom: 4px; }
|
|
276
|
+
.template-frame--catalog .template-timeline-date { font-size: 12px; margin-bottom: 4px; }
|
|
277
|
+
.template-frame--catalog .template-timeline-copy p:last-child { font-size: 15px; line-height: 1.24; }
|
|
278
|
+
.template-frame--catalog .template-steps { gap: 16px; }
|
|
279
|
+
.template-frame--catalog .template-step-number { font-size: 40px; margin-bottom: 20px; }
|
|
280
|
+
.template-frame--catalog .template-image-frame { height: 86px; }
|
|
281
|
+
.template-frame--catalog .template-image-caption { font-size: 11px; }
|
|
282
|
+
.template-frame--catalog .template-visual-placeholder-frame { height: 110px; }
|
|
283
|
+
.template-frame--catalog .template-visual-placeholder-label { font-size: 11px; }
|