@cyber-dash-tech/revela 0.18.15 → 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 +48 -45
- package/README.zh-CN.md +48 -45
- 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 +108 -1
- 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 +53 -9
- 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 +22 -5
- 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 +54 -9
- 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 +18 -21
- package/lib/commands/designs-preview.ts +3 -8
- package/lib/deck-html/foundation.ts +8 -8
- package/lib/design/designs.ts +385 -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 +9 -5
- package/lib/qa/artifact.ts +117 -7
- package/lib/qa/checks.ts +1 -1
- package/lib/qa/compliance.ts +5 -1
- package/lib/qa/component-contracts.ts +90 -0
- package/lib/runtime/index.ts +99 -3
- package/package.json +7 -15
- package/plugins/revela/.codex-plugin/plugin.json +4 -4
- package/plugins/revela/hooks/revela_guard.ts +35 -0
- package/plugins/revela/hooks/revela_post_write_notice.ts +39 -9
- package/plugins/revela/mcp/revela-server.ts +103 -7
- package/plugins/revela/skills/revela/SKILL.md +3 -3
- package/plugins/revela/skills/revela-design/SKILL.md +25 -14
- package/plugins/revela/skills/revela-helper/SKILL.md +3 -3
- package/plugins/revela/skills/revela-make-deck/SKILL.md +27 -12
- package/plugins/revela/skills/revela-research/SKILL.md +1 -0
- package/skill/SKILL.md +11 -2
- package/designs/lucent/preview.html +0 -612
- package/designs/monet/preview.html +0 -2293
- package/designs/starter/preview.html +0 -314
- package/designs/summit/preview.html +0 -2284
- package/plugins/revela/skills/revela-review/SKILL.md +0 -46
|
@@ -0,0 +1,417 @@
|
|
|
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; }
|
|
284
|
+
|
|
285
|
+
|
|
286
|
+
/* Lucent Dark overrides. Structure stays owned by page templates; this file only skins DOM classes. */
|
|
287
|
+
:root {
|
|
288
|
+
--bg-frame: #020815;
|
|
289
|
+
--bg-page: #07111f;
|
|
290
|
+
--bg-page-alt: #0d1730;
|
|
291
|
+
--surface: #101b31;
|
|
292
|
+
--surface-tint: #15233c;
|
|
293
|
+
--surface-blue: #17294a;
|
|
294
|
+
--text-primary: #f6f9ff;
|
|
295
|
+
--text-secondary: #c7d3e8;
|
|
296
|
+
--text-muted: #8ea2c3;
|
|
297
|
+
--line: rgba(178, 201, 255, 0.14);
|
|
298
|
+
--line-strong: rgba(178, 201, 255, 0.28);
|
|
299
|
+
--accent-primary: #75a7ff;
|
|
300
|
+
--accent-secondary: #9a8cff;
|
|
301
|
+
--accent-cyan: #35d6f2;
|
|
302
|
+
--accent-coral: #ff7a98;
|
|
303
|
+
--accent-soft: rgba(117, 167, 255, 0.18);
|
|
304
|
+
--shadow-soft: rgba(0, 0, 0, 0.34);
|
|
305
|
+
}
|
|
306
|
+
body { background: var(--bg-frame); color: var(--text-primary); }
|
|
307
|
+
.template-slide .slide-canvas {
|
|
308
|
+
background:
|
|
309
|
+
radial-gradient(circle at 82% 16%, rgba(117, 167, 255, 0.18), transparent 29%),
|
|
310
|
+
radial-gradient(circle at 12% 84%, rgba(53, 214, 242, 0.11), transparent 28%),
|
|
311
|
+
linear-gradient(135deg, var(--bg-page), var(--bg-page-alt));
|
|
312
|
+
color: var(--text-primary);
|
|
313
|
+
}
|
|
314
|
+
.template-card,
|
|
315
|
+
.template-table,
|
|
316
|
+
.template-insight-panel,
|
|
317
|
+
.template-catalog-panel {
|
|
318
|
+
background: rgba(12, 22, 40, 0.82);
|
|
319
|
+
border-color: var(--line);
|
|
320
|
+
box-shadow: 0 22px 58px rgba(0, 0, 0, 0.34);
|
|
321
|
+
}
|
|
322
|
+
.template-card h2,
|
|
323
|
+
.template-card h3,
|
|
324
|
+
.template-title,
|
|
325
|
+
.template-claim-text-title,
|
|
326
|
+
.template-text-panel-title,
|
|
327
|
+
.template-insight-title,
|
|
328
|
+
.template-catalog-title,
|
|
329
|
+
.template-table td,
|
|
330
|
+
.template-table th {
|
|
331
|
+
color: var(--text-primary);
|
|
332
|
+
}
|
|
333
|
+
.template-card p,
|
|
334
|
+
.template-list li,
|
|
335
|
+
.template-key-message-panel p,
|
|
336
|
+
.template-claim-text-body,
|
|
337
|
+
.template-text-panel-body,
|
|
338
|
+
.template-insight-body,
|
|
339
|
+
.template-catalog-section p,
|
|
340
|
+
.template-catalog-list li,
|
|
341
|
+
.template-timeline-copy p:last-child {
|
|
342
|
+
color: var(--text-secondary);
|
|
343
|
+
}
|
|
344
|
+
.template-eyebrow,
|
|
345
|
+
.template-catalog-section h3,
|
|
346
|
+
.template-visual-slot-label,
|
|
347
|
+
.template-visual-placeholder-label,
|
|
348
|
+
.template-page-number,
|
|
349
|
+
.template-image-caption {
|
|
350
|
+
color: var(--text-muted);
|
|
351
|
+
}
|
|
352
|
+
.template-text-panel,
|
|
353
|
+
.template-metric-layout .template-insight-panel {
|
|
354
|
+
background: rgba(13, 25, 47, 0.78);
|
|
355
|
+
border: 1px solid var(--line);
|
|
356
|
+
box-shadow: 0 22px 58px rgba(0, 0, 0, 0.28);
|
|
357
|
+
}
|
|
358
|
+
.template-key-message-panel,
|
|
359
|
+
.template-claim-text-panel {
|
|
360
|
+
background: transparent;
|
|
361
|
+
border: 0;
|
|
362
|
+
box-shadow: none;
|
|
363
|
+
}
|
|
364
|
+
.template-visual-slot-panel,
|
|
365
|
+
.template-visual-placeholder-frame,
|
|
366
|
+
.template-image-frame,
|
|
367
|
+
.template-chart-panel {
|
|
368
|
+
background: linear-gradient(135deg, rgba(117, 167, 255, 0.13), rgba(53, 214, 242, 0.08));
|
|
369
|
+
border-color: var(--line-strong);
|
|
370
|
+
}
|
|
371
|
+
.template-table th,
|
|
372
|
+
.template-table td,
|
|
373
|
+
.template-chart-takeaway-item {
|
|
374
|
+
border-color: var(--line);
|
|
375
|
+
}
|
|
376
|
+
.template-stat-value,
|
|
377
|
+
.template-step-number,
|
|
378
|
+
.template-timeline-date,
|
|
379
|
+
.template-key-message-kicker,
|
|
380
|
+
.template-catalog-kicker {
|
|
381
|
+
color: var(--accent-primary);
|
|
382
|
+
}
|
|
383
|
+
.template-timeline-dot {
|
|
384
|
+
background: var(--accent-primary);
|
|
385
|
+
box-shadow: 0 0 0 8px rgba(117, 167, 255, 0.16);
|
|
386
|
+
}
|
|
387
|
+
.template-timeline--horizontal::before,
|
|
388
|
+
.template-timeline--vertical::before {
|
|
389
|
+
border-color: var(--line-strong);
|
|
390
|
+
}
|
|
391
|
+
.template-text-panel.template-chart-takeaway-panel,
|
|
392
|
+
.template-timeline-layout .template-text-panel {
|
|
393
|
+
background: linear-gradient(135deg, #6f73e8 0%, #4d78d7 52%, #0ba4cf 115%);
|
|
394
|
+
color: white;
|
|
395
|
+
box-shadow: 0 24px 66px rgba(35, 83, 190, 0.32);
|
|
396
|
+
}
|
|
397
|
+
.template-chart-takeaway-panel .template-text-panel-title,
|
|
398
|
+
.template-chart-takeaway-item h3,
|
|
399
|
+
.template-timeline-layout .template-text-panel-title {
|
|
400
|
+
color: white;
|
|
401
|
+
}
|
|
402
|
+
.template-chart-takeaway-item p,
|
|
403
|
+
.template-timeline-layout .template-text-panel-body {
|
|
404
|
+
color: rgba(255, 255, 255, 0.78);
|
|
405
|
+
}
|
|
406
|
+
.template-slide[data-design="lucent-dark"][data-template="cover"] .slide-canvas,
|
|
407
|
+
.template-slide[data-design="lucent-dark"][data-template="agenda"] .slide-canvas,
|
|
408
|
+
.template-slide[data-design="lucent-dark"][data-template="section-divider"] .slide-canvas {
|
|
409
|
+
background:
|
|
410
|
+
linear-gradient(90deg, rgba(2,8,21,0.9), rgba(2,8,21,0.62) 52%, rgba(2,8,21,0.36)),
|
|
411
|
+
url("./assets/cover-background.jpg") center center / cover no-repeat;
|
|
412
|
+
}
|
|
413
|
+
.template-slide[data-design="lucent-dark"][data-template="closing"] .slide-canvas {
|
|
414
|
+
background:
|
|
415
|
+
linear-gradient(90deg, rgba(2,8,21,0.86), rgba(49,94,234,0.42) 58%, rgba(24,168,216,0.24)),
|
|
416
|
+
url("./assets/closing-background.jpg") center center / cover no-repeat;
|
|
417
|
+
}
|
package/designs/monet/DESIGN.md
CHANGED
|
@@ -35,6 +35,27 @@ Inspired by Claude Monet's *Le Bassin aux Nymphéas* — mist, water, and soft l
|
|
|
35
35
|
--shadow-soft: rgba(0, 55, 102, 0.18);
|
|
36
36
|
--font-display: 'EB Garamond', 'Georgia', ui-serif, serif;
|
|
37
37
|
--font-body: 'EB Garamond', 'Georgia', ui-serif, serif;
|
|
38
|
+
--grid-page-inset: 40px;
|
|
39
|
+
--grid-content-width: 1480px;
|
|
40
|
+
--grid-text-col: 480px;
|
|
41
|
+
--grid-image-col: 880px;
|
|
42
|
+
--grid-gutter: 40px;
|
|
43
|
+
--grid-safe-x: 80px;
|
|
44
|
+
--grid-safe-y: 72px;
|
|
45
|
+
--space-1: 8px;
|
|
46
|
+
--space-2: 16px;
|
|
47
|
+
--space-3: 24px;
|
|
48
|
+
--space-4: 32px;
|
|
49
|
+
--space-5: 48px;
|
|
50
|
+
--space-6: 72px;
|
|
51
|
+
--font-size-meta: 13px;
|
|
52
|
+
--font-size-body: 17px;
|
|
53
|
+
--font-size-body-strong: 20px;
|
|
54
|
+
--font-size-h3: 24px;
|
|
55
|
+
--font-size-h2: 36px;
|
|
56
|
+
--font-size-hero: 116px;
|
|
57
|
+
--surface-radius: 0px;
|
|
58
|
+
--surface-shadow: 0 24px 80px var(--shadow-soft);
|
|
38
59
|
}
|
|
39
60
|
```
|
|
40
61
|
|
|
@@ -85,6 +106,14 @@ All sizes are fixed `px` for the 1920x1080 canvas. JS `transform: scale()` handl
|
|
|
85
106
|
- Headings align to the text column, not to the full canvas.
|
|
86
107
|
- Let images carry visual weight; text should remain narrow, calm, and readable.
|
|
87
108
|
|
|
109
|
+
Design contract:
|
|
110
|
+
- Grid: use `--grid-page-inset`, `--grid-content-width`, and editorial split ratios as the source of layout alignment; do not scatter content with unrelated absolute offsets.
|
|
111
|
+
- Safe area: image captions, source notes, page numbers, and brand marks stay inside `--grid-safe-x` / `--grid-safe-y` unless the `hero` component owns the full canvas.
|
|
112
|
+
- Spacing: use the `--space-*` rhythm for editorial gaps, plaques, captions, and component padding. Dense pages may tighten within the scale, but should not invent one-off spacing systems.
|
|
113
|
+
- Type scale: use fixed 1920x1080 type tokens and the Monet serif stack. Do not introduce viewport-relative text sizing or sans-serif fallbacks for deck body copy.
|
|
114
|
+
- Surfaces: panels remain paper-like and flat. Use tonal blocks, whitespace, and `--surface-shadow`; avoid default container outlines, glass, neon, blob, or dashboard-card treatments.
|
|
115
|
+
- Chart tokens: charts use Monet accents, quiet gridlines, transparent backgrounds, explicit axis text colors, and stable `echart-panel` containers.
|
|
116
|
+
|
|
88
117
|
### Image Treatment
|
|
89
118
|
|
|
90
119
|
- Use impressionist-inspired photography: water surfaces, gardens, soft natural light, reflections, and botanical subjects.
|
|
@@ -884,7 +913,7 @@ Card/group primitive for one idea, case, evidence item, metric, objection, risk,
|
|
|
884
913
|
```
|
|
885
914
|
|
|
886
915
|
```css
|
|
887
|
-
.box { height: 100%; min-height: 0; padding: 28px;
|
|
916
|
+
.box { height: 100%; min-height: 0; padding: 28px; background: rgba(255,255,255,0.46); display: flex; flex-direction: column; gap: 18px; overflow: hidden; }
|
|
888
917
|
.box--quiet { background: transparent; }
|
|
889
918
|
.box--mist { background: rgba(240,244,247,0.72); }
|
|
890
919
|
.box--dark { background: #0d1a24; --text-primary:#f0f4f7; --text-secondary:rgba(240,244,247,0.72); --text-muted:rgba(240,244,247,0.55); --line:rgba(240,244,247,0.16); }
|
|
@@ -2630,6 +2659,7 @@ A horizontal milestone timeline with a central axis line. Nodes sit on the axis;
|
|
|
2630
2659
|
|
|
2631
2660
|
Rules:
|
|
2632
2661
|
- Position nodes with `left: X%` inline style. For N nodes, space them at `(100/(N+1)) * k %` or manually distribute to reflect time proportions.
|
|
2662
|
+
- Treat `left: X%` as the milestone centreline. The label, tip dot, stem, and axis dot must remain centered on that same x-position; do not left-align the label block away from the marker.
|
|
2633
2663
|
- Each node requires `--tjh-item-color` set inline (use any summit accent colour).
|
|
2634
2664
|
- **`--up` DOM order**: label → tip-dot → stem → axis-dot (label at top, axis-dot at bottom touching axis).
|
|
2635
2665
|
- **`--down` DOM order**: axis-dot → stem → tip-dot → label (axis-dot at top touching axis, label at bottom).
|
|
@@ -2718,19 +2748,20 @@ Can be placed inside any layout slot that provides a defined height (`narrative`
|
|
|
2718
2748
|
position: absolute;
|
|
2719
2749
|
display: flex;
|
|
2720
2750
|
align-items: center;
|
|
2751
|
+
min-width: 260px;
|
|
2721
2752
|
height: 80px; /* vertical size of the clickable/hover zone */
|
|
2722
2753
|
transform: translateY(-50%); /* center the row on the top: Y% point */
|
|
2723
2754
|
}
|
|
2724
2755
|
|
|
2725
2756
|
/* LEFT: row-reverse flips DOM order so axis-dot appears on the right (on the axis) */
|
|
2726
2757
|
.tjv-item--left {
|
|
2727
|
-
right: 50
|
|
2758
|
+
right: calc(50% - var(--tjv-node) / 2);
|
|
2728
2759
|
flex-direction: row-reverse;
|
|
2729
2760
|
}
|
|
2730
2761
|
|
|
2731
2762
|
/* RIGHT: standard row; axis-dot appears on the left (on the axis) */
|
|
2732
2763
|
.tjv-item--right {
|
|
2733
|
-
left: 50
|
|
2764
|
+
left: calc(50% - var(--tjv-node) / 2);
|
|
2734
2765
|
flex-direction: row;
|
|
2735
2766
|
}
|
|
2736
2767
|
|
|
@@ -2746,13 +2777,9 @@ Can be placed inside any layout slot that provides a defined height (`narrative`
|
|
|
2746
2777
|
}
|
|
2747
2778
|
|
|
2748
2779
|
/* LEFT: axis-dot is visually rightmost (row-reverse); push right to straddle axis */
|
|
2749
|
-
.tjv-item--left .tjv-axis-dot
|
|
2750
|
-
margin-right: calc(-1 * var(--tjv-node) / 2);
|
|
2751
|
-
}
|
|
2752
|
-
|
|
2753
|
-
/* RIGHT: axis-dot is visually leftmost; push left to straddle axis */
|
|
2780
|
+
.tjv-item--left .tjv-axis-dot,
|
|
2754
2781
|
.tjv-item--right .tjv-axis-dot {
|
|
2755
|
-
margin
|
|
2782
|
+
margin: 0;
|
|
2756
2783
|
}
|
|
2757
2784
|
|
|
2758
2785
|
/* Tip dot — small square at the stem end near the label */
|
|
@@ -2831,6 +2858,9 @@ Can be placed inside any layout slot that provides a defined height (`narrative`
|
|
|
2831
2858
|
Rules:
|
|
2832
2859
|
- **DOM order is identical for left and right nodes**: `axis-dot → stem → tip-dot → label`. The visual direction is controlled by CSS (`row-reverse` for left, `row` for right) — never by changing the DOM order.
|
|
2833
2860
|
- Position each node with `top: Y%` inline style. For N nodes, distribute evenly: `(100 / (N + 1)) * k %` or manually to reflect actual time proportions.
|
|
2861
|
+
- Treat `top: Y%` as the milestone row centre. The axis dot, stem, tip dot, and label row must stay vertically centered on that same y-position.
|
|
2862
|
+
- Anchor left/right rows at `calc(50% - var(--tjv-node) / 2)` rather than using negative margins on `.tjv-axis-dot`; this keeps the marker centered on the axis without creating export/QA overflow.
|
|
2863
|
+
- Give `.tjv-item` an explicit `min-width` large enough to include label + tip + stem + axis-dot, rather than relying on intrinsic content width.
|
|
2834
2864
|
- Every node must set `--tjv-item-color` inline (use any Monet accent: `--accent-earth`, `--accent-gold`, `--accent-olive`, `--accent-sage`).
|
|
2835
2865
|
- Alternate `--left` and `--right` across nodes for visual rhythm. Do not place consecutive same-side nodes unless intentional.
|
|
2836
2866
|
- The parent container must have a defined height. Use `height: 100%` when inside a layout slot, or set an explicit `px` height when used standalone.
|
|
@@ -2848,6 +2878,20 @@ Rules:
|
|
|
2848
2878
|
|
|
2849
2879
|
<!-- @design:components:end -->
|
|
2850
2880
|
|
|
2881
|
+
<!-- @design:page-templates:start -->
|
|
2882
|
+
|
|
2883
|
+
### Page Template Mapping
|
|
2884
|
+
|
|
2885
|
+
Monet skins Revela built-in page templates with soft editorial rhythm, painterly restraint, and borderless content containers. The template renderer owns required fields, DOM skeletons, and template QA; Monet supplies palette, type, spatial rhythm, and asset mood.
|
|
2886
|
+
|
|
2887
|
+
- `cover`, `section-divider`, `closing`: use expressive title-led structural pages.
|
|
2888
|
+
- `agenda`, `executive-summary`, `problem-context`, `key-message-evidence`, `claim-supporting-visual`: use soft narrative regions with no heavy outer box.
|
|
2889
|
+
- `metric-highlight`, `chart-takeaways`, `table-comparison`: use calm data surfaces and readable interpretation zones.
|
|
2890
|
+
- `timeline-roadmap`: dots remain milestone anchors inside each timeline item; do not position detached decorative markers.
|
|
2891
|
+
- `process-steps`, `recommendation-decision`, `risks-tradeoffs`: use quiet action and tradeoff panels.
|
|
2892
|
+
|
|
2893
|
+
<!-- @design:page-templates:end -->
|
|
2894
|
+
|
|
2851
2895
|
<!-- @design:chart-rules:start -->
|
|
2852
2896
|
|
|
2853
2897
|
### Data Visualization (ECharts)
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|