@nebutra/theme 0.1.0 → 0.2.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/skins.css ADDED
@@ -0,0 +1,1844 @@
1
+ /**
2
+ * @nebutra/theme — skins.css (design-language catalog)
3
+ * AUTO-GENERATED by scripts/sync-skins.mjs — DO NOT EDIT.
4
+ *
5
+ * Product chrome SSOT: @nebutra/tokens/styles.css + recipe.css
6
+ * This file: scoped Brand Package skins under html[data-brand] only.
7
+ * Switch: document.documentElement.dataset.brand = "vanta" | "linear" | ...
8
+ * Factory: delete dataset.brand (or clearLanguage() / applyLanguage("factory")).
9
+ *
10
+ * Languages: gsap, linear, notion, raycast, stripe, vanta, vercel
11
+ */
12
+
13
+ /**
14
+ * Brand carrier skin: GSAP (gsap) v1.0.0
15
+ * darkDefault=true dualMode=false button=gradient-stroke
16
+ * fonts=2 zones=yes mode=global
17
+ * Contract: roles.action → --primary; roles.brand → --brand-mark (never default CTA)
18
+ */
19
+
20
+ /* Brand font faces */
21
+ @font-face {
22
+ font-family: "Mori";
23
+ src: url("/brand-assets/mori-regular.woff2") format("woff2");
24
+ font-weight: 400;
25
+ font-display: swap;
26
+ }
27
+
28
+ @font-face {
29
+ font-family: "Mori";
30
+ src: url("/brand-assets/mori-semibold.woff2") format("woff2");
31
+ font-weight: 600;
32
+ font-display: swap;
33
+ }
34
+
35
+ html[data-brand="gsap"] {
36
+ /* ── Color roles (carrier) ── */
37
+ --role-canvas: 150 7% 6%;
38
+ --role-canvas-fg: 54 100% 94%;
39
+ --role-surface: 0 0% 10%;
40
+ --role-surface-fg: 54 100% 94%;
41
+ --role-action: 137 92% 47%;
42
+ --role-action-fg: 150 7% 6%;
43
+ --role-quiet: 70 5% 25%;
44
+ --role-quiet-fg: 54 100% 94%;
45
+ --role-muted: 0 0% 10%;
46
+ --role-muted-fg: 60 6% 46%;
47
+ --role-border: 70 5% 25%;
48
+ --role-input: 70 5% 25%;
49
+ --role-ring: 137 92% 47%;
50
+
51
+ /* ── shadcn bridge (primary = action CTA) ── */
52
+ --background: 150 7% 6%;
53
+ --foreground: 54 100% 94%;
54
+ --card: 0 0% 10%;
55
+ --card-foreground: 54 100% 94%;
56
+ --popover: 0 0% 10%;
57
+ --popover-foreground: 54 100% 94%;
58
+ --primary: 137 92% 47%;
59
+ --primary-foreground: 150 7% 6%;
60
+ --secondary: 70 5% 25%;
61
+ --secondary-foreground: 54 100% 94%;
62
+ --muted: 0 0% 10%;
63
+ --muted-foreground: 60 6% 46%;
64
+ --accent: 70 5% 25%;
65
+ --accent-foreground: 54 100% 94%;
66
+ --destructive: 309 100% 47%;
67
+ --destructive-foreground: 54 100% 94%;
68
+ --border: 70 5% 25%;
69
+ --input: 70 5% 25%;
70
+ --ring: 137 92% 47%;
71
+ --success: 137 92% 47%;
72
+ --success-foreground: 150 7% 6%;
73
+ --info: 191 100% 44%;
74
+ --info-foreground: 150 7% 6%;
75
+ --sidebar: 0 0% 10%;
76
+ --sidebar-foreground: 54 100% 94%;
77
+ --sidebar-primary: 137 92% 47%;
78
+ --sidebar-primary-foreground: 150 7% 6%;
79
+ --sidebar-accent: 70 5% 25%;
80
+ --sidebar-accent-foreground: 54 100% 94%;
81
+ --sidebar-border: 70 5% 25%;
82
+ --sidebar-ring: 137 92% 47%;
83
+ --brand-gradient: hsl(var(--primary));
84
+ --brand-gradient-reverse: hsl(var(--primary));
85
+ --brand-gradient-vertical: hsl(var(--primary));
86
+ --brand-gradient-radial: hsl(var(--primary));
87
+
88
+ /* Recipe (action language + free elev/radii) */
89
+ /* Shape slots */
90
+ --btn-default-radius: 100px;
91
+ --radius-button: 100px;
92
+ --radius-buttons: 100px;
93
+ --radius-md: 100px;
94
+ --radius-card: 8px;
95
+ --radius-lg: 8px;
96
+ --radius-badge: 9999px;
97
+ --badge-default-radius: 9999px;
98
+ --radius-inputs: 100px;
99
+ --input-radius: 100px;
100
+ --radius-pill: 9999px;
101
+
102
+ /* Free elevation (carrier-provided CSS shadows) */
103
+ --elevation-card: 0 0 #0000;
104
+ --elevation-control: 0 0 #0000;
105
+ --elevation-raised: 0 0 #0000;
106
+ --shadow-xs: 0 0 #0000;
107
+ --shadow-sm: 0 0 #0000;
108
+ --shadow-md: 0 0 #0000;
109
+ --shadow-lg: 0 0 #0000;
110
+ --btn-default-shadow: 0 0 #0000;
111
+ --btn-default-bg: transparent;
112
+ --btn-default-fg: hsl(var(--foreground));
113
+ --btn-default-border-width: 1.5px;
114
+ --btn-default-border: transparent;
115
+ --btn-default-stroke-gradient: linear-gradient(114.41deg, #0ae448 20.74%, #abff84 65.5%);
116
+ --btn-default-hover-bg: hsl(var(--primary) / 0.08);
117
+ --badge-default-bg: transparent;
118
+ --badge-default-fg: hsl(var(--foreground));
119
+ --badge-default-border: #fffce1;
120
+ --badge-default-hover-bg: hsl(var(--foreground) / 0.06);
121
+ --btn-default-padding-y: 0.5rem;
122
+ --btn-default-padding-x: 0.875rem;
123
+ --control-height-tiny: 1.25rem;
124
+ --control-height-sm: 1.75rem;
125
+ --control-height-md: 2rem;
126
+ --control-height-lg: 2.5rem;
127
+ --control-font-size-md: 0.8125rem;
128
+
129
+ /* Typography */
130
+ --font-sans: "Mori", "Inter Tight", "DM Sans", ui-sans-serif, system-ui, sans-serif;
131
+ --font-heading: "Mori", "Inter Tight", ui-sans-serif, system-ui, sans-serif;
132
+ --font-display: "Mori", "Inter Tight", ui-sans-serif, system-ui, sans-serif;
133
+ --font-weight-heading: 600;
134
+
135
+ /* Zone type scales */
136
+ --zone-product-caption-size: 14px;
137
+ --zone-product-caption-leading: 1.4;
138
+ --zone-product-caption-tracking: -0.14px;
139
+ --zone-product-caption-weight: 400;
140
+ --zone-product-body-sm-size: 16px;
141
+ --zone-product-body-sm-leading: 1.15;
142
+ --zone-product-body-sm-weight: 400;
143
+ --zone-product-body-size: 19px;
144
+ --zone-product-body-leading: 1.15;
145
+ --zone-product-body-weight: 400;
146
+ --zone-product-body-lg-size: 23px;
147
+ --zone-product-body-lg-leading: 1.38;
148
+ --zone-product-body-lg-tracking: -0.23px;
149
+ --zone-product-body-lg-weight: 400;
150
+ --zone-product-subheading-size: 34px;
151
+ --zone-product-subheading-leading: 1.2;
152
+ --zone-product-subheading-tracking: -0.34px;
153
+ --zone-product-subheading-weight: 400;
154
+ --zone-product-heading-size: 44px;
155
+ --zone-product-heading-leading: 1.2;
156
+ --zone-product-heading-tracking: -0.44px;
157
+ --zone-product-heading-weight: 600;
158
+ --zone-marketing-body-size: 19px;
159
+ --zone-marketing-body-leading: 1.15;
160
+ --zone-marketing-body-weight: 400;
161
+ --zone-marketing-heading-size: 66px;
162
+ --zone-marketing-heading-leading: 1.2;
163
+ --zone-marketing-heading-tracking: -0.66px;
164
+ --zone-marketing-heading-weight: 600;
165
+ --zone-marketing-heading-lg-size: 101px;
166
+ --zone-marketing-heading-lg-leading: 1;
167
+ --zone-marketing-heading-lg-tracking: -1.11px;
168
+ --zone-marketing-heading-lg-weight: 600;
169
+ --zone-marketing-display-size: 224px;
170
+ --zone-marketing-display-leading: 0.9;
171
+ --zone-marketing-display-tracking: -4.48px;
172
+ --zone-marketing-display-weight: 600;
173
+
174
+ /* Taxonomy / decorative (not product CTA) */
175
+ --brand-category-gsap: #0ae448;
176
+ --brand-category-scroll: #fec5fb;
177
+ --brand-category-svg: #ff8709;
178
+ --brand-category-text: #9d95ff;
179
+ --brand-category-ui: #00bae2;
180
+ --brand-category-other: #abff84;
181
+ }
182
+
183
+ /* Zone: product — product never inherits marketing display */
184
+ [data-zone="product"],
185
+ .zone-product {
186
+ font-size: var(--zone-product-body-size, 19px);
187
+ line-height: var(--zone-product-body-leading, 1.15);
188
+ font-weight: var(--zone-product-body-weight, 400);
189
+ --text-caption: var(--zone-product-caption-size, inherit);
190
+ --leading-caption: var(--zone-product-caption-leading, inherit);
191
+ --tracking-caption: var(--zone-product-caption-tracking, inherit);
192
+ --text-body-sm: var(--zone-product-body-sm-size, inherit);
193
+ --leading-body-sm: var(--zone-product-body-sm-leading, inherit);
194
+ --tracking-body-sm: var(--zone-product-body-sm-tracking, inherit);
195
+ --text-body: var(--zone-product-body-size, inherit);
196
+ --leading-body: var(--zone-product-body-leading, inherit);
197
+ --tracking-body: var(--zone-product-body-tracking, inherit);
198
+ --text-body-lg: var(--zone-product-body-lg-size, inherit);
199
+ --leading-body-lg: var(--zone-product-body-lg-leading, inherit);
200
+ --tracking-body-lg: var(--zone-product-body-lg-tracking, inherit);
201
+ --text-subheading: var(--zone-product-subheading-size, inherit);
202
+ --leading-subheading: var(--zone-product-subheading-leading, inherit);
203
+ --tracking-subheading: var(--zone-product-subheading-tracking, inherit);
204
+ --text-heading-sm: var(--zone-product-heading-sm-size, inherit);
205
+ --leading-heading-sm: var(--zone-product-heading-sm-leading, inherit);
206
+ --tracking-heading-sm: var(--zone-product-heading-sm-tracking, inherit);
207
+ --text-heading: var(--zone-product-heading-size, inherit);
208
+ --leading-heading: var(--zone-product-heading-leading, inherit);
209
+ --tracking-heading: var(--zone-product-heading-tracking, inherit);
210
+ --text-heading-lg: var(--zone-product-heading-lg-size, inherit);
211
+ --leading-heading-lg: var(--zone-product-heading-lg-leading, inherit);
212
+ --tracking-heading-lg: var(--zone-product-heading-lg-tracking, inherit);
213
+ --text-display: var(--zone-product-display-size, var(--zone-product-heading-size, inherit));
214
+ --leading-display: var(--zone-product-display-leading, inherit);
215
+ --tracking-display: var(--zone-product-display-tracking, inherit);
216
+ }
217
+
218
+ /* Zone: marketing — product never inherits marketing display */
219
+ [data-zone="marketing"],
220
+ .zone-marketing {
221
+ font-size: var(--zone-marketing-body-size, 19px);
222
+ line-height: var(--zone-marketing-body-leading, 1.15);
223
+ font-weight: var(--zone-marketing-body-weight, 400);
224
+ --text-caption: var(--zone-marketing-caption-size, inherit);
225
+ --leading-caption: var(--zone-marketing-caption-leading, inherit);
226
+ --tracking-caption: var(--zone-marketing-caption-tracking, inherit);
227
+ --text-body-sm: var(--zone-marketing-body-sm-size, inherit);
228
+ --leading-body-sm: var(--zone-marketing-body-sm-leading, inherit);
229
+ --tracking-body-sm: var(--zone-marketing-body-sm-tracking, inherit);
230
+ --text-body: var(--zone-marketing-body-size, inherit);
231
+ --leading-body: var(--zone-marketing-body-leading, inherit);
232
+ --tracking-body: var(--zone-marketing-body-tracking, inherit);
233
+ --text-body-lg: var(--zone-marketing-body-lg-size, inherit);
234
+ --leading-body-lg: var(--zone-marketing-body-lg-leading, inherit);
235
+ --tracking-body-lg: var(--zone-marketing-body-lg-tracking, inherit);
236
+ --text-subheading: var(--zone-marketing-subheading-size, inherit);
237
+ --leading-subheading: var(--zone-marketing-subheading-leading, inherit);
238
+ --tracking-subheading: var(--zone-marketing-subheading-tracking, inherit);
239
+ --text-heading-sm: var(--zone-marketing-heading-sm-size, inherit);
240
+ --leading-heading-sm: var(--zone-marketing-heading-sm-leading, inherit);
241
+ --tracking-heading-sm: var(--zone-marketing-heading-sm-tracking, inherit);
242
+ --text-heading: var(--zone-marketing-heading-size, inherit);
243
+ --leading-heading: var(--zone-marketing-heading-leading, inherit);
244
+ --tracking-heading: var(--zone-marketing-heading-tracking, inherit);
245
+ --text-heading-lg: var(--zone-marketing-heading-lg-size, inherit);
246
+ --leading-heading-lg: var(--zone-marketing-heading-lg-leading, inherit);
247
+ --tracking-heading-lg: var(--zone-marketing-heading-lg-tracking, inherit);
248
+ --text-display: var(--zone-marketing-display-size, inherit);
249
+ --leading-display: var(--zone-marketing-display-leading, inherit);
250
+ --tracking-display: var(--zone-marketing-display-tracking, inherit);
251
+ }
252
+
253
+ /* Product chrome must not use decorative gradients as action fills */
254
+ [data-zone="product"] .btn-brand-default,
255
+ .zone-product .btn-brand-default {
256
+ /* intentional no-op: documents contract; action uses --primary only */
257
+ }
258
+
259
+ /**
260
+ * Brand carrier skin: Linear (linear) v1.0.0
261
+ * darkDefault=true dualMode=true button=solid
262
+ * fonts=1 zones=yes mode=global
263
+ * Contract: roles.action → --primary; roles.brand → --brand-mark (never default CTA)
264
+ */
265
+
266
+ /* Brand font faces */
267
+ @font-face {
268
+ font-family: "Inter Variable";
269
+ src: url("https://cdn.jsdelivr.net/fontsource/fonts/inter:vf@latest/latin-wght-normal.woff2")
270
+ format("woff2");
271
+ font-weight: 100 900;
272
+ font-display: swap;
273
+ }
274
+
275
+ html[data-brand="linear"] {
276
+ /* ── Color roles (carrier) ── */
277
+ --role-canvas: 0 0% 100%;
278
+ --role-canvas-fg: 210 11% 4%;
279
+ --role-surface: 0 0% 98%;
280
+ --role-surface-fg: 210 11% 4%;
281
+ --role-action: 64 89% 54%;
282
+ --role-action-fg: 210 11% 4%;
283
+ --role-quiet: 220 14% 96%;
284
+ --role-quiet-fg: 210 11% 4%;
285
+ --role-muted: 220 14% 96%;
286
+ --role-muted-fg: 218 5% 41%;
287
+ --role-border: 220 13% 91%;
288
+ --role-input: 0 0% 100%;
289
+ --role-ring: 64 89% 54%;
290
+
291
+ /* ── shadcn bridge (primary = action CTA) ── */
292
+ --background: 0 0% 100%;
293
+ --foreground: 210 11% 4%;
294
+ --card: 0 0% 98%;
295
+ --card-foreground: 210 11% 4%;
296
+ --popover: 0 0% 98%;
297
+ --popover-foreground: 210 11% 4%;
298
+ --primary: 64 89% 54%;
299
+ --primary-foreground: 210 11% 4%;
300
+ --secondary: 220 14% 96%;
301
+ --secondary-foreground: 210 11% 4%;
302
+ --muted: 220 14% 96%;
303
+ --muted-foreground: 218 5% 41%;
304
+ --accent: 220 14% 96%;
305
+ --accent-foreground: 210 11% 4%;
306
+ --destructive: 0 79% 63%;
307
+ --destructive-foreground: 0 0% 100%;
308
+ --border: 220 13% 91%;
309
+ --input: 0 0% 100%;
310
+ --ring: 64 89% 54%;
311
+ --success: 134 62% 40%;
312
+ --success-foreground: 0 0% 100%;
313
+ --info: 186 98% 40%;
314
+ --info-foreground: 0 0% 100%;
315
+ --sidebar: 0 0% 98%;
316
+ --sidebar-foreground: 210 11% 4%;
317
+ --sidebar-primary: 64 89% 54%;
318
+ --sidebar-primary-foreground: 210 11% 4%;
319
+ --sidebar-accent: 220 14% 96%;
320
+ --sidebar-accent-foreground: 210 11% 4%;
321
+ --sidebar-border: 220 13% 91%;
322
+ --sidebar-ring: 64 89% 54%;
323
+ --brand-gradient: hsl(var(--primary));
324
+ --brand-gradient-reverse: hsl(var(--primary));
325
+ --brand-gradient-vertical: hsl(var(--primary));
326
+ --brand-gradient-radial: hsl(var(--primary));
327
+
328
+ /* Recipe (action language + free elev/radii) */
329
+ /* Shape slots */
330
+ --btn-default-radius: 6px;
331
+ --radius-button: 6px;
332
+ --radius-buttons: 6px;
333
+ --radius-md: 6px;
334
+ --radius-card: 12px;
335
+ --radius-lg: 12px;
336
+ --radius-badge: 9999px;
337
+ --badge-default-radius: 9999px;
338
+ --radius-inputs: 6px;
339
+ --input-radius: 6px;
340
+ --radius-pill: 9999px;
341
+
342
+ /* Free elevation (carrier-provided CSS shadows) */
343
+ --elevation-card: var(--shadow-sm, 0 1px 2px 0 rgb(0 0 0 / 0.05));
344
+ --elevation-control: var(--shadow-xs, 0 1px 2px 0 rgb(0 0 0 / 0.04));
345
+ --elevation-raised: var(--shadow-md, 0 4px 6px -1px rgb(0 0 0 / 0.1));
346
+ --shadow-xs: var(--shadow-xs, 0 1px 2px 0 rgb(0 0 0 / 0.04));
347
+ --shadow-sm: var(--shadow-sm, 0 1px 2px 0 rgb(0 0 0 / 0.05));
348
+ --shadow-md: var(--shadow-md, 0 4px 6px -1px rgb(0 0 0 / 0.1));
349
+ --shadow-lg: var(--shadow-md, 0 4px 6px -1px rgb(0 0 0 / 0.1));
350
+ --btn-default-shadow: 0 0 #0000;
351
+ --btn-default-bg: hsl(var(--primary));
352
+ --btn-default-fg: hsl(var(--primary-foreground));
353
+ --btn-default-border-width: 0px;
354
+ --btn-default-border: transparent;
355
+ --btn-default-stroke-gradient: transparent;
356
+ --btn-default-hover-bg: color-mix(in srgb, hsl(var(--primary)) 90%, transparent);
357
+ --badge-default-bg: hsl(var(--primary));
358
+ --badge-default-fg: hsl(var(--primary-foreground));
359
+ --badge-default-border: transparent;
360
+ --badge-default-hover-bg: color-mix(in srgb, hsl(var(--primary)) 80%, transparent);
361
+ --btn-default-padding-y: 0.5rem;
362
+ --btn-default-padding-x: 0.875rem;
363
+ --control-height-tiny: 1.25rem;
364
+ --control-height-sm: 1.75rem;
365
+ --control-height-md: 2rem;
366
+ --control-height-lg: 2.5rem;
367
+ --control-font-size-md: 0.8125rem;
368
+
369
+ /* Typography */
370
+ --font-sans: "Inter Variable", "Inter", ui-sans-serif, system-ui, sans-serif;
371
+ --font-heading: "Inter Variable", "Inter", ui-sans-serif, system-ui, sans-serif;
372
+ --font-display: "Inter Variable", "Inter", ui-sans-serif, system-ui, sans-serif;
373
+ --font-mono: "Berkeley Mono", "JetBrains Mono", ui-monospace, monospace;
374
+ --font-weight-heading: 510;
375
+
376
+ /* Zone type scales */
377
+ --zone-product-caption-size: 13px;
378
+ --zone-product-caption-leading: 1.2;
379
+ --zone-product-caption-weight: 400;
380
+ --zone-product-body-sm-size: 14px;
381
+ --zone-product-body-sm-leading: 1.5;
382
+ --zone-product-body-sm-weight: 400;
383
+ --zone-product-body-size: 14px;
384
+ --zone-product-body-leading: 1.5;
385
+ --zone-product-body-weight: 400;
386
+ --zone-product-body-lg-size: 16px;
387
+ --zone-product-body-lg-leading: 1.5;
388
+ --zone-product-body-lg-weight: 400;
389
+ --zone-product-heading-size: 24px;
390
+ --zone-product-heading-leading: 1.25;
391
+ --zone-product-heading-tracking: -0.012em;
392
+ --zone-product-heading-weight: 510;
393
+ --zone-product-display-size: 32px;
394
+ --zone-product-display-leading: 1.15;
395
+ --zone-product-display-tracking: -0.022em;
396
+ --zone-product-display-weight: 510;
397
+ --zone-marketing-body-size: 15px;
398
+ --zone-marketing-body-leading: 1.6;
399
+ --zone-marketing-body-weight: 400;
400
+ --zone-marketing-heading-size: 48px;
401
+ --zone-marketing-heading-leading: 1;
402
+ --zone-marketing-heading-tracking: -0.022em;
403
+ --zone-marketing-heading-weight: 510;
404
+ --zone-marketing-display-size: 72px;
405
+ --zone-marketing-display-leading: 1;
406
+ --zone-marketing-display-tracking: -0.022em;
407
+ --zone-marketing-display-weight: 510;
408
+ }
409
+
410
+ .dark,
411
+ html.dark[data-brand="linear"] {
412
+ /* ── Color roles (carrier) ── */
413
+ --role-canvas: 210 11% 4%;
414
+ --role-canvas-fg: 0 0% 100%;
415
+ --role-surface: 210 6% 6%;
416
+ --role-surface-fg: 0 0% 100%;
417
+ --role-action: 64 89% 54%;
418
+ --role-action-fg: 210 11% 4%;
419
+ --role-quiet: 223 9% 15%;
420
+ --role-quiet-fg: 218 21% 85%;
421
+ --role-muted: 210 4% 9%;
422
+ --role-muted-fg: 218 5% 41%;
423
+ --role-border: 223 9% 15%;
424
+ --role-input: 223 9% 15%;
425
+ --role-ring: 64 89% 54%;
426
+
427
+ /* ── shadcn bridge (primary = action CTA) ── */
428
+ --background: 210 11% 4%;
429
+ --foreground: 0 0% 100%;
430
+ --card: 210 6% 6%;
431
+ --card-foreground: 0 0% 100%;
432
+ --popover: 210 6% 6%;
433
+ --popover-foreground: 0 0% 100%;
434
+ --primary: 64 89% 54%;
435
+ --primary-foreground: 210 11% 4%;
436
+ --secondary: 223 9% 15%;
437
+ --secondary-foreground: 218 21% 85%;
438
+ --muted: 210 4% 9%;
439
+ --muted-foreground: 218 5% 41%;
440
+ --accent: 223 9% 15%;
441
+ --accent-foreground: 218 21% 85%;
442
+ --destructive: 0 79% 63%;
443
+ --destructive-foreground: 0 0% 100%;
444
+ --border: 223 9% 15%;
445
+ --input: 223 9% 15%;
446
+ --ring: 64 89% 54%;
447
+ --success: 134 62% 40%;
448
+ --success-foreground: 0 0% 100%;
449
+ --info: 186 98% 40%;
450
+ --info-foreground: 0 0% 100%;
451
+ --sidebar: 210 6% 6%;
452
+ --sidebar-foreground: 0 0% 100%;
453
+ --sidebar-primary: 64 89% 54%;
454
+ --sidebar-primary-foreground: 210 11% 4%;
455
+ --sidebar-accent: 223 9% 15%;
456
+ --sidebar-accent-foreground: 218 21% 85%;
457
+ --sidebar-border: 223 9% 15%;
458
+ --sidebar-ring: 64 89% 54%;
459
+ --brand-gradient: hsl(var(--primary));
460
+ --brand-gradient-reverse: hsl(var(--primary));
461
+ --brand-gradient-vertical: hsl(var(--primary));
462
+ --brand-gradient-radial: hsl(var(--primary));
463
+ }
464
+
465
+ /* Zone: product — product never inherits marketing display */
466
+ [data-zone="product"],
467
+ .zone-product {
468
+ font-size: var(--zone-product-body-size, 14px);
469
+ line-height: var(--zone-product-body-leading, 1.5);
470
+ font-weight: var(--zone-product-body-weight, 400);
471
+ --text-caption: var(--zone-product-caption-size, inherit);
472
+ --leading-caption: var(--zone-product-caption-leading, inherit);
473
+ --tracking-caption: var(--zone-product-caption-tracking, inherit);
474
+ --text-body-sm: var(--zone-product-body-sm-size, inherit);
475
+ --leading-body-sm: var(--zone-product-body-sm-leading, inherit);
476
+ --tracking-body-sm: var(--zone-product-body-sm-tracking, inherit);
477
+ --text-body: var(--zone-product-body-size, inherit);
478
+ --leading-body: var(--zone-product-body-leading, inherit);
479
+ --tracking-body: var(--zone-product-body-tracking, inherit);
480
+ --text-body-lg: var(--zone-product-body-lg-size, inherit);
481
+ --leading-body-lg: var(--zone-product-body-lg-leading, inherit);
482
+ --tracking-body-lg: var(--zone-product-body-lg-tracking, inherit);
483
+ --text-subheading: var(--zone-product-subheading-size, inherit);
484
+ --leading-subheading: var(--zone-product-subheading-leading, inherit);
485
+ --tracking-subheading: var(--zone-product-subheading-tracking, inherit);
486
+ --text-heading-sm: var(--zone-product-heading-sm-size, inherit);
487
+ --leading-heading-sm: var(--zone-product-heading-sm-leading, inherit);
488
+ --tracking-heading-sm: var(--zone-product-heading-sm-tracking, inherit);
489
+ --text-heading: var(--zone-product-heading-size, inherit);
490
+ --leading-heading: var(--zone-product-heading-leading, inherit);
491
+ --tracking-heading: var(--zone-product-heading-tracking, inherit);
492
+ --text-heading-lg: var(--zone-product-heading-lg-size, inherit);
493
+ --leading-heading-lg: var(--zone-product-heading-lg-leading, inherit);
494
+ --tracking-heading-lg: var(--zone-product-heading-lg-tracking, inherit);
495
+ --text-display: var(--zone-product-display-size, var(--zone-product-heading-size, inherit));
496
+ --leading-display: var(--zone-product-display-leading, inherit);
497
+ --tracking-display: var(--zone-product-display-tracking, inherit);
498
+ }
499
+
500
+ /* Zone: marketing — product never inherits marketing display */
501
+ [data-zone="marketing"],
502
+ .zone-marketing {
503
+ font-size: var(--zone-marketing-body-size, 15px);
504
+ line-height: var(--zone-marketing-body-leading, 1.6);
505
+ font-weight: var(--zone-marketing-body-weight, 400);
506
+ --text-caption: var(--zone-marketing-caption-size, inherit);
507
+ --leading-caption: var(--zone-marketing-caption-leading, inherit);
508
+ --tracking-caption: var(--zone-marketing-caption-tracking, inherit);
509
+ --text-body-sm: var(--zone-marketing-body-sm-size, inherit);
510
+ --leading-body-sm: var(--zone-marketing-body-sm-leading, inherit);
511
+ --tracking-body-sm: var(--zone-marketing-body-sm-tracking, inherit);
512
+ --text-body: var(--zone-marketing-body-size, inherit);
513
+ --leading-body: var(--zone-marketing-body-leading, inherit);
514
+ --tracking-body: var(--zone-marketing-body-tracking, inherit);
515
+ --text-body-lg: var(--zone-marketing-body-lg-size, inherit);
516
+ --leading-body-lg: var(--zone-marketing-body-lg-leading, inherit);
517
+ --tracking-body-lg: var(--zone-marketing-body-lg-tracking, inherit);
518
+ --text-subheading: var(--zone-marketing-subheading-size, inherit);
519
+ --leading-subheading: var(--zone-marketing-subheading-leading, inherit);
520
+ --tracking-subheading: var(--zone-marketing-subheading-tracking, inherit);
521
+ --text-heading-sm: var(--zone-marketing-heading-sm-size, inherit);
522
+ --leading-heading-sm: var(--zone-marketing-heading-sm-leading, inherit);
523
+ --tracking-heading-sm: var(--zone-marketing-heading-sm-tracking, inherit);
524
+ --text-heading: var(--zone-marketing-heading-size, inherit);
525
+ --leading-heading: var(--zone-marketing-heading-leading, inherit);
526
+ --tracking-heading: var(--zone-marketing-heading-tracking, inherit);
527
+ --text-heading-lg: var(--zone-marketing-heading-lg-size, inherit);
528
+ --leading-heading-lg: var(--zone-marketing-heading-lg-leading, inherit);
529
+ --tracking-heading-lg: var(--zone-marketing-heading-lg-tracking, inherit);
530
+ --text-display: var(--zone-marketing-display-size, inherit);
531
+ --leading-display: var(--zone-marketing-display-leading, inherit);
532
+ --tracking-display: var(--zone-marketing-display-tracking, inherit);
533
+ }
534
+
535
+ /* Product chrome must not use decorative gradients as action fills */
536
+ [data-zone="product"] .btn-brand-default,
537
+ .zone-product .btn-brand-default {
538
+ /* intentional no-op: documents contract; action uses --primary only */
539
+ }
540
+
541
+ /**
542
+ * Brand carrier skin: Notion (notion) v1.0.0
543
+ * darkDefault=false dualMode=false button=solid
544
+ * fonts=2 zones=yes mode=global
545
+ * Contract: roles.action → --primary; roles.brand → --brand-mark (never default CTA)
546
+ */
547
+
548
+ /* Brand font faces */
549
+ @font-face {
550
+ font-family: "NotionInter";
551
+ src: url("https://cdn.jsdelivr.net/fontsource/fonts/inter:vf@latest/latin-wght-normal.woff2")
552
+ format("woff2");
553
+ font-weight: 100 900;
554
+ font-display: swap;
555
+ }
556
+
557
+ @font-face {
558
+ font-family: "Lyon Text";
559
+ src: url("/brand-assets/lyon-text-regular.woff2") format("woff2");
560
+ font-weight: 400;
561
+ font-display: swap;
562
+ }
563
+
564
+ html[data-brand="notion"] {
565
+ /* ── Color roles (carrier) ── */
566
+ --role-canvas: 30 10% 96%;
567
+ --role-canvas-fg: 0 0% 0%;
568
+ --role-surface: 0 0% 100%;
569
+ --role-surface-fg: 0 0% 0%;
570
+ --role-action: 208 100% 44%;
571
+ --role-action-fg: 0 0% 100%;
572
+ --role-quiet: 208 92% 95%;
573
+ --role-quiet-fg: 208 100% 44%;
574
+ --role-muted: 208 92% 95%;
575
+ --role-muted-fg: 0 0% 46%;
576
+ --role-border: 30 5% 88%;
577
+ --role-input: 0 0% 100%;
578
+ --role-ring: 208 100% 44%;
579
+ --role-brand: 0 0% 0%;
580
+ --role-brand-fg: 0 0% 100%;
581
+ --brand-mark: 0 0% 0%;
582
+ --brand-mark-foreground: 0 0% 100%;
583
+
584
+ /* ── shadcn bridge (primary = action CTA) ── */
585
+ --background: 30 10% 96%;
586
+ --foreground: 0 0% 0%;
587
+ --card: 0 0% 100%;
588
+ --card-foreground: 0 0% 0%;
589
+ --popover: 0 0% 100%;
590
+ --popover-foreground: 0 0% 0%;
591
+ --primary: 208 100% 44%;
592
+ --primary-foreground: 0 0% 100%;
593
+ --secondary: 208 92% 95%;
594
+ --secondary-foreground: 208 100% 44%;
595
+ --muted: 208 92% 95%;
596
+ --muted-foreground: 0 0% 46%;
597
+ --accent: 0 0% 0%;
598
+ --accent-foreground: 0 0% 100%;
599
+ --destructive: 7 92% 58%;
600
+ --destructive-foreground: 0 0% 100%;
601
+ --border: 30 5% 88%;
602
+ --input: 0 0% 100%;
603
+ --ring: 208 100% 44%;
604
+ --warning: 40 100% 53%;
605
+ --warning-foreground: 0 0% 0%;
606
+ --info: 208 93% 47%;
607
+ --info-foreground: 0 0% 100%;
608
+ --sidebar: 0 0% 100%;
609
+ --sidebar-foreground: 0 0% 0%;
610
+ --sidebar-primary: 208 100% 44%;
611
+ --sidebar-primary-foreground: 0 0% 100%;
612
+ --sidebar-accent: 0 0% 0%;
613
+ --sidebar-accent-foreground: 0 0% 100%;
614
+ --sidebar-border: 30 5% 88%;
615
+ --sidebar-ring: 208 100% 44%;
616
+ --brand-gradient: hsl(var(--primary));
617
+ --brand-gradient-reverse: hsl(var(--primary));
618
+ --brand-gradient-vertical: hsl(var(--primary));
619
+ --brand-gradient-radial: hsl(var(--primary));
620
+
621
+ /* Recipe (action language + free elev/radii) */
622
+ /* Shape slots */
623
+ --btn-default-radius: 8px;
624
+ --radius-button: 8px;
625
+ --radius-buttons: 8px;
626
+ --radius-md: 8px;
627
+ --radius-card: 12px;
628
+ --radius-lg: 12px;
629
+ --radius-badge: 9999px;
630
+ --badge-default-radius: 9999px;
631
+ --radius-inputs: 8px;
632
+ --input-radius: 8px;
633
+ --radius-pill: 9999px;
634
+
635
+ /* Free elevation (carrier-provided CSS shadows) */
636
+ --elevation-card: 0 0 #0000;
637
+ --elevation-control: 0 0 #0000;
638
+ --elevation-raised: 0px 0.7px 1.462px 0px rgb(0 0 0 / 0.015), 0px 3px 9px 0px rgb(0 0 0 / 0.03);
639
+ --shadow-xs: 0 0 #0000;
640
+ --shadow-sm: 0 0 #0000;
641
+ --shadow-md: 0px 0.7px 1.462px 0px rgb(0 0 0 / 0.015), 0px 3px 9px 0px rgb(0 0 0 / 0.03);
642
+ --shadow-lg: 0px 0.7px 1.462px 0px rgb(0 0 0 / 0.015), 0px 3px 9px 0px rgb(0 0 0 / 0.03);
643
+ --btn-default-shadow: 0 0 #0000;
644
+ --btn-default-bg: hsl(var(--primary));
645
+ --btn-default-fg: hsl(var(--primary-foreground));
646
+ --btn-default-border-width: 0px;
647
+ --btn-default-border: transparent;
648
+ --btn-default-stroke-gradient: transparent;
649
+ --btn-default-hover-bg: color-mix(in srgb, hsl(var(--primary)) 90%, transparent);
650
+ --badge-default-bg: hsl(var(--secondary));
651
+ --badge-default-fg: hsl(var(--secondary-foreground));
652
+ --badge-default-border: transparent;
653
+ --badge-default-hover-bg: color-mix(in srgb, hsl(var(--secondary)) 90%, white);
654
+
655
+ /* Typography */
656
+ --font-sans: "NotionInter", "Inter", ui-sans-serif, system-ui, sans-serif;
657
+ --font-heading: "NotionInter", "Inter", ui-sans-serif, system-ui, sans-serif;
658
+ --font-display: "NotionInter", "Inter", ui-sans-serif, system-ui, sans-serif;
659
+ --font-weight-heading: 700;
660
+
661
+ /* Zone type scales */
662
+ --zone-product-caption-size: 12px;
663
+ --zone-product-caption-leading: 1.33;
664
+ --zone-product-caption-tracking: 0.12px;
665
+ --zone-product-caption-weight: 500;
666
+ --zone-product-body-sm-size: 14px;
667
+ --zone-product-body-sm-leading: 1.43;
668
+ --zone-product-body-sm-weight: 500;
669
+ --zone-product-body-size: 16px;
670
+ --zone-product-body-leading: 1.5;
671
+ --zone-product-body-weight: 400;
672
+ --zone-product-subheading-size: 20px;
673
+ --zone-product-subheading-leading: 1;
674
+ --zone-product-subheading-weight: 500;
675
+ --zone-product-heading-sm-size: 22px;
676
+ --zone-product-heading-sm-leading: 1.27;
677
+ --zone-product-heading-sm-tracking: -0.242px;
678
+ --zone-product-heading-sm-weight: 600;
679
+ --zone-product-heading-size: 40px;
680
+ --zone-product-heading-leading: 1.5;
681
+ --zone-product-heading-weight: 600;
682
+ --zone-marketing-body-size: 16px;
683
+ --zone-marketing-body-leading: 1.5;
684
+ --zone-marketing-body-weight: 400;
685
+ --zone-marketing-heading-size: 48px;
686
+ --zone-marketing-heading-leading: 1.5;
687
+ --zone-marketing-heading-weight: 700;
688
+ --zone-marketing-heading-lg-size: 54px;
689
+ --zone-marketing-heading-lg-leading: 1.04;
690
+ --zone-marketing-heading-lg-tracking: -1.89px;
691
+ --zone-marketing-heading-lg-weight: 700;
692
+ --zone-marketing-display-size: 72px;
693
+ --zone-marketing-display-leading: 1.21;
694
+ --zone-marketing-display-tracking: -2.016px;
695
+ --zone-marketing-display-weight: 700;
696
+
697
+ /* Taxonomy / decorative (not product CTA) */
698
+ --brand-category-brand: #000000;
699
+ --brand-category-action: #0075de;
700
+ --brand-category-ghost: #e6f3fe;
701
+ --brand-category-marigold: #ffb110;
702
+ --brand-category-coral: #f64932;
703
+ --brand-category-midnight: #02093a;
704
+ --brand-category-charcoal: #111111;
705
+ --brand-category-graphite: #615d59;
706
+ --brand-decorative-marigold: #ffb110;
707
+ --brand-decorative-coral: #f64932;
708
+ --brand-decorative-saffron: #e89d01;
709
+ --brand-decorative-sky-wash: #62aef0;
710
+ --brand-decorative-midnight: #02093a;
711
+ }
712
+
713
+ /* Zone: product — product never inherits marketing display */
714
+ [data-zone="product"],
715
+ .zone-product {
716
+ font-size: var(--zone-product-body-size, 16px);
717
+ line-height: var(--zone-product-body-leading, 1.5);
718
+ font-weight: var(--zone-product-body-weight, 400);
719
+ --text-caption: var(--zone-product-caption-size, inherit);
720
+ --leading-caption: var(--zone-product-caption-leading, inherit);
721
+ --tracking-caption: var(--zone-product-caption-tracking, inherit);
722
+ --text-body-sm: var(--zone-product-body-sm-size, inherit);
723
+ --leading-body-sm: var(--zone-product-body-sm-leading, inherit);
724
+ --tracking-body-sm: var(--zone-product-body-sm-tracking, inherit);
725
+ --text-body: var(--zone-product-body-size, inherit);
726
+ --leading-body: var(--zone-product-body-leading, inherit);
727
+ --tracking-body: var(--zone-product-body-tracking, inherit);
728
+ --text-body-lg: var(--zone-product-body-lg-size, inherit);
729
+ --leading-body-lg: var(--zone-product-body-lg-leading, inherit);
730
+ --tracking-body-lg: var(--zone-product-body-lg-tracking, inherit);
731
+ --text-subheading: var(--zone-product-subheading-size, inherit);
732
+ --leading-subheading: var(--zone-product-subheading-leading, inherit);
733
+ --tracking-subheading: var(--zone-product-subheading-tracking, inherit);
734
+ --text-heading-sm: var(--zone-product-heading-sm-size, inherit);
735
+ --leading-heading-sm: var(--zone-product-heading-sm-leading, inherit);
736
+ --tracking-heading-sm: var(--zone-product-heading-sm-tracking, inherit);
737
+ --text-heading: var(--zone-product-heading-size, inherit);
738
+ --leading-heading: var(--zone-product-heading-leading, inherit);
739
+ --tracking-heading: var(--zone-product-heading-tracking, inherit);
740
+ --text-heading-lg: var(--zone-product-heading-lg-size, inherit);
741
+ --leading-heading-lg: var(--zone-product-heading-lg-leading, inherit);
742
+ --tracking-heading-lg: var(--zone-product-heading-lg-tracking, inherit);
743
+ --text-display: var(--zone-product-display-size, var(--zone-product-heading-size, inherit));
744
+ --leading-display: var(--zone-product-display-leading, inherit);
745
+ --tracking-display: var(--zone-product-display-tracking, inherit);
746
+ }
747
+
748
+ /* Zone: marketing — product never inherits marketing display */
749
+ [data-zone="marketing"],
750
+ .zone-marketing {
751
+ font-size: var(--zone-marketing-body-size, 16px);
752
+ line-height: var(--zone-marketing-body-leading, 1.5);
753
+ font-weight: var(--zone-marketing-body-weight, 400);
754
+ --text-caption: var(--zone-marketing-caption-size, inherit);
755
+ --leading-caption: var(--zone-marketing-caption-leading, inherit);
756
+ --tracking-caption: var(--zone-marketing-caption-tracking, inherit);
757
+ --text-body-sm: var(--zone-marketing-body-sm-size, inherit);
758
+ --leading-body-sm: var(--zone-marketing-body-sm-leading, inherit);
759
+ --tracking-body-sm: var(--zone-marketing-body-sm-tracking, inherit);
760
+ --text-body: var(--zone-marketing-body-size, inherit);
761
+ --leading-body: var(--zone-marketing-body-leading, inherit);
762
+ --tracking-body: var(--zone-marketing-body-tracking, inherit);
763
+ --text-body-lg: var(--zone-marketing-body-lg-size, inherit);
764
+ --leading-body-lg: var(--zone-marketing-body-lg-leading, inherit);
765
+ --tracking-body-lg: var(--zone-marketing-body-lg-tracking, inherit);
766
+ --text-subheading: var(--zone-marketing-subheading-size, inherit);
767
+ --leading-subheading: var(--zone-marketing-subheading-leading, inherit);
768
+ --tracking-subheading: var(--zone-marketing-subheading-tracking, inherit);
769
+ --text-heading-sm: var(--zone-marketing-heading-sm-size, inherit);
770
+ --leading-heading-sm: var(--zone-marketing-heading-sm-leading, inherit);
771
+ --tracking-heading-sm: var(--zone-marketing-heading-sm-tracking, inherit);
772
+ --text-heading: var(--zone-marketing-heading-size, inherit);
773
+ --leading-heading: var(--zone-marketing-heading-leading, inherit);
774
+ --tracking-heading: var(--zone-marketing-heading-tracking, inherit);
775
+ --text-heading-lg: var(--zone-marketing-heading-lg-size, inherit);
776
+ --leading-heading-lg: var(--zone-marketing-heading-lg-leading, inherit);
777
+ --tracking-heading-lg: var(--zone-marketing-heading-lg-tracking, inherit);
778
+ --text-display: var(--zone-marketing-display-size, inherit);
779
+ --leading-display: var(--zone-marketing-display-leading, inherit);
780
+ --tracking-display: var(--zone-marketing-display-tracking, inherit);
781
+ }
782
+
783
+ /* Product chrome must not use decorative gradients as action fills */
784
+ [data-zone="product"] .btn-brand-default,
785
+ .zone-product .btn-brand-default {
786
+ /* intentional no-op: documents contract; action uses --primary only */
787
+ }
788
+
789
+ /**
790
+ * Brand carrier skin: Raycast (raycast) v1.0.0
791
+ * darkDefault=true dualMode=false button=solid
792
+ * fonts=1 zones=yes mode=global
793
+ * Contract: roles.action → --primary; roles.brand → --brand-mark (never default CTA)
794
+ */
795
+
796
+ /* Brand font faces */
797
+ @font-face {
798
+ font-family: "Inter";
799
+ src: url("https://cdn.jsdelivr.net/fontsource/fonts/inter:vf@latest/latin-wght-normal.woff2")
800
+ format("woff2");
801
+ font-weight: 100 900;
802
+ font-display: swap;
803
+ }
804
+
805
+ html[data-brand="raycast"] {
806
+ /* ── Color roles (carrier) ── */
807
+ --role-canvas: 210 20% 2%;
808
+ --role-canvas-fg: 0 0% 100%;
809
+ --role-surface: 220 18% 3%;
810
+ --role-surface-fg: 0 0% 100%;
811
+ --role-action: 0 0% 90%;
812
+ --role-action-fg: 210 1% 27%;
813
+ --role-quiet: 220 5% 11%;
814
+ --role-quiet-fg: 0 0% 100%;
815
+ --role-muted: 220 8% 7%;
816
+ --role-muted-fg: 210 1% 42%;
817
+ --role-border: 210 2% 19%;
818
+ --role-input: 220 8% 7%;
819
+ --role-ring: 240 1% 61%;
820
+ --role-brand: 0 100% 69%;
821
+ --role-brand-fg: 210 1% 27%;
822
+ --brand-mark: 0 100% 69%;
823
+ --brand-mark-foreground: 210 1% 27%;
824
+
825
+ /* ── shadcn bridge (primary = action CTA) ── */
826
+ --background: 210 20% 2%;
827
+ --foreground: 0 0% 100%;
828
+ --card: 220 18% 3%;
829
+ --card-foreground: 0 0% 100%;
830
+ --popover: 220 18% 3%;
831
+ --popover-foreground: 0 0% 100%;
832
+ --primary: 0 0% 90%;
833
+ --primary-foreground: 210 1% 27%;
834
+ --secondary: 220 5% 11%;
835
+ --secondary-foreground: 0 0% 100%;
836
+ --muted: 220 8% 7%;
837
+ --muted-foreground: 210 1% 42%;
838
+ --accent: 0 100% 69%;
839
+ --accent-foreground: 210 1% 27%;
840
+ --destructive: 0 72% 51%;
841
+ --destructive-foreground: 0 0% 100%;
842
+ --border: 210 2% 19%;
843
+ --input: 220 8% 7%;
844
+ --ring: 240 1% 61%;
845
+ --success: 151 59% 59%;
846
+ --success-foreground: 210 20% 2%;
847
+ --info: 202 100% 67%;
848
+ --info-foreground: 210 20% 2%;
849
+ --sidebar: 220 18% 3%;
850
+ --sidebar-foreground: 0 0% 100%;
851
+ --sidebar-primary: 0 0% 90%;
852
+ --sidebar-primary-foreground: 210 1% 27%;
853
+ --sidebar-accent: 0 100% 69%;
854
+ --sidebar-accent-foreground: 210 1% 27%;
855
+ --sidebar-border: 210 2% 19%;
856
+ --sidebar-ring: 240 1% 61%;
857
+ --brand-gradient: hsl(var(--primary));
858
+ --brand-gradient-reverse: hsl(var(--primary));
859
+ --brand-gradient-vertical: hsl(var(--primary));
860
+ --brand-gradient-radial: hsl(var(--primary));
861
+
862
+ /* Recipe (action language + free elev/radii) */
863
+ /* Shape slots */
864
+ --btn-default-radius: 8px;
865
+ --radius-button: 8px;
866
+ --radius-buttons: 8px;
867
+ --radius-md: 8px;
868
+ --radius-card: 16px;
869
+ --radius-lg: 16px;
870
+ --radius-badge: 6px;
871
+ --badge-default-radius: 6px;
872
+ --radius-inputs: 8px;
873
+ --input-radius: 8px;
874
+ --radius-pill: 9999px;
875
+
876
+ /* Free elevation (carrier-provided CSS shadows) */
877
+ --elevation-card:
878
+ rgba(255, 255, 255, 0.05) 0px 1px 0px 0px inset, rgba(255, 255, 255, 0.25) 0px 0px 0px 1px, rgba(
879
+ 0,
880
+ 0,
881
+ 0,
882
+ 0.2
883
+ ) 0px -1px 0px 0px inset;
884
+ --elevation-control: 0 0 #0000;
885
+ --elevation-raised:
886
+ rgba(255, 255, 255, 0.05) 0px 1px 0px 0px inset, rgba(255, 255, 255, 0.25) 0px 0px 0px 1px, rgba(
887
+ 0,
888
+ 0,
889
+ 0,
890
+ 0.2
891
+ ) 0px -1px 0px 0px inset;
892
+ --shadow-xs: 0 0 #0000;
893
+ --shadow-sm:
894
+ rgba(255, 255, 255, 0.05) 0px 1px 0px 0px inset, rgba(255, 255, 255, 0.25) 0px 0px 0px 1px, rgba(
895
+ 0,
896
+ 0,
897
+ 0,
898
+ 0.2
899
+ ) 0px -1px 0px 0px inset;
900
+ --shadow-md:
901
+ rgba(255, 255, 255, 0.05) 0px 1px 0px 0px inset, rgba(255, 255, 255, 0.25) 0px 0px 0px 1px, rgba(
902
+ 0,
903
+ 0,
904
+ 0,
905
+ 0.2
906
+ ) 0px -1px 0px 0px inset;
907
+ --shadow-lg:
908
+ rgba(255, 255, 255, 0.05) 0px 1px 0px 0px inset, rgba(255, 255, 255, 0.25) 0px 0px 0px 1px, rgba(
909
+ 0,
910
+ 0,
911
+ 0,
912
+ 0.2
913
+ ) 0px -1px 0px 0px inset;
914
+ --btn-default-shadow: 0 0 #0000;
915
+ --btn-default-bg: hsl(var(--primary));
916
+ --btn-default-fg: hsl(var(--primary-foreground));
917
+ --btn-default-border-width: 0px;
918
+ --btn-default-border: transparent;
919
+ --btn-default-stroke-gradient: transparent;
920
+ --btn-default-hover-bg: color-mix(in srgb, hsl(var(--primary)) 90%, transparent);
921
+ --badge-default-bg: hsl(var(--secondary));
922
+ --badge-default-fg: hsl(var(--secondary-foreground));
923
+ --badge-default-border: transparent;
924
+ --badge-default-hover-bg: color-mix(in srgb, hsl(var(--secondary)) 90%, white);
925
+ --btn-default-padding-y: 0.5rem;
926
+ --btn-default-padding-x: 0.875rem;
927
+ --control-height-tiny: 1.25rem;
928
+ --control-height-sm: 1.75rem;
929
+ --control-height-md: 2rem;
930
+ --control-height-lg: 2.5rem;
931
+ --control-font-size-md: 0.8125rem;
932
+
933
+ /* Typography */
934
+ --font-sans: "Inter", ui-sans-serif, system-ui, -apple-system, sans-serif;
935
+ --font-heading: "Inter", ui-sans-serif, system-ui, sans-serif;
936
+ --font-display: "Inter", ui-sans-serif, system-ui, sans-serif;
937
+ --font-mono: "Geist Mono", "GeistMono", ui-monospace, Menlo, monospace;
938
+ --font-weight-heading: 400;
939
+
940
+ /* Zone type scales */
941
+ --zone-product-caption-size: 11px;
942
+ --zone-product-caption-leading: 0.91;
943
+ --zone-product-caption-tracking: 0.8px;
944
+ --zone-product-caption-weight: 500;
945
+ --zone-product-body-sm-size: 13px;
946
+ --zone-product-body-sm-leading: 1.2;
947
+ --zone-product-body-sm-weight: 500;
948
+ --zone-product-body-size: 16px;
949
+ --zone-product-body-leading: 1.15;
950
+ --zone-product-body-weight: 400;
951
+ --zone-product-body-lg-size: 18px;
952
+ --zone-product-body-lg-leading: 1.15;
953
+ --zone-product-body-lg-weight: 400;
954
+ --zone-product-subheading-size: 20px;
955
+ --zone-product-subheading-leading: 1.2;
956
+ --zone-product-subheading-tracking: 0.2px;
957
+ --zone-product-subheading-weight: 400;
958
+ --zone-product-heading-sm-size: 24px;
959
+ --zone-product-heading-sm-leading: 1.15;
960
+ --zone-product-heading-sm-weight: 500;
961
+ --zone-product-heading-size: 32px;
962
+ --zone-product-heading-leading: 1.15;
963
+ --zone-product-heading-weight: 500;
964
+ --zone-marketing-body-size: 16px;
965
+ --zone-marketing-body-leading: 1.15;
966
+ --zone-marketing-body-weight: 400;
967
+ --zone-marketing-heading-size: 32px;
968
+ --zone-marketing-heading-leading: 1.15;
969
+ --zone-marketing-heading-weight: 500;
970
+ --zone-marketing-heading-lg-size: 56px;
971
+ --zone-marketing-heading-lg-leading: 1.17;
972
+ --zone-marketing-heading-lg-tracking: 0.22px;
973
+ --zone-marketing-heading-lg-weight: 400;
974
+ --zone-marketing-display-size: 64px;
975
+ --zone-marketing-display-leading: 1.1;
976
+ --zone-marketing-display-weight: 600;
977
+
978
+ /* Taxonomy / decorative (not product CTA) */
979
+ --brand-category-brand: #ff6363;
980
+ --brand-category-ember: #452324;
981
+ --brand-category-sky: #63a1ff;
982
+ }
983
+
984
+ /* Zone: product — product never inherits marketing display */
985
+ [data-zone="product"],
986
+ .zone-product {
987
+ font-size: var(--zone-product-body-size, 16px);
988
+ line-height: var(--zone-product-body-leading, 1.15);
989
+ font-weight: var(--zone-product-body-weight, 400);
990
+ --text-caption: var(--zone-product-caption-size, inherit);
991
+ --leading-caption: var(--zone-product-caption-leading, inherit);
992
+ --tracking-caption: var(--zone-product-caption-tracking, inherit);
993
+ --text-body-sm: var(--zone-product-body-sm-size, inherit);
994
+ --leading-body-sm: var(--zone-product-body-sm-leading, inherit);
995
+ --tracking-body-sm: var(--zone-product-body-sm-tracking, inherit);
996
+ --text-body: var(--zone-product-body-size, inherit);
997
+ --leading-body: var(--zone-product-body-leading, inherit);
998
+ --tracking-body: var(--zone-product-body-tracking, inherit);
999
+ --text-body-lg: var(--zone-product-body-lg-size, inherit);
1000
+ --leading-body-lg: var(--zone-product-body-lg-leading, inherit);
1001
+ --tracking-body-lg: var(--zone-product-body-lg-tracking, inherit);
1002
+ --text-subheading: var(--zone-product-subheading-size, inherit);
1003
+ --leading-subheading: var(--zone-product-subheading-leading, inherit);
1004
+ --tracking-subheading: var(--zone-product-subheading-tracking, inherit);
1005
+ --text-heading-sm: var(--zone-product-heading-sm-size, inherit);
1006
+ --leading-heading-sm: var(--zone-product-heading-sm-leading, inherit);
1007
+ --tracking-heading-sm: var(--zone-product-heading-sm-tracking, inherit);
1008
+ --text-heading: var(--zone-product-heading-size, inherit);
1009
+ --leading-heading: var(--zone-product-heading-leading, inherit);
1010
+ --tracking-heading: var(--zone-product-heading-tracking, inherit);
1011
+ --text-heading-lg: var(--zone-product-heading-lg-size, inherit);
1012
+ --leading-heading-lg: var(--zone-product-heading-lg-leading, inherit);
1013
+ --tracking-heading-lg: var(--zone-product-heading-lg-tracking, inherit);
1014
+ --text-display: var(--zone-product-display-size, var(--zone-product-heading-size, inherit));
1015
+ --leading-display: var(--zone-product-display-leading, inherit);
1016
+ --tracking-display: var(--zone-product-display-tracking, inherit);
1017
+ }
1018
+
1019
+ /* Zone: marketing — product never inherits marketing display */
1020
+ [data-zone="marketing"],
1021
+ .zone-marketing {
1022
+ font-size: var(--zone-marketing-body-size, 16px);
1023
+ line-height: var(--zone-marketing-body-leading, 1.15);
1024
+ font-weight: var(--zone-marketing-body-weight, 400);
1025
+ --text-caption: var(--zone-marketing-caption-size, inherit);
1026
+ --leading-caption: var(--zone-marketing-caption-leading, inherit);
1027
+ --tracking-caption: var(--zone-marketing-caption-tracking, inherit);
1028
+ --text-body-sm: var(--zone-marketing-body-sm-size, inherit);
1029
+ --leading-body-sm: var(--zone-marketing-body-sm-leading, inherit);
1030
+ --tracking-body-sm: var(--zone-marketing-body-sm-tracking, inherit);
1031
+ --text-body: var(--zone-marketing-body-size, inherit);
1032
+ --leading-body: var(--zone-marketing-body-leading, inherit);
1033
+ --tracking-body: var(--zone-marketing-body-tracking, inherit);
1034
+ --text-body-lg: var(--zone-marketing-body-lg-size, inherit);
1035
+ --leading-body-lg: var(--zone-marketing-body-lg-leading, inherit);
1036
+ --tracking-body-lg: var(--zone-marketing-body-lg-tracking, inherit);
1037
+ --text-subheading: var(--zone-marketing-subheading-size, inherit);
1038
+ --leading-subheading: var(--zone-marketing-subheading-leading, inherit);
1039
+ --tracking-subheading: var(--zone-marketing-subheading-tracking, inherit);
1040
+ --text-heading-sm: var(--zone-marketing-heading-sm-size, inherit);
1041
+ --leading-heading-sm: var(--zone-marketing-heading-sm-leading, inherit);
1042
+ --tracking-heading-sm: var(--zone-marketing-heading-sm-tracking, inherit);
1043
+ --text-heading: var(--zone-marketing-heading-size, inherit);
1044
+ --leading-heading: var(--zone-marketing-heading-leading, inherit);
1045
+ --tracking-heading: var(--zone-marketing-heading-tracking, inherit);
1046
+ --text-heading-lg: var(--zone-marketing-heading-lg-size, inherit);
1047
+ --leading-heading-lg: var(--zone-marketing-heading-lg-leading, inherit);
1048
+ --tracking-heading-lg: var(--zone-marketing-heading-lg-tracking, inherit);
1049
+ --text-display: var(--zone-marketing-display-size, inherit);
1050
+ --leading-display: var(--zone-marketing-display-leading, inherit);
1051
+ --tracking-display: var(--zone-marketing-display-tracking, inherit);
1052
+ }
1053
+
1054
+ /* Product chrome must not use decorative gradients as action fills */
1055
+ [data-zone="product"] .btn-brand-default,
1056
+ .zone-product .btn-brand-default {
1057
+ /* intentional no-op: documents contract; action uses --primary only */
1058
+ }
1059
+
1060
+ /**
1061
+ * Brand carrier skin: Stripe (stripe) v1.0.0
1062
+ * darkDefault=false dualMode=false button=solid
1063
+ * fonts=1 zones=yes mode=global
1064
+ * Contract: roles.action → --primary; roles.brand → --brand-mark (never default CTA)
1065
+ */
1066
+
1067
+ /* Brand font faces */
1068
+ @font-face {
1069
+ font-family: "sohne-var";
1070
+ src: url("/brand-assets/sohne-var.woff2") format("woff2");
1071
+ font-weight: 300 400;
1072
+ font-display: swap;
1073
+ }
1074
+
1075
+ html[data-brand="stripe"] {
1076
+ /* ── Color roles (carrier) ── */
1077
+ --role-canvas: 0 0% 100%;
1078
+ --role-canvas-fg: 211 78% 11%;
1079
+ --role-surface: 0 0% 100%;
1080
+ --role-surface-fg: 211 78% 11%;
1081
+ --role-action: 248 98% 61%;
1082
+ --role-action-fg: 0 0% 100%;
1083
+ --role-quiet: 237 100% 95%;
1084
+ --role-quiet-fg: 248 98% 61%;
1085
+ --role-muted: 216 56% 98%;
1086
+ --role-muted-fg: 217 17% 47%;
1087
+ --role-border: 210 44% 93%;
1088
+ --role-input: 0 0% 100%;
1089
+ --role-ring: 248 98% 61%;
1090
+ --role-brand: 211 78% 11%;
1091
+ --role-brand-fg: 0 0% 100%;
1092
+ --brand-mark: 211 78% 11%;
1093
+ --brand-mark-foreground: 0 0% 100%;
1094
+
1095
+ /* ── shadcn bridge (primary = action CTA) ── */
1096
+ --background: 0 0% 100%;
1097
+ --foreground: 211 78% 11%;
1098
+ --card: 0 0% 100%;
1099
+ --card-foreground: 211 78% 11%;
1100
+ --popover: 0 0% 100%;
1101
+ --popover-foreground: 211 78% 11%;
1102
+ --primary: 248 98% 61%;
1103
+ --primary-foreground: 0 0% 100%;
1104
+ --secondary: 237 100% 95%;
1105
+ --secondary-foreground: 248 98% 61%;
1106
+ --muted: 216 56% 98%;
1107
+ --muted-foreground: 217 17% 47%;
1108
+ --accent: 211 78% 11%;
1109
+ --accent-foreground: 0 0% 100%;
1110
+ --destructive: 0 72% 51%;
1111
+ --destructive-foreground: 0 0% 100%;
1112
+ --border: 210 44% 93%;
1113
+ --input: 0 0% 100%;
1114
+ --ring: 248 98% 61%;
1115
+ --info: 231 100% 73%;
1116
+ --info-foreground: 211 78% 11%;
1117
+ --sidebar: 0 0% 100%;
1118
+ --sidebar-foreground: 211 78% 11%;
1119
+ --sidebar-primary: 248 98% 61%;
1120
+ --sidebar-primary-foreground: 0 0% 100%;
1121
+ --sidebar-accent: 211 78% 11%;
1122
+ --sidebar-accent-foreground: 0 0% 100%;
1123
+ --sidebar-border: 210 44% 93%;
1124
+ --sidebar-ring: 248 98% 61%;
1125
+ --brand-gradient: hsl(var(--primary));
1126
+ --brand-gradient-reverse: hsl(var(--primary));
1127
+ --brand-gradient-vertical: hsl(var(--primary));
1128
+ --brand-gradient-radial: hsl(var(--primary));
1129
+
1130
+ /* Recipe (action language + free elev/radii) */
1131
+ /* Shape slots */
1132
+ --btn-default-radius: 4px;
1133
+ --radius-button: 4px;
1134
+ --radius-buttons: 4px;
1135
+ --radius-md: 4px;
1136
+ --radius-card: 4px;
1137
+ --radius-lg: 4px;
1138
+ --radius-badge: 9999px;
1139
+ --badge-default-radius: 9999px;
1140
+ --radius-inputs: 4px;
1141
+ --input-radius: 4px;
1142
+ --radius-pill: 9999px;
1143
+
1144
+ /* Free elevation (carrier-provided CSS shadows) */
1145
+ --elevation-card: 0 0 #0000;
1146
+ --elevation-control: 0 0 #0000;
1147
+ --elevation-raised: 0 0 #0000;
1148
+ --shadow-xs: 0 0 #0000;
1149
+ --shadow-sm: 0 0 #0000;
1150
+ --shadow-md: 0 0 #0000;
1151
+ --shadow-lg: 0 0 #0000;
1152
+ --btn-default-shadow: 0 0 #0000;
1153
+ --btn-default-bg: hsl(var(--primary));
1154
+ --btn-default-fg: hsl(var(--primary-foreground));
1155
+ --btn-default-border-width: 0px;
1156
+ --btn-default-border: transparent;
1157
+ --btn-default-stroke-gradient: transparent;
1158
+ --btn-default-hover-bg: color-mix(in srgb, hsl(var(--primary)) 90%, transparent);
1159
+ --badge-default-bg: hsl(var(--secondary));
1160
+ --badge-default-fg: hsl(var(--secondary-foreground));
1161
+ --badge-default-border: transparent;
1162
+ --badge-default-hover-bg: color-mix(in srgb, hsl(var(--secondary)) 90%, white);
1163
+
1164
+ /* Typography */
1165
+ --font-sans: "sohne-var", "Inter Tight", "Inter", ui-sans-serif, system-ui, sans-serif;
1166
+ --font-heading: "sohne-var", "Inter Tight", ui-sans-serif, system-ui, sans-serif;
1167
+ --font-display: "sohne-var", "Inter Tight", ui-sans-serif, system-ui, sans-serif;
1168
+ --font-weight-heading: 300;
1169
+
1170
+ /* Zone type scales */
1171
+ --zone-product-caption-size: 12px;
1172
+ --zone-product-caption-leading: 1.45;
1173
+ --zone-product-caption-tracking: -0.12px;
1174
+ --zone-product-caption-weight: 300;
1175
+ --zone-product-body-sm-size: 14px;
1176
+ --zone-product-body-sm-leading: 1.4;
1177
+ --zone-product-body-sm-tracking: -0.14px;
1178
+ --zone-product-body-sm-weight: 400;
1179
+ --zone-product-body-size: 16px;
1180
+ --zone-product-body-leading: 1.2;
1181
+ --zone-product-body-tracking: -0.16px;
1182
+ --zone-product-body-weight: 400;
1183
+ --zone-product-body-lg-size: 20px;
1184
+ --zone-product-body-lg-leading: 1.4;
1185
+ --zone-product-body-lg-tracking: -0.2px;
1186
+ --zone-product-body-lg-weight: 300;
1187
+ --zone-product-subheading-size: 22px;
1188
+ --zone-product-subheading-leading: 1.1;
1189
+ --zone-product-subheading-tracking: -0.22px;
1190
+ --zone-product-subheading-weight: 300;
1191
+ --zone-product-heading-sm-size: 26px;
1192
+ --zone-product-heading-sm-leading: 1.12;
1193
+ --zone-product-heading-sm-tracking: -0.26px;
1194
+ --zone-product-heading-sm-weight: 300;
1195
+ --zone-product-heading-size: 32px;
1196
+ --zone-product-heading-leading: 1.1;
1197
+ --zone-product-heading-tracking: -0.64px;
1198
+ --zone-product-heading-weight: 300;
1199
+ --zone-marketing-body-size: 16px;
1200
+ --zone-marketing-body-leading: 1.4;
1201
+ --zone-marketing-body-tracking: -0.16px;
1202
+ --zone-marketing-body-weight: 300;
1203
+ --zone-marketing-heading-size: 32px;
1204
+ --zone-marketing-heading-leading: 1.1;
1205
+ --zone-marketing-heading-tracking: -0.64px;
1206
+ --zone-marketing-heading-weight: 300;
1207
+ --zone-marketing-heading-lg-size: 48px;
1208
+ --zone-marketing-heading-lg-leading: 1.03;
1209
+ --zone-marketing-heading-lg-tracking: -0.96px;
1210
+ --zone-marketing-heading-lg-weight: 300;
1211
+ --zone-marketing-display-size: 56px;
1212
+ --zone-marketing-display-leading: 1.03;
1213
+ --zone-marketing-display-tracking: -1.4px;
1214
+ --zone-marketing-display-weight: 300;
1215
+
1216
+ /* Taxonomy / decorative (not product CTA) */
1217
+ --brand-category-brand: #061b31;
1218
+ --brand-category-action: #533afd;
1219
+ --brand-category-link: #533afd;
1220
+ --brand-category-hover: #7389ff;
1221
+ --brand-category-ghostborder: #b9b9f9;
1222
+ --brand-category-wash: #e8e9ff;
1223
+ --brand-category-deep: #182659;
1224
+ --brand-category-smoke: #839bc8;
1225
+ --brand-category-steel: #50617a;
1226
+ --brand-decorative-section-band: #f8fafd;
1227
+ --brand-decorative-frost: #e5edf5;
1228
+ }
1229
+
1230
+ /* Zone: product — product never inherits marketing display */
1231
+ [data-zone="product"],
1232
+ .zone-product {
1233
+ font-size: var(--zone-product-body-size, 16px);
1234
+ line-height: var(--zone-product-body-leading, 1.2);
1235
+ font-weight: var(--zone-product-body-weight, 400);
1236
+ letter-spacing: var(--zone-product-body-tracking, -0.16px);
1237
+ --text-caption: var(--zone-product-caption-size, inherit);
1238
+ --leading-caption: var(--zone-product-caption-leading, inherit);
1239
+ --tracking-caption: var(--zone-product-caption-tracking, inherit);
1240
+ --text-body-sm: var(--zone-product-body-sm-size, inherit);
1241
+ --leading-body-sm: var(--zone-product-body-sm-leading, inherit);
1242
+ --tracking-body-sm: var(--zone-product-body-sm-tracking, inherit);
1243
+ --text-body: var(--zone-product-body-size, inherit);
1244
+ --leading-body: var(--zone-product-body-leading, inherit);
1245
+ --tracking-body: var(--zone-product-body-tracking, inherit);
1246
+ --text-body-lg: var(--zone-product-body-lg-size, inherit);
1247
+ --leading-body-lg: var(--zone-product-body-lg-leading, inherit);
1248
+ --tracking-body-lg: var(--zone-product-body-lg-tracking, inherit);
1249
+ --text-subheading: var(--zone-product-subheading-size, inherit);
1250
+ --leading-subheading: var(--zone-product-subheading-leading, inherit);
1251
+ --tracking-subheading: var(--zone-product-subheading-tracking, inherit);
1252
+ --text-heading-sm: var(--zone-product-heading-sm-size, inherit);
1253
+ --leading-heading-sm: var(--zone-product-heading-sm-leading, inherit);
1254
+ --tracking-heading-sm: var(--zone-product-heading-sm-tracking, inherit);
1255
+ --text-heading: var(--zone-product-heading-size, inherit);
1256
+ --leading-heading: var(--zone-product-heading-leading, inherit);
1257
+ --tracking-heading: var(--zone-product-heading-tracking, inherit);
1258
+ --text-heading-lg: var(--zone-product-heading-lg-size, inherit);
1259
+ --leading-heading-lg: var(--zone-product-heading-lg-leading, inherit);
1260
+ --tracking-heading-lg: var(--zone-product-heading-lg-tracking, inherit);
1261
+ --text-display: var(--zone-product-display-size, var(--zone-product-heading-size, inherit));
1262
+ --leading-display: var(--zone-product-display-leading, inherit);
1263
+ --tracking-display: var(--zone-product-display-tracking, inherit);
1264
+ }
1265
+
1266
+ /* Zone: marketing — product never inherits marketing display */
1267
+ [data-zone="marketing"],
1268
+ .zone-marketing {
1269
+ font-size: var(--zone-marketing-body-size, 16px);
1270
+ line-height: var(--zone-marketing-body-leading, 1.4);
1271
+ font-weight: var(--zone-marketing-body-weight, 300);
1272
+ letter-spacing: var(--zone-marketing-body-tracking, -0.16px);
1273
+ --text-caption: var(--zone-marketing-caption-size, inherit);
1274
+ --leading-caption: var(--zone-marketing-caption-leading, inherit);
1275
+ --tracking-caption: var(--zone-marketing-caption-tracking, inherit);
1276
+ --text-body-sm: var(--zone-marketing-body-sm-size, inherit);
1277
+ --leading-body-sm: var(--zone-marketing-body-sm-leading, inherit);
1278
+ --tracking-body-sm: var(--zone-marketing-body-sm-tracking, inherit);
1279
+ --text-body: var(--zone-marketing-body-size, inherit);
1280
+ --leading-body: var(--zone-marketing-body-leading, inherit);
1281
+ --tracking-body: var(--zone-marketing-body-tracking, inherit);
1282
+ --text-body-lg: var(--zone-marketing-body-lg-size, inherit);
1283
+ --leading-body-lg: var(--zone-marketing-body-lg-leading, inherit);
1284
+ --tracking-body-lg: var(--zone-marketing-body-lg-tracking, inherit);
1285
+ --text-subheading: var(--zone-marketing-subheading-size, inherit);
1286
+ --leading-subheading: var(--zone-marketing-subheading-leading, inherit);
1287
+ --tracking-subheading: var(--zone-marketing-subheading-tracking, inherit);
1288
+ --text-heading-sm: var(--zone-marketing-heading-sm-size, inherit);
1289
+ --leading-heading-sm: var(--zone-marketing-heading-sm-leading, inherit);
1290
+ --tracking-heading-sm: var(--zone-marketing-heading-sm-tracking, inherit);
1291
+ --text-heading: var(--zone-marketing-heading-size, inherit);
1292
+ --leading-heading: var(--zone-marketing-heading-leading, inherit);
1293
+ --tracking-heading: var(--zone-marketing-heading-tracking, inherit);
1294
+ --text-heading-lg: var(--zone-marketing-heading-lg-size, inherit);
1295
+ --leading-heading-lg: var(--zone-marketing-heading-lg-leading, inherit);
1296
+ --tracking-heading-lg: var(--zone-marketing-heading-lg-tracking, inherit);
1297
+ --text-display: var(--zone-marketing-display-size, inherit);
1298
+ --leading-display: var(--zone-marketing-display-leading, inherit);
1299
+ --tracking-display: var(--zone-marketing-display-tracking, inherit);
1300
+ }
1301
+
1302
+ /* Product chrome must not use decorative gradients as action fills */
1303
+ [data-zone="product"] .btn-brand-default,
1304
+ .zone-product .btn-brand-default {
1305
+ /* intentional no-op: documents contract; action uses --primary only */
1306
+ }
1307
+
1308
+ /**
1309
+ * Brand carrier skin: Vanta (vanta) v1.0.0
1310
+ * darkDefault=false dualMode=false button=solid
1311
+ * fonts=3 zones=yes mode=global
1312
+ * Contract: roles.action → --primary; roles.brand → --brand-mark (never default CTA)
1313
+ */
1314
+
1315
+ /* Brand font faces */
1316
+ @font-face {
1317
+ font-family: "Inter Variable";
1318
+ src: url("https://cdn.jsdelivr.net/fontsource/fonts/inter:vf@latest/latin-wght-normal.woff2")
1319
+ format("woff2");
1320
+ font-weight: 100 900;
1321
+ font-display: swap;
1322
+ }
1323
+
1324
+ @font-face {
1325
+ font-family: "Reckless";
1326
+ src: url("/brand-assets/reckless-regular.woff2") format("woff2");
1327
+ font-weight: 400;
1328
+ font-display: swap;
1329
+ }
1330
+
1331
+ @font-face {
1332
+ font-family: "Reckless";
1333
+ src: url("/brand-assets/reckless-medium.woff2") format("woff2");
1334
+ font-weight: 500;
1335
+ font-display: swap;
1336
+ }
1337
+
1338
+ html[data-brand="vanta"] {
1339
+ /* ── Color roles (carrier) ── */
1340
+ --role-canvas: 220 23% 97%;
1341
+ --role-canvas-fg: 240 17% 11%;
1342
+ --role-surface: 0 0% 100%;
1343
+ --role-surface-fg: 240 17% 11%;
1344
+ --role-action: 268 95% 39%;
1345
+ --role-action-fg: 0 0% 100%;
1346
+ --role-quiet: 250 100% 92%;
1347
+ --role-quiet-fg: 272 100% 14%;
1348
+ --role-muted: 240 20% 93%;
1349
+ --role-muted-fg: 238 11% 48%;
1350
+ --role-border: 240 17% 11%;
1351
+ --role-input: 0 0% 100%;
1352
+ --role-ring: 268 95% 39%;
1353
+ --role-brand: 272 100% 14%;
1354
+ --role-brand-fg: 0 0% 100%;
1355
+ --brand-mark: 272 100% 14%;
1356
+ --brand-mark-foreground: 0 0% 100%;
1357
+
1358
+ /* ── shadcn bridge (primary = action CTA) ── */
1359
+ --background: 220 23% 97%;
1360
+ --foreground: 240 17% 11%;
1361
+ --card: 0 0% 100%;
1362
+ --card-foreground: 240 17% 11%;
1363
+ --popover: 0 0% 100%;
1364
+ --popover-foreground: 240 17% 11%;
1365
+ --primary: 268 95% 39%;
1366
+ --primary-foreground: 0 0% 100%;
1367
+ --secondary: 250 100% 92%;
1368
+ --secondary-foreground: 272 100% 14%;
1369
+ --muted: 240 20% 93%;
1370
+ --muted-foreground: 238 11% 48%;
1371
+ --accent: 272 100% 14%;
1372
+ --accent-foreground: 0 0% 100%;
1373
+ --destructive: 0 72% 51%;
1374
+ --destructive-foreground: 0 0% 100%;
1375
+ --border: 240 17% 11%;
1376
+ --input: 0 0% 100%;
1377
+ --ring: 268 95% 39%;
1378
+ --warning: 44 100% 53%;
1379
+ --warning-foreground: 240 17% 11%;
1380
+ --info: 270 63% 56%;
1381
+ --info-foreground: 0 0% 100%;
1382
+ --sidebar: 0 0% 100%;
1383
+ --sidebar-foreground: 240 17% 11%;
1384
+ --sidebar-primary: 268 95% 39%;
1385
+ --sidebar-primary-foreground: 0 0% 100%;
1386
+ --sidebar-accent: 272 100% 14%;
1387
+ --sidebar-accent-foreground: 0 0% 100%;
1388
+ --sidebar-border: 240 17% 11%;
1389
+ --sidebar-ring: 268 95% 39%;
1390
+ --brand-gradient: hsl(var(--primary));
1391
+ --brand-gradient-reverse: hsl(var(--primary));
1392
+ --brand-gradient-vertical: hsl(var(--primary));
1393
+ --brand-gradient-radial: hsl(var(--primary));
1394
+
1395
+ /* Recipe (action language + free elev/radii) */
1396
+ /* Shape slots */
1397
+ --btn-default-radius: 999px;
1398
+ --radius-button: 999px;
1399
+ --radius-buttons: 999px;
1400
+ --radius-md: 999px;
1401
+ --radius-card: 16px;
1402
+ --radius-lg: 16px;
1403
+ --radius-badge: 999px;
1404
+ --badge-default-radius: 999px;
1405
+ --radius-inputs: 999px;
1406
+ --input-radius: 999px;
1407
+ --radius-pill: 9999px;
1408
+
1409
+ /* Free elevation (carrier-provided CSS shadows) */
1410
+ --elevation-card: 0 0 #0000;
1411
+ --elevation-control: 0 0 #0000;
1412
+ --elevation-raised: 0 0 #0000;
1413
+ --shadow-xs: 0 0 #0000;
1414
+ --shadow-sm: 0 0 #0000;
1415
+ --shadow-md: 0 0 #0000;
1416
+ --shadow-lg: 0 0 #0000;
1417
+ --btn-default-shadow: 0 0 #0000;
1418
+ --btn-default-bg: hsl(var(--primary));
1419
+ --btn-default-fg: hsl(var(--primary-foreground));
1420
+ --btn-default-border-width: 0px;
1421
+ --btn-default-border: transparent;
1422
+ --btn-default-stroke-gradient: transparent;
1423
+ --btn-default-hover-bg: color-mix(in srgb, hsl(var(--primary)) 90%, transparent);
1424
+ --badge-default-bg: hsl(var(--secondary));
1425
+ --badge-default-fg: hsl(var(--secondary-foreground));
1426
+ --badge-default-border: transparent;
1427
+ --badge-default-hover-bg: color-mix(in srgb, hsl(var(--secondary)) 90%, white);
1428
+
1429
+ /* Typography */
1430
+ --font-sans: "Inter Variable", "Inter", ui-sans-serif, system-ui, sans-serif;
1431
+ --font-heading: "Reckless", "Source Serif 4", "Lora", ui-serif, Georgia, serif;
1432
+ --font-display: "Reckless", "Source Serif 4", "Lora", ui-serif, Georgia, serif;
1433
+ --font-weight-heading: 500;
1434
+
1435
+ /* Zone type scales */
1436
+ --zone-product-caption-size: 12px;
1437
+ --zone-product-caption-leading: 1.5;
1438
+ --zone-product-caption-tracking: -0.02px;
1439
+ --zone-product-caption-weight: 500;
1440
+ --zone-product-body-sm-size: 14px;
1441
+ --zone-product-body-sm-leading: 1.43;
1442
+ --zone-product-body-sm-tracking: -0.02px;
1443
+ --zone-product-body-sm-weight: 400;
1444
+ --zone-product-body-size: 16px;
1445
+ --zone-product-body-leading: 1.5;
1446
+ --zone-product-body-tracking: -0.02px;
1447
+ --zone-product-body-weight: 400;
1448
+ --zone-product-subheading-size: 20px;
1449
+ --zone-product-subheading-leading: 1.4;
1450
+ --zone-product-subheading-weight: 500;
1451
+ --zone-product-heading-sm-size: 24px;
1452
+ --zone-product-heading-sm-leading: 1.35;
1453
+ --zone-product-heading-sm-weight: 500;
1454
+ --zone-product-heading-size: 32px;
1455
+ --zone-product-heading-leading: 1.3;
1456
+ --zone-product-heading-weight: 500;
1457
+ --zone-marketing-body-size: 16px;
1458
+ --zone-marketing-body-leading: 1.5;
1459
+ --zone-marketing-body-tracking: -0.02px;
1460
+ --zone-marketing-body-weight: 400;
1461
+ --zone-marketing-heading-size: 42px;
1462
+ --zone-marketing-heading-leading: 1.2;
1463
+ --zone-marketing-heading-tracking: -0.84px;
1464
+ --zone-marketing-heading-weight: 400;
1465
+ --zone-marketing-heading-lg-size: 56px;
1466
+ --zone-marketing-heading-lg-leading: 1.15;
1467
+ --zone-marketing-heading-lg-tracking: -1.12px;
1468
+ --zone-marketing-heading-lg-weight: 400;
1469
+ --zone-marketing-display-size: 90px;
1470
+ --zone-marketing-display-leading: 1.1;
1471
+ --zone-marketing-display-tracking: -1.62px;
1472
+ --zone-marketing-display-weight: 400;
1473
+
1474
+ /* Taxonomy / decorative (not product CTA) */
1475
+ --brand-category-brand: #260048;
1476
+ --brand-category-action: #5e05c4;
1477
+ --brand-category-link: #8f47d5;
1478
+ --brand-category-herowash: #ddd6ff;
1479
+ --brand-category-warning: #ffbe0f;
1480
+ --brand-category-steel: #9e9fb7;
1481
+ --brand-category-ash: #dfdfe9;
1482
+ --brand-decorative-hero-wash: #ddd6ff;
1483
+ }
1484
+
1485
+ /* Zone: product — product never inherits marketing display */
1486
+ [data-zone="product"],
1487
+ .zone-product {
1488
+ font-size: var(--zone-product-body-size, 16px);
1489
+ line-height: var(--zone-product-body-leading, 1.5);
1490
+ font-weight: var(--zone-product-body-weight, 400);
1491
+ letter-spacing: var(--zone-product-body-tracking, -0.02px);
1492
+ --text-caption: var(--zone-product-caption-size, inherit);
1493
+ --leading-caption: var(--zone-product-caption-leading, inherit);
1494
+ --tracking-caption: var(--zone-product-caption-tracking, inherit);
1495
+ --text-body-sm: var(--zone-product-body-sm-size, inherit);
1496
+ --leading-body-sm: var(--zone-product-body-sm-leading, inherit);
1497
+ --tracking-body-sm: var(--zone-product-body-sm-tracking, inherit);
1498
+ --text-body: var(--zone-product-body-size, inherit);
1499
+ --leading-body: var(--zone-product-body-leading, inherit);
1500
+ --tracking-body: var(--zone-product-body-tracking, inherit);
1501
+ --text-body-lg: var(--zone-product-body-lg-size, inherit);
1502
+ --leading-body-lg: var(--zone-product-body-lg-leading, inherit);
1503
+ --tracking-body-lg: var(--zone-product-body-lg-tracking, inherit);
1504
+ --text-subheading: var(--zone-product-subheading-size, inherit);
1505
+ --leading-subheading: var(--zone-product-subheading-leading, inherit);
1506
+ --tracking-subheading: var(--zone-product-subheading-tracking, inherit);
1507
+ --text-heading-sm: var(--zone-product-heading-sm-size, inherit);
1508
+ --leading-heading-sm: var(--zone-product-heading-sm-leading, inherit);
1509
+ --tracking-heading-sm: var(--zone-product-heading-sm-tracking, inherit);
1510
+ --text-heading: var(--zone-product-heading-size, inherit);
1511
+ --leading-heading: var(--zone-product-heading-leading, inherit);
1512
+ --tracking-heading: var(--zone-product-heading-tracking, inherit);
1513
+ --text-heading-lg: var(--zone-product-heading-lg-size, inherit);
1514
+ --leading-heading-lg: var(--zone-product-heading-lg-leading, inherit);
1515
+ --tracking-heading-lg: var(--zone-product-heading-lg-tracking, inherit);
1516
+ --text-display: var(--zone-product-display-size, var(--zone-product-heading-size, inherit));
1517
+ --leading-display: var(--zone-product-display-leading, inherit);
1518
+ --tracking-display: var(--zone-product-display-tracking, inherit);
1519
+ }
1520
+
1521
+ /* Zone: marketing — product never inherits marketing display */
1522
+ [data-zone="marketing"],
1523
+ .zone-marketing {
1524
+ font-size: var(--zone-marketing-body-size, 16px);
1525
+ line-height: var(--zone-marketing-body-leading, 1.5);
1526
+ font-weight: var(--zone-marketing-body-weight, 400);
1527
+ letter-spacing: var(--zone-marketing-body-tracking, -0.02px);
1528
+ --text-caption: var(--zone-marketing-caption-size, inherit);
1529
+ --leading-caption: var(--zone-marketing-caption-leading, inherit);
1530
+ --tracking-caption: var(--zone-marketing-caption-tracking, inherit);
1531
+ --text-body-sm: var(--zone-marketing-body-sm-size, inherit);
1532
+ --leading-body-sm: var(--zone-marketing-body-sm-leading, inherit);
1533
+ --tracking-body-sm: var(--zone-marketing-body-sm-tracking, inherit);
1534
+ --text-body: var(--zone-marketing-body-size, inherit);
1535
+ --leading-body: var(--zone-marketing-body-leading, inherit);
1536
+ --tracking-body: var(--zone-marketing-body-tracking, inherit);
1537
+ --text-body-lg: var(--zone-marketing-body-lg-size, inherit);
1538
+ --leading-body-lg: var(--zone-marketing-body-lg-leading, inherit);
1539
+ --tracking-body-lg: var(--zone-marketing-body-lg-tracking, inherit);
1540
+ --text-subheading: var(--zone-marketing-subheading-size, inherit);
1541
+ --leading-subheading: var(--zone-marketing-subheading-leading, inherit);
1542
+ --tracking-subheading: var(--zone-marketing-subheading-tracking, inherit);
1543
+ --text-heading-sm: var(--zone-marketing-heading-sm-size, inherit);
1544
+ --leading-heading-sm: var(--zone-marketing-heading-sm-leading, inherit);
1545
+ --tracking-heading-sm: var(--zone-marketing-heading-sm-tracking, inherit);
1546
+ --text-heading: var(--zone-marketing-heading-size, inherit);
1547
+ --leading-heading: var(--zone-marketing-heading-leading, inherit);
1548
+ --tracking-heading: var(--zone-marketing-heading-tracking, inherit);
1549
+ --text-heading-lg: var(--zone-marketing-heading-lg-size, inherit);
1550
+ --leading-heading-lg: var(--zone-marketing-heading-lg-leading, inherit);
1551
+ --tracking-heading-lg: var(--zone-marketing-heading-lg-tracking, inherit);
1552
+ --text-display: var(--zone-marketing-display-size, inherit);
1553
+ --leading-display: var(--zone-marketing-display-leading, inherit);
1554
+ --tracking-display: var(--zone-marketing-display-tracking, inherit);
1555
+ }
1556
+
1557
+ /* Product chrome must not use decorative gradients as action fills */
1558
+ [data-zone="product"] .btn-brand-default,
1559
+ .zone-product .btn-brand-default {
1560
+ /* intentional no-op: documents contract; action uses --primary only */
1561
+ }
1562
+
1563
+ /**
1564
+ * Brand carrier skin: Vercel (vercel) v1.0.0
1565
+ * darkDefault=false dualMode=true button=solid
1566
+ * fonts=1 zones=yes mode=global
1567
+ * Contract: roles.action → --primary; roles.brand → --brand-mark (never default CTA)
1568
+ */
1569
+
1570
+ /* Brand font faces */
1571
+ @font-face {
1572
+ font-family: "Geist Sans";
1573
+ src: url("https://cdn.jsdelivr.net/fontsource/fonts/geist-sans:vf@latest/latin-wght-normal.woff2")
1574
+ format("woff2");
1575
+ font-weight: 100 900;
1576
+ font-display: swap;
1577
+ }
1578
+
1579
+ html[data-brand="vercel"] {
1580
+ /* ── Color roles (carrier) ── */
1581
+ --role-canvas: 0 0% 98%;
1582
+ --role-canvas-fg: 0 0% 9%;
1583
+ --role-surface: 0 0% 100%;
1584
+ --role-surface-fg: 0 0% 9%;
1585
+ --role-action: 0 0% 9%;
1586
+ --role-action-fg: 0 0% 100%;
1587
+ --role-quiet: 0 0% 92%;
1588
+ --role-quiet-fg: 0 0% 30%;
1589
+ --role-muted: 0 0% 92%;
1590
+ --role-muted-fg: 0 0% 40%;
1591
+ --role-border: 0 0% 92%;
1592
+ --role-input: 0 0% 100%;
1593
+ --role-ring: 0 0% 9%;
1594
+
1595
+ /* ── shadcn bridge (primary = action CTA) ── */
1596
+ --background: 0 0% 98%;
1597
+ --foreground: 0 0% 9%;
1598
+ --card: 0 0% 100%;
1599
+ --card-foreground: 0 0% 9%;
1600
+ --popover: 0 0% 100%;
1601
+ --popover-foreground: 0 0% 9%;
1602
+ --primary: 0 0% 9%;
1603
+ --primary-foreground: 0 0% 100%;
1604
+ --secondary: 0 0% 92%;
1605
+ --secondary-foreground: 0 0% 30%;
1606
+ --muted: 0 0% 92%;
1607
+ --muted-foreground: 0 0% 40%;
1608
+ --accent: 0 0% 92%;
1609
+ --accent-foreground: 0 0% 30%;
1610
+ --destructive: 0 72% 51%;
1611
+ --destructive-foreground: 0 0% 100%;
1612
+ --border: 0 0% 92%;
1613
+ --input: 0 0% 100%;
1614
+ --ring: 0 0% 9%;
1615
+ --success: 133 50% 32%;
1616
+ --success-foreground: 0 0% 100%;
1617
+ --info: 0 0% 30%;
1618
+ --info-foreground: 0 0% 100%;
1619
+ --sidebar: 0 0% 100%;
1620
+ --sidebar-foreground: 0 0% 9%;
1621
+ --sidebar-primary: 0 0% 9%;
1622
+ --sidebar-primary-foreground: 0 0% 100%;
1623
+ --sidebar-accent: 0 0% 92%;
1624
+ --sidebar-accent-foreground: 0 0% 30%;
1625
+ --sidebar-border: 0 0% 92%;
1626
+ --sidebar-ring: 0 0% 9%;
1627
+ --brand-gradient: hsl(var(--primary));
1628
+ --brand-gradient-reverse: hsl(var(--primary));
1629
+ --brand-gradient-vertical: hsl(var(--primary));
1630
+ --brand-gradient-radial: hsl(var(--primary));
1631
+
1632
+ /* Recipe (action language + free elev/radii) */
1633
+ /* Shape slots */
1634
+ --btn-default-radius: 6px;
1635
+ --radius-button: 6px;
1636
+ --radius-buttons: 6px;
1637
+ --radius-md: 6px;
1638
+ --radius-card: 6px;
1639
+ --radius-lg: 6px;
1640
+ --radius-badge: 6px;
1641
+ --badge-default-radius: 6px;
1642
+ --radius-inputs: 6px;
1643
+ --input-radius: 6px;
1644
+ --radius-pill: 9999px;
1645
+
1646
+ /* Free elevation (carrier-provided CSS shadows) */
1647
+ --elevation-card: rgba(0, 0, 0, 0.08) 0px 0px 0px 1px, rgb(250, 250, 250) 0px 0px 0px 1px;
1648
+ --elevation-control: 0 0 #0000;
1649
+ --elevation-raised: rgba(0, 0, 0, 0.08) 0px 0px 0px 1px, rgb(250, 250, 250) 0px 0px 0px 1px;
1650
+ --shadow-xs: 0 0 #0000;
1651
+ --shadow-sm: rgba(0, 0, 0, 0.08) 0px 0px 0px 1px, rgb(250, 250, 250) 0px 0px 0px 1px;
1652
+ --shadow-md: rgba(0, 0, 0, 0.08) 0px 0px 0px 1px, rgb(250, 250, 250) 0px 0px 0px 1px;
1653
+ --shadow-lg: rgba(0, 0, 0, 0.08) 0px 0px 0px 1px, rgb(250, 250, 250) 0px 0px 0px 1px;
1654
+ --btn-default-shadow: 0 0 #0000;
1655
+ --btn-default-bg: hsl(var(--primary));
1656
+ --btn-default-fg: hsl(var(--primary-foreground));
1657
+ --btn-default-border-width: 0px;
1658
+ --btn-default-border: transparent;
1659
+ --btn-default-stroke-gradient: transparent;
1660
+ --btn-default-hover-bg: color-mix(in srgb, hsl(var(--primary)) 90%, transparent);
1661
+ --badge-default-bg: hsl(var(--secondary));
1662
+ --badge-default-fg: hsl(var(--secondary-foreground));
1663
+ --badge-default-border: transparent;
1664
+ --badge-default-hover-bg: color-mix(in srgb, hsl(var(--secondary)) 90%, white);
1665
+ --btn-default-padding-y: 0.5rem;
1666
+ --btn-default-padding-x: 0.875rem;
1667
+ --control-height-tiny: 1.25rem;
1668
+ --control-height-sm: 1.75rem;
1669
+ --control-height-md: 2rem;
1670
+ --control-height-lg: 2.5rem;
1671
+ --control-font-size-md: 0.8125rem;
1672
+
1673
+ /* Typography */
1674
+ --font-sans: "Geist Sans", "Geist", ui-sans-serif, system-ui, sans-serif;
1675
+ --font-heading: "Geist Sans", "Geist", ui-sans-serif, system-ui, sans-serif;
1676
+ --font-display: "Geist Sans", "Geist", ui-sans-serif, system-ui, sans-serif;
1677
+ --font-mono: "Geist Mono", ui-monospace, Menlo, monospace;
1678
+ --font-weight-heading: 450;
1679
+
1680
+ /* Zone type scales */
1681
+ --zone-product-caption-size: 13px;
1682
+ --zone-product-caption-leading: 1.54;
1683
+ --zone-product-caption-weight: 400;
1684
+ --zone-product-body-sm-size: 14px;
1685
+ --zone-product-body-sm-leading: 1.43;
1686
+ --zone-product-body-sm-weight: 400;
1687
+ --zone-product-body-size: 16px;
1688
+ --zone-product-body-leading: 1.5;
1689
+ --zone-product-body-weight: 400;
1690
+ --zone-product-heading-size: 30px;
1691
+ --zone-product-heading-leading: 1.1;
1692
+ --zone-product-heading-tracking: -1.5px;
1693
+ --zone-product-heading-weight: 500;
1694
+ --zone-marketing-body-size: 16px;
1695
+ --zone-marketing-body-leading: 1.5;
1696
+ --zone-marketing-body-weight: 400;
1697
+ --zone-marketing-heading-size: 30px;
1698
+ --zone-marketing-heading-leading: 1.1;
1699
+ --zone-marketing-heading-tracking: -1.5px;
1700
+ --zone-marketing-heading-weight: 450;
1701
+ --zone-marketing-heading-lg-size: 56px;
1702
+ --zone-marketing-heading-lg-leading: 1;
1703
+ --zone-marketing-heading-lg-tracking: -3.36px;
1704
+ --zone-marketing-heading-lg-weight: 450;
1705
+ --zone-marketing-display-size: 64px;
1706
+ --zone-marketing-display-leading: 1;
1707
+ --zone-marketing-display-tracking: -3.84px;
1708
+ --zone-marketing-display-weight: 450;
1709
+
1710
+ /* Taxonomy / decorative (not product CTA) */
1711
+ --brand-category-carbon: #000000;
1712
+ --brand-category-terminal: #297a3a;
1713
+ }
1714
+
1715
+ .dark,
1716
+ html.dark[data-brand="vercel"] {
1717
+ /* ── Color roles (carrier) ── */
1718
+ --role-canvas: 0 0% 0%;
1719
+ --role-canvas-fg: 0 0% 93%;
1720
+ --role-surface: 0 0% 4%;
1721
+ --role-surface-fg: 0 0% 93%;
1722
+ --role-action: 0 0% 100%;
1723
+ --role-action-fg: 0 0% 0%;
1724
+ --role-quiet: 0 0% 12%;
1725
+ --role-quiet-fg: 0 0% 93%;
1726
+ --role-muted: 0 0% 12%;
1727
+ --role-muted-fg: 0 0% 63%;
1728
+ --role-border: 0 0% 16%;
1729
+ --role-input: 0 0% 4%;
1730
+ --role-ring: 0 0% 100%;
1731
+
1732
+ /* ── shadcn bridge (primary = action CTA) ── */
1733
+ --background: 0 0% 0%;
1734
+ --foreground: 0 0% 93%;
1735
+ --card: 0 0% 4%;
1736
+ --card-foreground: 0 0% 93%;
1737
+ --popover: 0 0% 4%;
1738
+ --popover-foreground: 0 0% 93%;
1739
+ --primary: 0 0% 100%;
1740
+ --primary-foreground: 0 0% 0%;
1741
+ --secondary: 0 0% 12%;
1742
+ --secondary-foreground: 0 0% 93%;
1743
+ --muted: 0 0% 12%;
1744
+ --muted-foreground: 0 0% 63%;
1745
+ --accent: 0 0% 12%;
1746
+ --accent-foreground: 0 0% 93%;
1747
+ --destructive: 0 72% 51%;
1748
+ --destructive-foreground: 0 0% 100%;
1749
+ --border: 0 0% 16%;
1750
+ --input: 0 0% 4%;
1751
+ --ring: 0 0% 100%;
1752
+ --success: 133 49% 40%;
1753
+ --success-foreground: 0 0% 100%;
1754
+ --info: 0 0% 70%;
1755
+ --info-foreground: 0 0% 0%;
1756
+ --sidebar: 0 0% 4%;
1757
+ --sidebar-foreground: 0 0% 93%;
1758
+ --sidebar-primary: 0 0% 100%;
1759
+ --sidebar-primary-foreground: 0 0% 0%;
1760
+ --sidebar-accent: 0 0% 12%;
1761
+ --sidebar-accent-foreground: 0 0% 93%;
1762
+ --sidebar-border: 0 0% 16%;
1763
+ --sidebar-ring: 0 0% 100%;
1764
+ --brand-gradient: hsl(var(--primary));
1765
+ --brand-gradient-reverse: hsl(var(--primary));
1766
+ --brand-gradient-vertical: hsl(var(--primary));
1767
+ --brand-gradient-radial: hsl(var(--primary));
1768
+ }
1769
+
1770
+ /* Zone: product — product never inherits marketing display */
1771
+ [data-zone="product"],
1772
+ .zone-product {
1773
+ font-size: var(--zone-product-body-size, 16px);
1774
+ line-height: var(--zone-product-body-leading, 1.5);
1775
+ font-weight: var(--zone-product-body-weight, 400);
1776
+ --text-caption: var(--zone-product-caption-size, inherit);
1777
+ --leading-caption: var(--zone-product-caption-leading, inherit);
1778
+ --tracking-caption: var(--zone-product-caption-tracking, inherit);
1779
+ --text-body-sm: var(--zone-product-body-sm-size, inherit);
1780
+ --leading-body-sm: var(--zone-product-body-sm-leading, inherit);
1781
+ --tracking-body-sm: var(--zone-product-body-sm-tracking, inherit);
1782
+ --text-body: var(--zone-product-body-size, inherit);
1783
+ --leading-body: var(--zone-product-body-leading, inherit);
1784
+ --tracking-body: var(--zone-product-body-tracking, inherit);
1785
+ --text-body-lg: var(--zone-product-body-lg-size, inherit);
1786
+ --leading-body-lg: var(--zone-product-body-lg-leading, inherit);
1787
+ --tracking-body-lg: var(--zone-product-body-lg-tracking, inherit);
1788
+ --text-subheading: var(--zone-product-subheading-size, inherit);
1789
+ --leading-subheading: var(--zone-product-subheading-leading, inherit);
1790
+ --tracking-subheading: var(--zone-product-subheading-tracking, inherit);
1791
+ --text-heading-sm: var(--zone-product-heading-sm-size, inherit);
1792
+ --leading-heading-sm: var(--zone-product-heading-sm-leading, inherit);
1793
+ --tracking-heading-sm: var(--zone-product-heading-sm-tracking, inherit);
1794
+ --text-heading: var(--zone-product-heading-size, inherit);
1795
+ --leading-heading: var(--zone-product-heading-leading, inherit);
1796
+ --tracking-heading: var(--zone-product-heading-tracking, inherit);
1797
+ --text-heading-lg: var(--zone-product-heading-lg-size, inherit);
1798
+ --leading-heading-lg: var(--zone-product-heading-lg-leading, inherit);
1799
+ --tracking-heading-lg: var(--zone-product-heading-lg-tracking, inherit);
1800
+ --text-display: var(--zone-product-display-size, var(--zone-product-heading-size, inherit));
1801
+ --leading-display: var(--zone-product-display-leading, inherit);
1802
+ --tracking-display: var(--zone-product-display-tracking, inherit);
1803
+ }
1804
+
1805
+ /* Zone: marketing — product never inherits marketing display */
1806
+ [data-zone="marketing"],
1807
+ .zone-marketing {
1808
+ font-size: var(--zone-marketing-body-size, 16px);
1809
+ line-height: var(--zone-marketing-body-leading, 1.5);
1810
+ font-weight: var(--zone-marketing-body-weight, 400);
1811
+ --text-caption: var(--zone-marketing-caption-size, inherit);
1812
+ --leading-caption: var(--zone-marketing-caption-leading, inherit);
1813
+ --tracking-caption: var(--zone-marketing-caption-tracking, inherit);
1814
+ --text-body-sm: var(--zone-marketing-body-sm-size, inherit);
1815
+ --leading-body-sm: var(--zone-marketing-body-sm-leading, inherit);
1816
+ --tracking-body-sm: var(--zone-marketing-body-sm-tracking, inherit);
1817
+ --text-body: var(--zone-marketing-body-size, inherit);
1818
+ --leading-body: var(--zone-marketing-body-leading, inherit);
1819
+ --tracking-body: var(--zone-marketing-body-tracking, inherit);
1820
+ --text-body-lg: var(--zone-marketing-body-lg-size, inherit);
1821
+ --leading-body-lg: var(--zone-marketing-body-lg-leading, inherit);
1822
+ --tracking-body-lg: var(--zone-marketing-body-lg-tracking, inherit);
1823
+ --text-subheading: var(--zone-marketing-subheading-size, inherit);
1824
+ --leading-subheading: var(--zone-marketing-subheading-leading, inherit);
1825
+ --tracking-subheading: var(--zone-marketing-subheading-tracking, inherit);
1826
+ --text-heading-sm: var(--zone-marketing-heading-sm-size, inherit);
1827
+ --leading-heading-sm: var(--zone-marketing-heading-sm-leading, inherit);
1828
+ --tracking-heading-sm: var(--zone-marketing-heading-sm-tracking, inherit);
1829
+ --text-heading: var(--zone-marketing-heading-size, inherit);
1830
+ --leading-heading: var(--zone-marketing-heading-leading, inherit);
1831
+ --tracking-heading: var(--zone-marketing-heading-tracking, inherit);
1832
+ --text-heading-lg: var(--zone-marketing-heading-lg-size, inherit);
1833
+ --leading-heading-lg: var(--zone-marketing-heading-lg-leading, inherit);
1834
+ --tracking-heading-lg: var(--zone-marketing-heading-lg-tracking, inherit);
1835
+ --text-display: var(--zone-marketing-display-size, inherit);
1836
+ --leading-display: var(--zone-marketing-display-leading, inherit);
1837
+ --tracking-display: var(--zone-marketing-display-tracking, inherit);
1838
+ }
1839
+
1840
+ /* Product chrome must not use decorative gradients as action fills */
1841
+ [data-zone="product"] .btn-brand-default,
1842
+ .zone-product .btn-brand-default {
1843
+ /* intentional no-op: documents contract; action uses --primary only */
1844
+ }