@velumo/theme-show-engine 0.1.0-beta.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/FONTS.md +21 -0
- package/OFL.txt +85 -0
- package/dist/fonts.generated.d.ts +3 -0
- package/dist/fonts.generated.d.ts.map +1 -0
- package/dist/fonts.generated.js +59 -0
- package/dist/fonts.generated.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +547 -0
- package/dist/index.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +21 -0
- package/scripts/embed-fonts.mjs +81 -0
- package/src/fonts.generated.ts +63 -0
- package/src/index.ts +551 -0
- package/tsconfig.json +10 -0
package/src/index.ts
ADDED
|
@@ -0,0 +1,551 @@
|
|
|
1
|
+
import type { Theme } from "@velumo/core";
|
|
2
|
+
import { showEngineFonts } from "./fonts.generated.js";
|
|
3
|
+
|
|
4
|
+
export const showEngineThemeId = "show-engine" as const;
|
|
5
|
+
export type ShowEngineThemeId = typeof showEngineThemeId;
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Theme-root-scoped CSS for what tokens cannot express, injected by the DOM
|
|
9
|
+
* renderer at mount (deduped per theme id). The palette flows through
|
|
10
|
+
* `--velumo-*` variables (emitted by the renderer and consumed by the
|
|
11
|
+
* default-theme CSS rules); this string adds what those cannot: it pins the
|
|
12
|
+
* deck-root background to the theme background, lays an additive ambient glow
|
|
13
|
+
* over each slide/spatial viewport, and raises layout/world content above it.
|
|
14
|
+
* Every rule is scoped to `[data-velumo-theme="show-engine"]` so it stays
|
|
15
|
+
* inert if multiple themes coexist on one page. The fonts the typography tokens
|
|
16
|
+
* name (Bebas Neue / Inter / JetBrains Mono) ship as self-contained woff2
|
|
17
|
+
* data-URIs in `theme.fonts` (see `fonts.generated.ts`); the DOM renderer
|
|
18
|
+
* compiles them to `@font-face` and injects them on every surface.
|
|
19
|
+
*/
|
|
20
|
+
export const showEngineThemeCss = `
|
|
21
|
+
[data-velumo-renderer="dom"][data-velumo-theme="show-engine"],
|
|
22
|
+
[data-velumo-renderer="dom"] [data-velumo-theme="show-engine"] {
|
|
23
|
+
background: var(--velumo-color-background, #020203);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
[data-velumo-renderer="dom"][data-velumo-theme="show-engine"] [data-velumo-slide-id]::before,
|
|
27
|
+
[data-velumo-renderer="dom"] [data-velumo-theme="show-engine"] [data-velumo-slide-id]::before,
|
|
28
|
+
[data-velumo-renderer="dom"][data-velumo-theme="show-engine"] [data-velumo-spatial="viewport"]::before,
|
|
29
|
+
[data-velumo-renderer="dom"] [data-velumo-theme="show-engine"] [data-velumo-spatial="viewport"]::before {
|
|
30
|
+
content: "";
|
|
31
|
+
position: absolute;
|
|
32
|
+
inset: 0;
|
|
33
|
+
z-index: 0;
|
|
34
|
+
pointer-events: none;
|
|
35
|
+
opacity: var(--velumo-ambient-strength, 0.55);
|
|
36
|
+
background:
|
|
37
|
+
radial-gradient(72% 56% at 50% 34%, rgba(255, 209, 102, 0.10), transparent 62%),
|
|
38
|
+
radial-gradient(90% 72% at 80% 90%, rgba(46, 232, 255, 0.07), transparent 60%);
|
|
39
|
+
mix-blend-mode: screen;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
[data-velumo-renderer="dom"][data-velumo-theme="show-engine"] [data-velumo-layout-root],
|
|
43
|
+
[data-velumo-renderer="dom"] [data-velumo-theme="show-engine"] [data-velumo-layout-root],
|
|
44
|
+
[data-velumo-renderer="dom"][data-velumo-theme="show-engine"] [data-velumo-spatial="world"],
|
|
45
|
+
[data-velumo-renderer="dom"] [data-velumo-theme="show-engine"] [data-velumo-spatial="world"] {
|
|
46
|
+
position: relative;
|
|
47
|
+
z-index: 1;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/* Interactive demo controls (Ward 044+). Scoped to the show-engine theme.
|
|
51
|
+
Determinism slide: two columns — content left, interactive panel right. */
|
|
52
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="determinism"] [data-velumo-layout-root] {
|
|
53
|
+
max-width: 52cqw;
|
|
54
|
+
}
|
|
55
|
+
[data-velumo-theme="show-engine"] [data-velumo-demo="stepper"] {
|
|
56
|
+
position: absolute;
|
|
57
|
+
right: clamp(2.5rem, 6cqw, 5rem);
|
|
58
|
+
bottom: clamp(7.5rem, 19cqh, 12.5rem);
|
|
59
|
+
z-index: 3;
|
|
60
|
+
width: min(40cqw, 27rem);
|
|
61
|
+
display: flex;
|
|
62
|
+
flex-direction: column;
|
|
63
|
+
gap: 0.9rem;
|
|
64
|
+
padding: 1.5rem 1.6rem 1.7rem;
|
|
65
|
+
border-radius: 1.1rem;
|
|
66
|
+
background: rgba(4, 8, 10, 0.66);
|
|
67
|
+
border: 1px solid rgba(85, 255, 153, 0.3);
|
|
68
|
+
box-shadow: 0 26px 80px rgba(0, 0, 0, 0.55), inset 0 1px 0 rgba(255, 255, 255, 0.04);
|
|
69
|
+
font-family: "JetBrains Mono", ui-monospace, monospace;
|
|
70
|
+
}
|
|
71
|
+
[data-velumo-theme="show-engine"] [data-velumo-demo="stepper"] .demo-stepper-head {
|
|
72
|
+
display: flex;
|
|
73
|
+
align-items: baseline;
|
|
74
|
+
gap: 0.6rem;
|
|
75
|
+
}
|
|
76
|
+
[data-velumo-theme="show-engine"] [data-velumo-demo="stepper"] .demo-stepper-frame-label {
|
|
77
|
+
color: var(--velumo-color-green, #55ff99);
|
|
78
|
+
font-size: clamp(1.4rem, 3cqw, 2.1rem);
|
|
79
|
+
}
|
|
80
|
+
[data-velumo-theme="show-engine"] [data-velumo-demo="stepper"] .demo-stepper-frame {
|
|
81
|
+
color: var(--velumo-color-green, #55ff99);
|
|
82
|
+
font-size: clamp(1.9rem, 4.4cqw, 3rem);
|
|
83
|
+
font-weight: 700;
|
|
84
|
+
font-variant-numeric: tabular-nums;
|
|
85
|
+
}
|
|
86
|
+
[data-velumo-theme="show-engine"] [data-velumo-demo="stepper"] .demo-stepper-ms {
|
|
87
|
+
margin-left: auto;
|
|
88
|
+
color: var(--velumo-color-muted, rgba(255, 247, 232, 0.55));
|
|
89
|
+
font-size: clamp(0.85rem, 1.8cqw, 1.1rem);
|
|
90
|
+
font-variant-numeric: tabular-nums;
|
|
91
|
+
}
|
|
92
|
+
[data-velumo-theme="show-engine"] [data-velumo-demo="stepper"] .demo-stepper-ms::after {
|
|
93
|
+
content: " ms";
|
|
94
|
+
}
|
|
95
|
+
[data-velumo-theme="show-engine"] [data-velumo-demo="stepper"] .demo-stepper-track {
|
|
96
|
+
height: 0.4rem;
|
|
97
|
+
border-radius: 999px;
|
|
98
|
+
background: rgba(255, 255, 255, 0.08);
|
|
99
|
+
overflow: hidden;
|
|
100
|
+
}
|
|
101
|
+
[data-velumo-theme="show-engine"] [data-velumo-demo="stepper"] .demo-stepper-bar {
|
|
102
|
+
height: 100%;
|
|
103
|
+
width: 0%;
|
|
104
|
+
background: linear-gradient(90deg, #2ee8ff, #55ff99);
|
|
105
|
+
transition: width 0.12s linear;
|
|
106
|
+
}
|
|
107
|
+
[data-velumo-theme="show-engine"] [data-velumo-demo="stepper"] .demo-stepper-eased {
|
|
108
|
+
color: var(--velumo-color-muted, rgba(255, 247, 232, 0.55));
|
|
109
|
+
font-size: clamp(0.85rem, 1.8cqw, 1.05rem);
|
|
110
|
+
font-variant-numeric: tabular-nums;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/* Positioning is scoped to the determinism slide so other slides' control
|
|
114
|
+
buttons (Wards 045/046) are not forced absolute. The button APPEARANCE below
|
|
115
|
+
stays theme-global for a consistent look. */
|
|
116
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="determinism"] [data-velumo-layer-type="control.button"] {
|
|
117
|
+
position: absolute;
|
|
118
|
+
bottom: clamp(2.75rem, 7cqh, 4.5rem);
|
|
119
|
+
z-index: 3;
|
|
120
|
+
}
|
|
121
|
+
[data-velumo-theme="show-engine"] [data-velumo-layer-id="demo-advance"] {
|
|
122
|
+
right: clamp(9.5rem, 20cqw, 15rem);
|
|
123
|
+
}
|
|
124
|
+
[data-velumo-theme="show-engine"] [data-velumo-layer-id="demo-reset"] {
|
|
125
|
+
right: clamp(2.5rem, 6cqw, 5rem);
|
|
126
|
+
}
|
|
127
|
+
[data-velumo-theme="show-engine"] [data-velumo-control="button"] {
|
|
128
|
+
cursor: pointer;
|
|
129
|
+
font-family: "Bebas Neue", Impact, sans-serif;
|
|
130
|
+
letter-spacing: 0.06em;
|
|
131
|
+
text-transform: uppercase;
|
|
132
|
+
font-size: clamp(1rem, 2.2cqw, 1.35rem);
|
|
133
|
+
padding: 0.55rem 1.3rem;
|
|
134
|
+
border-radius: 0.6rem;
|
|
135
|
+
border: 1px solid rgba(85, 255, 153, 0.4);
|
|
136
|
+
background: rgba(85, 255, 153, 0.14);
|
|
137
|
+
color: #eafff2;
|
|
138
|
+
}
|
|
139
|
+
[data-velumo-theme="show-engine"] [data-velumo-control-variant="ghost"] {
|
|
140
|
+
background: transparent;
|
|
141
|
+
border-color: rgba(255, 255, 255, 0.22);
|
|
142
|
+
color: var(--velumo-color-muted, rgba(255, 247, 232, 0.55));
|
|
143
|
+
}
|
|
144
|
+
[data-velumo-theme="show-engine"] [data-velumo-control="button"]:hover {
|
|
145
|
+
filter: brightness(1.2);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/* Spatial slide (Ward 045): a framed camera world + a row of camera.seek buttons. */
|
|
149
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="spatial"] {
|
|
150
|
+
/* world-inset-x reuses the SAME token (with the SAME fallback) the renderer's
|
|
151
|
+
own slide padding reads (default-theme.ts), so world's left/right edges are
|
|
152
|
+
always flush with the slide's standard content margin, never a coincidence. */
|
|
153
|
+
--spatial-world-inset-x: var(--velumo-margin-frame-x, clamp(4rem, 8cqw, 8.5rem));
|
|
154
|
+
--spatial-world-inset-top: clamp(13rem, 44cqh, 26rem);
|
|
155
|
+
--spatial-world-inset-bottom: clamp(6rem, 14cqh, 9.5rem);
|
|
156
|
+
/* Single source for layout-root's own max-width, so the canvas overlay's
|
|
157
|
+
right formula below can never drift from it if this is retuned. */
|
|
158
|
+
--spatial-layout-max-width: 60cqw;
|
|
159
|
+
}
|
|
160
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="spatial"] [data-velumo-layout-root] {
|
|
161
|
+
max-width: var(--spatial-layout-max-width);
|
|
162
|
+
}
|
|
163
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="spatial"] [data-velumo-demo="camera-world"] {
|
|
164
|
+
position: absolute;
|
|
165
|
+
left: var(--spatial-world-inset-x);
|
|
166
|
+
right: var(--spatial-world-inset-x);
|
|
167
|
+
top: var(--spatial-world-inset-top);
|
|
168
|
+
bottom: var(--spatial-world-inset-bottom);
|
|
169
|
+
z-index: 2;
|
|
170
|
+
border: 1px solid rgba(255, 255, 255, 0.12);
|
|
171
|
+
border-radius: 1rem;
|
|
172
|
+
overflow: hidden;
|
|
173
|
+
background: rgba(4, 8, 12, 0.4);
|
|
174
|
+
}
|
|
175
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="spatial"] [data-velumo-layout="canvas"] {
|
|
176
|
+
/* The renderer sets position:relative inline on every canvas element
|
|
177
|
+
(packages/renderer-dom layout-renderer.ts); only !important can override
|
|
178
|
+
an inline style, so it is scoped to this single property.
|
|
179
|
+
Unlike [data-velumo-demo="camera-world"] (a LAYER, positioned relative
|
|
180
|
+
to the slide root), this canvas is part of layout, so its containing
|
|
181
|
+
block is [data-velumo-layout-root] (position:relative; see the ambient
|
|
182
|
+
::before stacking rule above) -- a DIFFERENT box, inset from the slide by
|
|
183
|
+
the renderer's own --velumo-margin-frame(-x) padding and narrowed to
|
|
184
|
+
max-width:60cqw. left:0 lines up exactly with camera-world's left because
|
|
185
|
+
--spatial-world-inset-x reuses that same padding token. top/bottom/right
|
|
186
|
+
are re-derived (world's inset MINUS layout-root's own offset on that side)
|
|
187
|
+
so the canvas box still lands exactly on camera-world's box despite the
|
|
188
|
+
different containing block -- not copy-pasted clamp values that would
|
|
189
|
+
silently drift out of alignment. */
|
|
190
|
+
/* The renderer also sets width:100%/height:100% inline, which over-
|
|
191
|
+
constrains an absolutely positioned box with both left+right (or
|
|
192
|
+
top+bottom) set -- the browser then honors the explicit width/height and
|
|
193
|
+
silently ignores right/bottom. auto releases that so left+right and
|
|
194
|
+
top+bottom actually determine the box, matching camera-world's size. */
|
|
195
|
+
position: absolute !important;
|
|
196
|
+
width: auto !important;
|
|
197
|
+
height: auto !important;
|
|
198
|
+
left: 0;
|
|
199
|
+
right: calc(
|
|
200
|
+
2 * var(--spatial-world-inset-x) - (100cqw - var(--spatial-layout-max-width))
|
|
201
|
+
);
|
|
202
|
+
top: calc(
|
|
203
|
+
var(--spatial-world-inset-top) -
|
|
204
|
+
var(--velumo-margin-frame, clamp(2.5rem, 4.5cqh, 4rem))
|
|
205
|
+
);
|
|
206
|
+
bottom: calc(
|
|
207
|
+
var(--spatial-world-inset-bottom) -
|
|
208
|
+
var(--velumo-margin-frame, clamp(2.5rem, 4.5cqh, 4rem))
|
|
209
|
+
);
|
|
210
|
+
pointer-events: none;
|
|
211
|
+
}
|
|
212
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="spatial"] [data-velumo-demo="camera-view"] {
|
|
213
|
+
position: absolute;
|
|
214
|
+
inset: 0;
|
|
215
|
+
transform-origin: 0 0;
|
|
216
|
+
transition: transform 0.6s cubic-bezier(0.4, 0, 0.2, 1);
|
|
217
|
+
}
|
|
218
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="spatial"] .demo-camera-grid {
|
|
219
|
+
position: absolute;
|
|
220
|
+
inset: 0;
|
|
221
|
+
background-image: linear-gradient(rgba(255, 255, 255, 0.05) 1px, transparent 1px),
|
|
222
|
+
linear-gradient(90deg, rgba(255, 255, 255, 0.05) 1px, transparent 1px);
|
|
223
|
+
background-size: 8% 12%;
|
|
224
|
+
}
|
|
225
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="spatial"] .demo-camera-card {
|
|
226
|
+
position: absolute;
|
|
227
|
+
transform: translate(-50%, -50%);
|
|
228
|
+
width: 24%;
|
|
229
|
+
padding: 0.7rem 0.9rem;
|
|
230
|
+
border-radius: 0.7rem;
|
|
231
|
+
border: 1px solid rgba(255, 255, 255, 0.18);
|
|
232
|
+
background: rgba(4, 8, 12, 0.78);
|
|
233
|
+
box-shadow: 0 14px 40px rgba(0, 0, 0, 0.5);
|
|
234
|
+
}
|
|
235
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="spatial"] .demo-camera-card[data-tone="accent"] {
|
|
236
|
+
border-color: rgba(255, 209, 102, 0.55);
|
|
237
|
+
}
|
|
238
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="spatial"] .demo-camera-card[data-tone="cyan"] {
|
|
239
|
+
border-color: rgba(46, 232, 255, 0.55);
|
|
240
|
+
}
|
|
241
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="spatial"] .demo-camera-card[data-tone="magenta"] {
|
|
242
|
+
border-color: rgba(255, 61, 127, 0.55);
|
|
243
|
+
}
|
|
244
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="spatial"] .demo-camera-card-title {
|
|
245
|
+
font-family: "Bebas Neue", Impact, sans-serif;
|
|
246
|
+
font-size: clamp(1.1rem, 2.4cqw, 1.7rem);
|
|
247
|
+
letter-spacing: 0.04em;
|
|
248
|
+
}
|
|
249
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="spatial"] .demo-camera-card[data-tone="accent"] .demo-camera-card-title {
|
|
250
|
+
color: var(--velumo-color-accent, #ffd166);
|
|
251
|
+
}
|
|
252
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="spatial"] .demo-camera-card[data-tone="cyan"] .demo-camera-card-title {
|
|
253
|
+
color: var(--velumo-color-cyan, #2ee8ff);
|
|
254
|
+
}
|
|
255
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="spatial"] .demo-camera-card[data-tone="magenta"] .demo-camera-card-title {
|
|
256
|
+
color: var(--velumo-color-magenta, #ff3d7f);
|
|
257
|
+
}
|
|
258
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="spatial"] .demo-camera-card-sub {
|
|
259
|
+
color: var(--velumo-color-muted, rgba(255, 247, 232, 0.55));
|
|
260
|
+
font-size: clamp(0.7rem, 1.4cqw, 0.95rem);
|
|
261
|
+
}
|
|
262
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="spatial"] [data-velumo-layer-type="control.button"] {
|
|
263
|
+
position: absolute;
|
|
264
|
+
bottom: clamp(2rem, 5cqh, 3.5rem);
|
|
265
|
+
z-index: 3;
|
|
266
|
+
}
|
|
267
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="spatial"] [data-velumo-control="button"] {
|
|
268
|
+
min-width: 5.5rem;
|
|
269
|
+
text-align: center;
|
|
270
|
+
}
|
|
271
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="spatial"] [data-velumo-layer-id="camera-wide"] {
|
|
272
|
+
left: clamp(4rem, 8cqw, 8.5rem);
|
|
273
|
+
}
|
|
274
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="spatial"] [data-velumo-layer-id="camera-intro"] {
|
|
275
|
+
left: calc(clamp(4rem, 8cqw, 8.5rem) + 7rem);
|
|
276
|
+
}
|
|
277
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="spatial"] [data-velumo-layer-id="camera-data"] {
|
|
278
|
+
left: calc(clamp(4rem, 8cqw, 8.5rem) + 14rem);
|
|
279
|
+
}
|
|
280
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="spatial"] [data-velumo-layer-id="camera-finale"] {
|
|
281
|
+
left: calc(clamp(4rem, 8cqw, 8.5rem) + 21rem);
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
/* Fidelity slide (Ward 046): code card left, mode panel right, SHOW treatment
|
|
285
|
+
keyed on data-velumo-demo-mode. All rules slide-scoped. */
|
|
286
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="fidelity"] [data-velumo-layout-root] {
|
|
287
|
+
max-width: 50cqw;
|
|
288
|
+
}
|
|
289
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="fidelity"] [data-velumo-demo="fidelity"] {
|
|
290
|
+
position: absolute;
|
|
291
|
+
right: clamp(2.5rem, 6cqw, 5rem);
|
|
292
|
+
top: 50%;
|
|
293
|
+
transform: translateY(-44%);
|
|
294
|
+
z-index: 3;
|
|
295
|
+
width: min(42cqw, 30rem);
|
|
296
|
+
display: flex;
|
|
297
|
+
flex-direction: column;
|
|
298
|
+
gap: 1rem;
|
|
299
|
+
padding: 1.6rem 1.8rem 1.9rem;
|
|
300
|
+
border-radius: 1.1rem;
|
|
301
|
+
overflow: hidden;
|
|
302
|
+
border: 1px solid rgba(255, 255, 255, 0.12);
|
|
303
|
+
background: rgba(4, 8, 12, 0.5);
|
|
304
|
+
transition: border-color 0.35s, box-shadow 0.35s, background 0.35s;
|
|
305
|
+
}
|
|
306
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="fidelity"] .demo-fidelity-moderow {
|
|
307
|
+
display: flex;
|
|
308
|
+
gap: 0.4rem;
|
|
309
|
+
font-family: "JetBrains Mono", ui-monospace, monospace;
|
|
310
|
+
font-size: clamp(0.72rem, 1.5cqw, 0.92rem);
|
|
311
|
+
text-transform: uppercase;
|
|
312
|
+
letter-spacing: 0.14em;
|
|
313
|
+
color: var(--velumo-color-muted, rgba(255, 247, 232, 0.55));
|
|
314
|
+
}
|
|
315
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="fidelity"] .demo-fidelity-mode {
|
|
316
|
+
color: var(--velumo-color-cyan, #2ee8ff);
|
|
317
|
+
}
|
|
318
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="fidelity"] .demo-fidelity-headline {
|
|
319
|
+
font-family: "Bebas Neue", Impact, sans-serif;
|
|
320
|
+
font-size: clamp(1.8rem, 4.6cqw, 3.1rem);
|
|
321
|
+
letter-spacing: 0.02em;
|
|
322
|
+
color: var(--velumo-color-foreground, #fff7e8);
|
|
323
|
+
transition: color 0.35s, text-shadow 0.35s;
|
|
324
|
+
}
|
|
325
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="fidelity"] .demo-fidelity-pills {
|
|
326
|
+
display: flex;
|
|
327
|
+
gap: 0.5rem;
|
|
328
|
+
flex-wrap: wrap;
|
|
329
|
+
}
|
|
330
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="fidelity"] .demo-fidelity-pill {
|
|
331
|
+
font-family: "JetBrains Mono", ui-monospace, monospace;
|
|
332
|
+
font-size: clamp(0.68rem, 1.4cqw, 0.88rem);
|
|
333
|
+
padding: 0.3rem 0.7rem;
|
|
334
|
+
border-radius: 999px;
|
|
335
|
+
border: 1px solid rgba(255, 255, 255, 0.14);
|
|
336
|
+
color: var(--velumo-color-muted, rgba(255, 247, 232, 0.55));
|
|
337
|
+
opacity: 0.5;
|
|
338
|
+
transition: opacity 0.35s, border-color 0.35s, color 0.35s;
|
|
339
|
+
}
|
|
340
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="fidelity"] .demo-fidelity-beams {
|
|
341
|
+
position: absolute;
|
|
342
|
+
inset: -40% -10% auto -10%;
|
|
343
|
+
height: 80%;
|
|
344
|
+
pointer-events: none;
|
|
345
|
+
opacity: 0;
|
|
346
|
+
background: linear-gradient(115deg, transparent 30%, rgba(255, 209, 102, 0.14) 48%, rgba(46, 232, 255, 0.12) 56%, transparent 74%);
|
|
347
|
+
transition: opacity 0.5s;
|
|
348
|
+
}
|
|
349
|
+
/* SHOW treatment */
|
|
350
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="fidelity"] [data-velumo-demo-mode="SHOW"] {
|
|
351
|
+
border-color: rgba(255, 209, 102, 0.5);
|
|
352
|
+
box-shadow: 0 0 60px rgba(255, 209, 102, 0.18);
|
|
353
|
+
background: rgba(8, 8, 6, 0.6);
|
|
354
|
+
}
|
|
355
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="fidelity"] [data-velumo-demo-mode="SHOW"] .demo-fidelity-mode {
|
|
356
|
+
color: var(--velumo-color-accent, #ffd166);
|
|
357
|
+
}
|
|
358
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="fidelity"] [data-velumo-demo-mode="SHOW"] .demo-fidelity-headline {
|
|
359
|
+
color: var(--velumo-color-accent, #ffd166);
|
|
360
|
+
text-shadow: 0 0 26px rgba(255, 209, 102, 0.6);
|
|
361
|
+
}
|
|
362
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="fidelity"] [data-velumo-demo-mode="SHOW"] .demo-fidelity-pill {
|
|
363
|
+
opacity: 1;
|
|
364
|
+
}
|
|
365
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="fidelity"] [data-velumo-demo-mode="SHOW"] .demo-fidelity-pill[data-tone="magenta"] {
|
|
366
|
+
border-color: rgba(255, 61, 127, 0.6);
|
|
367
|
+
color: #ff9ec0;
|
|
368
|
+
}
|
|
369
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="fidelity"] [data-velumo-demo-mode="SHOW"] .demo-fidelity-pill[data-tone="cyan"] {
|
|
370
|
+
border-color: rgba(46, 232, 255, 0.6);
|
|
371
|
+
color: #9becff;
|
|
372
|
+
}
|
|
373
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="fidelity"] [data-velumo-demo-mode="SHOW"] .demo-fidelity-pill[data-tone="accent"] {
|
|
374
|
+
border-color: rgba(255, 209, 102, 0.6);
|
|
375
|
+
color: #ffe4a3;
|
|
376
|
+
}
|
|
377
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="fidelity"] [data-velumo-demo-mode="SHOW"] .demo-fidelity-beams {
|
|
378
|
+
opacity: 0.55;
|
|
379
|
+
}
|
|
380
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="fidelity"] [data-velumo-layer-id="fidelity-toggle"] {
|
|
381
|
+
position: absolute;
|
|
382
|
+
right: clamp(2.5rem, 6cqw, 5rem);
|
|
383
|
+
bottom: clamp(2rem, 5cqh, 3.5rem);
|
|
384
|
+
z-index: 4;
|
|
385
|
+
}
|
|
386
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="one-source"] [data-velumo-layout-root] {
|
|
387
|
+
justify-content: flex-start;
|
|
388
|
+
gap: clamp(0.5rem, 1.5cqh, 1rem);
|
|
389
|
+
}
|
|
390
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="one-source"] [data-velumo-element="heading"][data-velumo-heading-size="display"] {
|
|
391
|
+
font-size: clamp(2.5rem, 7cqw, 5.25rem);
|
|
392
|
+
line-height: 0.92;
|
|
393
|
+
margin: 0;
|
|
394
|
+
}
|
|
395
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="one-source"] [data-velumo-frame-tone="accent"] {
|
|
396
|
+
flex: none;
|
|
397
|
+
align-self: center;
|
|
398
|
+
padding: 0.9rem 1.4rem;
|
|
399
|
+
}
|
|
400
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="one-source"] [data-velumo-layout="stack"] > [data-velumo-layout="grid"] {
|
|
401
|
+
flex: 1;
|
|
402
|
+
min-height: 0;
|
|
403
|
+
align-items: stretch;
|
|
404
|
+
}
|
|
405
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="one-source"] [data-velumo-layout="frame"][data-velumo-frame-tone] {
|
|
406
|
+
gap: 0.75rem;
|
|
407
|
+
justify-content: flex-start;
|
|
408
|
+
}
|
|
409
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="one-source"] [data-velumo-layout="frame"][data-velumo-frame-tone] > [data-velumo-layout="frame"] {
|
|
410
|
+
flex: 1;
|
|
411
|
+
min-height: 0;
|
|
412
|
+
justify-content: center;
|
|
413
|
+
gap: 0.7rem;
|
|
414
|
+
}
|
|
415
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="one-source"] [data-velumo-canvas-item] {
|
|
416
|
+
transform: translateY(-50%);
|
|
417
|
+
}
|
|
418
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
419
|
+
@keyframes velumo-one-source-playhead {
|
|
420
|
+
from { left: 6%; }
|
|
421
|
+
to { left: 76%; }
|
|
422
|
+
}
|
|
423
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="one-source"] [data-velumo-frame-tone="magenta"] [data-velumo-canvas-item]:has([data-velumo-rule-tone="cyan"]) {
|
|
424
|
+
animation: velumo-one-source-playhead 3.2s cubic-bezier(0.4, 0, 0.2, 1) infinite alternate;
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="one-source"] [data-velumo-frame-tone="green"] [data-velumo-layout="grid"] {
|
|
428
|
+
flex: 1;
|
|
429
|
+
min-height: 0;
|
|
430
|
+
gap: 0.5rem;
|
|
431
|
+
}
|
|
432
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="authoring"] [data-velumo-layout-root] {
|
|
433
|
+
justify-content: flex-start;
|
|
434
|
+
gap: clamp(1rem, 2.5cqh, 1.75rem);
|
|
435
|
+
}
|
|
436
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="authoring"] [data-velumo-element="heading"][data-velumo-heading-size="display"] {
|
|
437
|
+
font-size: clamp(2rem, 6cqw, 4.75rem);
|
|
438
|
+
line-height: 0.95;
|
|
439
|
+
margin: 0;
|
|
440
|
+
}
|
|
441
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="authoring"] pre[data-velumo-element="code"] {
|
|
442
|
+
font-size: 0.82rem;
|
|
443
|
+
}
|
|
444
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="authoring"] [data-velumo-layout="grid"] {
|
|
445
|
+
align-items: start;
|
|
446
|
+
gap: 1.5rem;
|
|
447
|
+
}
|
|
448
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="authoring"] [data-velumo-element="badge"] {
|
|
449
|
+
width: 100%;
|
|
450
|
+
border-radius: 0.7rem;
|
|
451
|
+
justify-content: center;
|
|
452
|
+
padding: 0.75em 1em;
|
|
453
|
+
}
|
|
454
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="closer"] [data-velumo-element="heading"][data-velumo-heading-size="hero"] {
|
|
455
|
+
max-width: none;
|
|
456
|
+
margin: 0;
|
|
457
|
+
}
|
|
458
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="closer"] [data-velumo-element="heading"][data-velumo-heading-size="hero"][data-velumo-text-tone="muted"] {
|
|
459
|
+
font-size: clamp(2.25rem, 7.8cqw, 6.5rem);
|
|
460
|
+
line-height: 0.9;
|
|
461
|
+
}
|
|
462
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="closer"] [data-velumo-element="heading"][data-velumo-heading-size="hero"][data-velumo-text-tone="accent"] {
|
|
463
|
+
font-size: clamp(2.75rem, 9.6cqw, 8rem);
|
|
464
|
+
line-height: 0.9;
|
|
465
|
+
}
|
|
466
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="closer"] [data-velumo-element="badge"] {
|
|
467
|
+
font-size: clamp(0.95rem, 1.6cqw, 1.4rem);
|
|
468
|
+
padding: 0.7em 1.2em;
|
|
469
|
+
}
|
|
470
|
+
[data-velumo-theme="show-engine"] [data-velumo-slide-id="closer"] [data-velumo-element="text"] {
|
|
471
|
+
font-size: clamp(0.85rem, 1.2cqw, 1.1rem);
|
|
472
|
+
letter-spacing: 0.22em;
|
|
473
|
+
}
|
|
474
|
+
`.trim();
|
|
475
|
+
|
|
476
|
+
export const showEngineTheme: Theme = {
|
|
477
|
+
id: showEngineThemeId,
|
|
478
|
+
css: showEngineThemeCss,
|
|
479
|
+
fonts: showEngineFonts,
|
|
480
|
+
tokens: {
|
|
481
|
+
colors: {
|
|
482
|
+
background: "#020203",
|
|
483
|
+
foreground: "#fff7e8",
|
|
484
|
+
muted: "rgba(255, 247, 232, 0.55)",
|
|
485
|
+
accent: "#ffd166",
|
|
486
|
+
danger: "#ff3048",
|
|
487
|
+
magenta: "#ff3d7f",
|
|
488
|
+
cyan: "#2ee8ff",
|
|
489
|
+
purple: "#8d5cff",
|
|
490
|
+
green: "#55ff99",
|
|
491
|
+
},
|
|
492
|
+
typography: {
|
|
493
|
+
heading: {
|
|
494
|
+
fontFamily: '"Bebas Neue", Impact, sans-serif',
|
|
495
|
+
fontSize: "clamp(2.75rem, 6.5cqw, 6rem)",
|
|
496
|
+
lineHeight: 0.95,
|
|
497
|
+
fontWeight: 700,
|
|
498
|
+
letterSpacing: "0.02em",
|
|
499
|
+
},
|
|
500
|
+
body: {
|
|
501
|
+
fontFamily: "Inter, ui-sans-serif, system-ui, sans-serif",
|
|
502
|
+
fontSize: "clamp(1.05rem, 1.7cqw, 1.35rem)",
|
|
503
|
+
lineHeight: 1.55,
|
|
504
|
+
fontWeight: 450,
|
|
505
|
+
},
|
|
506
|
+
caption: {
|
|
507
|
+
fontFamily: '"JetBrains Mono", ui-monospace, SFMono-Regular, monospace',
|
|
508
|
+
fontSize: "0.9rem",
|
|
509
|
+
lineHeight: 1.45,
|
|
510
|
+
fontWeight: 500,
|
|
511
|
+
letterSpacing: "0.18em",
|
|
512
|
+
},
|
|
513
|
+
},
|
|
514
|
+
spacing: {
|
|
515
|
+
xs: "0.375rem",
|
|
516
|
+
sm: "0.75rem",
|
|
517
|
+
md: "1.25rem",
|
|
518
|
+
lg: "2rem",
|
|
519
|
+
xl: "3rem",
|
|
520
|
+
},
|
|
521
|
+
radii: {
|
|
522
|
+
card: "1rem",
|
|
523
|
+
pill: "999px",
|
|
524
|
+
},
|
|
525
|
+
shadows: {
|
|
526
|
+
card: "0 22px 80px rgba(0, 0, 0, 0.5)",
|
|
527
|
+
},
|
|
528
|
+
motion: {
|
|
529
|
+
quick: { duration: "160ms", easing: "ease-out" },
|
|
530
|
+
standard: {
|
|
531
|
+
duration: "1100ms",
|
|
532
|
+
easing: "cubic-bezier(0.15, 0.8, 0.25, 1)",
|
|
533
|
+
},
|
|
534
|
+
},
|
|
535
|
+
surfaces: {
|
|
536
|
+
default: "#0a0810",
|
|
537
|
+
muted: "#11101a",
|
|
538
|
+
card: "rgba(9, 8, 13, 0.62)",
|
|
539
|
+
accent: "rgba(255, 209, 102, 0.12)",
|
|
540
|
+
inverse: "#fff7e8",
|
|
541
|
+
danger: "rgba(255, 48, 72, 0.14)",
|
|
542
|
+
},
|
|
543
|
+
text: {
|
|
544
|
+
default: "#fff7e8",
|
|
545
|
+
muted: "rgba(255, 247, 232, 0.55)",
|
|
546
|
+
accent: "#ffd166",
|
|
547
|
+
inverse: "#020203",
|
|
548
|
+
danger: "#ff6b6b",
|
|
549
|
+
},
|
|
550
|
+
},
|
|
551
|
+
};
|