@orange-halo/tokens 2.0.0 → 2.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.
@@ -0,0 +1,857 @@
1
+ {
2
+ "$description": "Dark Theme — warm cocoa base, cozy evening Orange Halo. Overrides tier 2 only; every colour references the palette. Applies when data-theme=\"dark\" is set.",
3
+ "grid": {
4
+ "$description": "The brand's layout grid. Spacing is multiples of half a unit; type sizes and line heights sit on it (see style-dictionary.config.js)",
5
+ "unit": "8px"
6
+ },
7
+ "color": {
8
+ "$description": "Warm palette with nostalgic character. Neutrals are always warm; blue is the deliberate accent.",
9
+ "orange": {
10
+ "50": "#fff3e0",
11
+ "100": "#ffe0b2",
12
+ "200": "#ffcc80",
13
+ "300": "#ffb74d",
14
+ "400": "#ffa726",
15
+ "500": "#ff9800",
16
+ "600": "#fb8c00",
17
+ "700": "#f57c00",
18
+ "800": "#ef6c00",
19
+ "900": "#c54300",
20
+ "950": "#9e3500",
21
+ "$description": "Primary brand orange — vibrant and accessible"
22
+ },
23
+ "honey": {
24
+ "50": "#fefaee",
25
+ "100": "#fdf3d4",
26
+ "200": "#fbe7a8",
27
+ "300": "#f8d56f",
28
+ "400": "#e8a838",
29
+ "500": "#d4922c",
30
+ "600": "#b87a24",
31
+ "700": "#8c5e1c",
32
+ "800": "#6b4815",
33
+ "900": "#3d3529",
34
+ "$description": "Warm highlight — golden warmth for accents and feedback"
35
+ },
36
+ "terracotta": {
37
+ "50": "#fbf5f0",
38
+ "100": "#f5e8de",
39
+ "200": "#e8cdbf",
40
+ "300": "#d4a88f",
41
+ "400": "#bf8060",
42
+ "500": "#a0522d",
43
+ "600": "#8b4726",
44
+ "700": "#6f3920",
45
+ "800": "#5a2f1a",
46
+ "900": "#452414",
47
+ "$description": "Deep accent — earthy depth for active states and emphasis"
48
+ },
49
+ "eucalyptus": {
50
+ "50": "#f0f6f6",
51
+ "100": "#e0ebeb",
52
+ "200": "#c2d7d7",
53
+ "300": "#9ebebe",
54
+ "400": "#7aa3a4",
55
+ "500": "#5f8a8b",
56
+ "600": "#4d7172",
57
+ "700": "#3f5c5d",
58
+ "800": "#344a4b",
59
+ "900": "#2a3c3d",
60
+ "$description": "Reserve palette — not used by semantic tokens"
61
+ },
62
+ "warm": {
63
+ "$description": "Warm neutral scale — cream to walnut, no blue-gray",
64
+ "cream": "#faf7f2",
65
+ "linen": "#f5f0e8",
66
+ "dawn": "#fffbf5",
67
+ "shell": "#fdf6ee",
68
+ "biscuit": "#f8efe4",
69
+ "parchment": "#ede8df",
70
+ "sand": "#e2dcd2",
71
+ "dune": "#c9c1b4",
72
+ "stone": "#a09080",
73
+ "taupe": "#8a7a68",
74
+ "driftwood": "#6b5d4d",
75
+ "bark": "#52463a",
76
+ "hickory": "#4a3f33",
77
+ "chestnut": "#44382c",
78
+ "walnut": "#3d3229",
79
+ "mocha": "#352e28",
80
+ "cocoa": "#2a2420",
81
+ "espresso": "#1f1a17"
82
+ },
83
+ "green": {
84
+ "50": "#f0f7f1",
85
+ "100": "#d9edd9",
86
+ "300": "#7ab87c",
87
+ "500": "#5a9a5c",
88
+ "600": "#4a8a4c",
89
+ "700": "#3d7340",
90
+ "900": "#2a3629",
91
+ "$description": "Success — warm-tinted green"
92
+ },
93
+ "red": {
94
+ "50": "#fdf4f3",
95
+ "100": "#f9e0dc",
96
+ "300": "#e08f8d",
97
+ "500": "#c75450",
98
+ "600": "#b54540",
99
+ "700": "#943836",
100
+ "900": "#3d2a29",
101
+ "$description": "Error — warm-tinted red"
102
+ },
103
+ "blue": {
104
+ "50": "#eef4f9",
105
+ "100": "#d6e4f0",
106
+ "200": "#a0b4c8",
107
+ "300": "#7a9ab8",
108
+ "400": "#5a82a8",
109
+ "500": "#3d5a80",
110
+ "600": "#354f70",
111
+ "700": "#2e4460",
112
+ "800": "#253850",
113
+ "$description": "Blue accent — modern counterbalance for CTAs"
114
+ },
115
+ "white": "#ffffff",
116
+ "brand": {
117
+ "$description": "Honey replaces orange on dark — orange.900 is too dark to read on cocoa",
118
+ "primary": "#e8a838",
119
+ "primaryHover": "#f8d56f",
120
+ "primaryActive": "#d4922c",
121
+ "primarySubtle": "#3d3229",
122
+ "highlight": "#f8d56f",
123
+ "highlightSubtle": "#3d3529"
124
+ },
125
+ "accent": {
126
+ "$description": "Blue, as in light — lighter steps so it reads on cocoa",
127
+ "default": "#a0b4c8",
128
+ "hover": "#d6e4f0",
129
+ "active": "#7a9ab8",
130
+ "subtle": "#253850",
131
+ "shadow": "#253850"
132
+ },
133
+ "feedback": {
134
+ "$description": "Feedback colors — warm-tinted",
135
+ "success": "#7ab87c",
136
+ "successSubtle": "#2a3629",
137
+ "error": "#e08f8d",
138
+ "errorHover": "#f9e0dc",
139
+ "errorSubtle": "#3d2a29",
140
+ "errorShadow": "#3d2a29",
141
+ "warning": "#f8d56f",
142
+ "warningSubtle": "#3d3529",
143
+ "info": "#a0b4c8",
144
+ "infoSubtle": "#253850"
145
+ },
146
+ "surface": {
147
+ "$description": "Surface system — designed surfaces, not flat planes",
148
+ "base": "#2a2420",
149
+ "raised": "#3d3229",
150
+ "sunlit": "#44382c",
151
+ "inset": "#1f1a17",
152
+ "highlight": "#4a3f33",
153
+ "overlay": "#0f0c0ab3",
154
+ "disabled": "#352e28",
155
+ "hover": "#4a3f33",
156
+ "activePressed": "#352e28",
157
+ "featuredStart": "#fffbf5",
158
+ "featuredMid": "#fdf6ee",
159
+ "featuredEnd": "#f8efe4",
160
+ "sheen": "#ffffff80",
161
+ "backdrop": "#3d322999"
162
+ },
163
+ "border": {
164
+ "$description": "Border colors — visible and intentional",
165
+ "default": "#8a7a68",
166
+ "subtle": "#6b5d4d",
167
+ "emphasis": "#a09080",
168
+ "strong": "#a09080",
169
+ "hover": "#c9c1b4",
170
+ "disabled": "#4a3f33",
171
+ "brand": "#e8a8384d",
172
+ "brandHover": "#c5430059",
173
+ "divider": "#e2d5c899"
174
+ },
175
+ "text": {
176
+ "$description": "Text colors — calm and readable, not stark",
177
+ "primary": "#f5f0e8",
178
+ "secondary": "#c9c1b4",
179
+ "disabled": "#6b5d4d",
180
+ "inverse": "#2a2420",
181
+ "link": "#e8a838",
182
+ "linkHover": "#f8d56f",
183
+ "linkRaised": "#e8a838",
184
+ "brand": "#e8a838",
185
+ "onBrand": "#2a2420",
186
+ "onAccent": "#2a2420",
187
+ "onSuccess": "#2a2420",
188
+ "onError": "#2a2420",
189
+ "onWarning": "#2a2420",
190
+ "onInfo": "#2a2420"
191
+ }
192
+ },
193
+ "font": {
194
+ "family": {
195
+ "$description": "Bricolage Grotesque — playful, crafted, warm",
196
+ "sans": "'Bricolage Grotesque', 'General Sans', -apple-system, BlinkMacSystemFont, sans-serif",
197
+ "display": "'Bricolage Grotesque', 'General Sans', sans-serif",
198
+ "mono": "'JetBrains Mono', 'Fira Code', ui-monospace, monospace"
199
+ },
200
+ "size": {
201
+ "$description": "Type scale on the brand's grid (grid.unit): every size is a multiple of half a unit. Strict: no size between xs and base",
202
+ "xs": "0.75rem",
203
+ "sm": "0.75rem",
204
+ "base": "1rem",
205
+ "lg": "1.25rem",
206
+ "xl": "1.5rem",
207
+ "2xl": "1.75rem",
208
+ "3xl": "2rem",
209
+ "4xl": "2.5rem",
210
+ "5xl": "3rem"
211
+ },
212
+ "weight": {
213
+ "$description": "Font weights for hierarchy",
214
+ "normal": "400",
215
+ "medium": "500",
216
+ "semibold": "600",
217
+ "bold": "700"
218
+ },
219
+ "lineHeight": {
220
+ "$description": "Generous line heights for readability",
221
+ "none": 1,
222
+ "tight": 1.25,
223
+ "snug": 1.35,
224
+ "normal": 1.5,
225
+ "relaxed": 1.65,
226
+ "loose": 1.8
227
+ },
228
+ "letterSpacing": {
229
+ "$description": "Letter spacing — loose for small, tight for display",
230
+ "tighter": "-0.02em",
231
+ "tight": "-0.01em",
232
+ "normal": "0",
233
+ "wide": "0.01em",
234
+ "wider": "0.02em",
235
+ "widest": "0.05em"
236
+ }
237
+ },
238
+ "radius": {
239
+ "$description": "Friendly and soft — not sharp, not overly pill-shaped",
240
+ "none": "0",
241
+ "xs": "4px",
242
+ "sm": "6px",
243
+ "md": "10px",
244
+ "lg": "14px",
245
+ "xl": "20px",
246
+ "full": "9999px"
247
+ },
248
+ "shadow": {
249
+ "$description": "Chunky offset shadow colours — darker than the surface, so they read as shadow on dark",
250
+ "none": "none",
251
+ "soft": "0 2px 8px rgba(61, 50, 41, 0.06), 0 1px 3px rgba(61, 50, 41, 0.08)",
252
+ "medium": "0 4px 16px rgba(61, 50, 41, 0.08), 0 2px 6px rgba(61, 50, 41, 0.06)",
253
+ "strong": "0 8px 24px rgba(61, 50, 41, 0.10), 0 4px 8px rgba(61, 50, 41, 0.06)",
254
+ "glow": "0 0 0 3px rgba(197, 67, 0, 0.2), 0 0 12px rgba(197, 67, 0, 0.1)",
255
+ "inset": "inset 0 1px 3px rgba(61, 50, 41, 0.08)",
256
+ "chunky": {
257
+ "$description": "Offset chunky shadows for playful tactile feel",
258
+ "primary": "#e8c4a0",
259
+ "secondary": "#d4c4b0",
260
+ "accent": "#a0b4c8",
261
+ "error": "#b545404d",
262
+ "driftwood": "#6b5d4d26",
263
+ "driftwoodHover": "#6b5d4d33",
264
+ "driftwoodDeep": "#6b5d4d40",
265
+ "walnut": "#3d322926"
266
+ },
267
+ "layered": {
268
+ "$description": "Layered surface shadows: soft drop shadows with a top highlight, so cards feel like physical objects",
269
+ "flat": "0 1px 2px rgba(61, 50, 41, 0.04), inset 0 1px 0 rgba(255, 255, 255, 0.6)",
270
+ "raised": "0 2px 6px rgba(61, 50, 41, 0.08), 0 6px 16px rgba(61, 50, 41, 0.05), inset 0 1px 0 rgba(255, 255, 255, 0.8)",
271
+ "lifted": "0 4px 12px rgba(61, 50, 41, 0.1), 0 12px 28px rgba(61, 50, 41, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.9)",
272
+ "pressed": "0 1px 3px rgba(61, 50, 41, 0.1), 0 3px 8px rgba(61, 50, 41, 0.06), inset 0 1px 2px rgba(61, 50, 41, 0.04)",
273
+ "focused": "0 2px 6px rgba(61, 50, 41, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.8)",
274
+ "sunlit": "0 2px 8px rgba(139, 69, 19, 0.08), 0 8px 24px rgba(139, 69, 19, 0.06), 0 0 20px rgba(197, 67, 0, 0.04), inset 0 1px 0 rgba(255, 255, 255, 0.9)",
275
+ "sunlitLifted": "0 4px 12px rgba(139, 69, 19, 0.12), 0 12px 32px rgba(139, 69, 19, 0.08), 0 0 28px rgba(197, 67, 0, 0.06), inset 0 1px 0 rgba(255, 255, 255, 1)",
276
+ "sunlitFocused": "0 2px 8px rgba(139, 69, 19, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.9)"
277
+ },
278
+ "primary": "#6b4815",
279
+ "secondary": "#1f1a17",
280
+ "accent": "#253850",
281
+ "error": "#3d2a29",
282
+ "neutral": "#6b5d4d26",
283
+ "neutralHover": "#6b5d4d33",
284
+ "overlay": "#6b5d4d40",
285
+ "field": "#3d322926"
286
+ },
287
+ "gradient": {
288
+ "$description": "Soft, nostalgic gradients — never high-contrast or flashy",
289
+ "sunlit": "linear-gradient(180deg, #fffbf5 0%, #fdf6ee 30%, #f8efe4 100%)",
290
+ "warm": "linear-gradient(135deg, #C54300 0%, #FF9800 100%)",
291
+ "nostalgic": "linear-gradient(180deg, #F5F0E8 0%, #EDE8DF 100%)"
292
+ },
293
+ "motion": {
294
+ "$description": "Relaxed, playful motion",
295
+ "duration": {
296
+ "quick": "100ms",
297
+ "snappy": "150ms",
298
+ "gentle": "200ms",
299
+ "relaxed": "300ms",
300
+ "slow": "400ms"
301
+ },
302
+ "easing": {
303
+ "gentle": [
304
+ 0.4,
305
+ 0,
306
+ 0.2,
307
+ 1
308
+ ],
309
+ "out": [
310
+ 0,
311
+ 0,
312
+ 0.2,
313
+ 1
314
+ ],
315
+ "in": [
316
+ 0.4,
317
+ 0,
318
+ 1,
319
+ 1
320
+ ],
321
+ "playful": [
322
+ 0.34,
323
+ 1.3,
324
+ 0.64,
325
+ 1
326
+ ]
327
+ },
328
+ "quick": "100ms",
329
+ "snappy": "150ms",
330
+ "gentle": "200ms",
331
+ "relaxed": "300ms",
332
+ "slow": "400ms",
333
+ "easeGentle": [
334
+ 0.4,
335
+ 0,
336
+ 0.2,
337
+ 1
338
+ ],
339
+ "easeOut": [
340
+ 0,
341
+ 0,
342
+ 0.2,
343
+ 1
344
+ ],
345
+ "easePlayful": [
346
+ 0.34,
347
+ 1.3,
348
+ 0.64,
349
+ 1
350
+ ]
351
+ },
352
+ "border": {
353
+ "width": {
354
+ "0": "0",
355
+ "1": "1px",
356
+ "2": "2px",
357
+ "$description": "Border widths",
358
+ "chunky": "2.5px"
359
+ }
360
+ },
361
+ "spacing": {
362
+ "0": "0",
363
+ "1": "0.25rem",
364
+ "2": "0.5rem",
365
+ "3": "0.75rem",
366
+ "4": "1rem",
367
+ "5": "1.25rem",
368
+ "6": "1.5rem",
369
+ "7": "1.75rem",
370
+ "8": "2rem",
371
+ "10": "2.5rem",
372
+ "12": "3rem",
373
+ "16": "4rem",
374
+ "20": "5rem",
375
+ "$description": "Generous spacing — breathing room, not dense. Multiples of half the brand's grid.unit (spacing.1 = half a unit, spacing.2 = one unit), computed per brand at build time by style-dictionary.config.js; the values written here are what an 8px grid gives. The x-5 steps fall between half-units: avoid them in new work",
376
+ "px": "1px",
377
+ "0-5": "0.125rem",
378
+ "1-5": "0.375rem",
379
+ "2-5": "0.625rem",
380
+ "3-5": "0.875rem",
381
+ "layout": {
382
+ "$description": "Generous layout spacing",
383
+ "page": "1.5rem",
384
+ "section": "3rem",
385
+ "stack": "1.25rem",
386
+ "inline": "1rem"
387
+ },
388
+ "component": {
389
+ "$description": "Component-level spacing",
390
+ "xs": "0.375rem",
391
+ "sm": "0.625rem",
392
+ "md": "0.875rem",
393
+ "lg": "1.25rem",
394
+ "xl": "1.75rem"
395
+ }
396
+ },
397
+ "size": {
398
+ "$description": "Fixed layout sizes: content widths and viewport breakpoints",
399
+ "container": {
400
+ "$description": "Content max-widths",
401
+ "sm": "640px",
402
+ "md": "768px",
403
+ "lg": "1024px",
404
+ "xl": "1280px"
405
+ },
406
+ "breakpoint": {
407
+ "$description": "Viewport widths for @media queries. CSS can't read custom properties in a media query, so components write the value; check:tokens fails any (min|max)-width that isn't one of these (or one pixel either side, for adjoining ranges).",
408
+ "xs": "480px",
409
+ "sm": "640px",
410
+ "md": "768px",
411
+ "lg": "1024px"
412
+ }
413
+ },
414
+ "zIndex": {
415
+ "0": 0,
416
+ "10": 10,
417
+ "20": 20,
418
+ "$description": "Z-index layering",
419
+ "dropdown": 1000,
420
+ "sticky": 1100,
421
+ "modal": 1200,
422
+ "popover": 1300,
423
+ "tooltip": 1400
424
+ },
425
+ "typography": {
426
+ "$description": "Bricolage Grotesque — playful, crafted, warm",
427
+ "heading": {
428
+ "fontFamily": "'Bricolage Grotesque', 'General Sans', sans-serif",
429
+ "h1": {
430
+ "fontSize": "2.5rem",
431
+ "fontWeight": "700",
432
+ "lineHeight": 1.2,
433
+ "letterSpacing": "-0.02em"
434
+ },
435
+ "h2": {
436
+ "fontSize": "2rem",
437
+ "fontWeight": "700",
438
+ "lineHeight": 1.25,
439
+ "letterSpacing": "-0.01em"
440
+ },
441
+ "h3": {
442
+ "fontSize": "1.75rem",
443
+ "fontWeight": "600",
444
+ "lineHeight": 1.4286,
445
+ "letterSpacing": "-0.01em"
446
+ },
447
+ "h4": {
448
+ "fontSize": "1.5rem",
449
+ "fontWeight": "600",
450
+ "lineHeight": 1.3333,
451
+ "letterSpacing": "0"
452
+ },
453
+ "h5": {
454
+ "fontSize": "1.25rem",
455
+ "fontWeight": "500",
456
+ "lineHeight": 1.6
457
+ },
458
+ "h6": {
459
+ "fontSize": "1rem",
460
+ "fontWeight": "500",
461
+ "lineHeight": 1.5
462
+ }
463
+ },
464
+ "body": {
465
+ "fontFamily": "'Bricolage Grotesque', 'General Sans', -apple-system, BlinkMacSystemFont, sans-serif",
466
+ "xl": {
467
+ "$description": "Lead paragraphs and hero subtitles",
468
+ "fontSize": "1.5rem",
469
+ "fontWeight": "400",
470
+ "lineHeight": 1.6667
471
+ },
472
+ "lg": {
473
+ "fontSize": "1.25rem",
474
+ "fontWeight": "400",
475
+ "lineHeight": 1.6
476
+ },
477
+ "base": {
478
+ "fontSize": "1rem",
479
+ "fontWeight": "400",
480
+ "lineHeight": 1.5
481
+ },
482
+ "sm": {
483
+ "fontSize": "0.75rem",
484
+ "fontWeight": "400",
485
+ "lineHeight": 1.6667,
486
+ "letterSpacing": "0.01em"
487
+ },
488
+ "xs": {
489
+ "fontSize": "0.75rem",
490
+ "fontWeight": "400",
491
+ "lineHeight": 1.6667,
492
+ "letterSpacing": "0.01em"
493
+ }
494
+ },
495
+ "label": {
496
+ "fontFamily": "'Bricolage Grotesque', 'General Sans', -apple-system, BlinkMacSystemFont, sans-serif",
497
+ "base": {
498
+ "fontSize": "1rem",
499
+ "fontWeight": "500",
500
+ "lineHeight": 1.5,
501
+ "letterSpacing": "0.01em"
502
+ },
503
+ "sm": {
504
+ "fontSize": "0.75rem",
505
+ "fontWeight": "500",
506
+ "lineHeight": 1.6667,
507
+ "letterSpacing": "0.01em"
508
+ }
509
+ },
510
+ "eyebrow": {
511
+ "$description": "Small uppercase line above a heading (set text-transform: uppercase alongside)",
512
+ "fontFamily": "'Bricolage Grotesque', 'General Sans', -apple-system, BlinkMacSystemFont, sans-serif",
513
+ "fontSize": "1rem",
514
+ "fontWeight": "500",
515
+ "letterSpacing": "0.05em"
516
+ },
517
+ "control": {
518
+ "$description": "Buttons, field labels, legends, select triggers and options, choice labels",
519
+ "fontFamily": "'Bricolage Grotesque', 'General Sans', -apple-system, BlinkMacSystemFont, sans-serif",
520
+ "fontWeight": "600",
521
+ "letterSpacing": "0.01em",
522
+ "fontSize": {
523
+ "sm": "1rem",
524
+ "md": "1.25rem",
525
+ "lg": "1.5rem"
526
+ }
527
+ },
528
+ "emphasis": {
529
+ "$description": "Inline emphasis inside body text: links, the selected option",
530
+ "fontWeight": "600"
531
+ },
532
+ "code": {
533
+ "fontFamily": "'JetBrains Mono', 'Fira Code', ui-monospace, monospace",
534
+ "fontSize": "1rem",
535
+ "lineHeight": 1.5
536
+ }
537
+ },
538
+ "layout": {
539
+ "$description": "Layout sizes",
540
+ "container": {
541
+ "$description": "Max-width of a centred content column (oh-container, oh-hero)",
542
+ "sm": "640px",
543
+ "md": "768px",
544
+ "lg": "1024px",
545
+ "xl": "1280px"
546
+ }
547
+ },
548
+ "shape": {
549
+ "$description": "Friendly soft corners",
550
+ "control": "10px",
551
+ "container": "10px",
552
+ "large": "14px",
553
+ "compact": "6px",
554
+ "tight": "4px",
555
+ "pill": "9999px"
556
+ },
557
+ "elevation": {
558
+ "$description": "Black-based shadows — warm-brown shadows vanish on cocoa",
559
+ "none": "none",
560
+ "soft": "0 2px 8px rgba(0, 0, 0, 0.25)",
561
+ "medium": "0 4px 16px rgba(0, 0, 0, 0.3)",
562
+ "strong": "0 8px 24px rgba(0, 0, 0, 0.4)",
563
+ "glow": "0 0 0 3px rgba(197, 67, 0, 0.2), 0 0 12px rgba(197, 67, 0, 0.1)",
564
+ "inset": "inset 0 1px 3px rgba(0, 0, 0, 0.3)",
565
+ "surface": {
566
+ "$description": "Card surfaces, by state. Featured is the sunlit card",
567
+ "flat": "0 1px 2px rgba(61, 50, 41, 0.04), inset 0 1px 0 rgba(255, 255, 255, 0.6)",
568
+ "raised": "0 2px 6px rgba(61, 50, 41, 0.08), 0 6px 16px rgba(61, 50, 41, 0.05), inset 0 1px 0 rgba(255, 255, 255, 0.8)",
569
+ "lifted": "0 4px 12px rgba(61, 50, 41, 0.1), 0 12px 28px rgba(61, 50, 41, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.9)",
570
+ "pressed": "0 1px 3px rgba(61, 50, 41, 0.1), 0 3px 8px rgba(61, 50, 41, 0.06), inset 0 1px 2px rgba(61, 50, 41, 0.04)",
571
+ "focused": "0 2px 6px rgba(61, 50, 41, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.8)",
572
+ "featured": "0 2px 8px rgba(139, 69, 19, 0.08), 0 8px 24px rgba(139, 69, 19, 0.06), 0 0 20px rgba(197, 67, 0, 0.04), inset 0 1px 0 rgba(255, 255, 255, 0.9)",
573
+ "featuredLifted": "0 4px 12px rgba(139, 69, 19, 0.12), 0 12px 32px rgba(139, 69, 19, 0.08), 0 0 28px rgba(197, 67, 0, 0.06), inset 0 1px 0 rgba(255, 255, 255, 1)",
574
+ "featuredFocused": "0 2px 8px rgba(139, 69, 19, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.9)"
575
+ },
576
+ "offset": {
577
+ "$description": "How far solid offset shadows sit from the element, from pressed (xs) to dialogs (2xl). The colour comes from shadow.*. A flat brand sets every step to 0",
578
+ "xs": "1px",
579
+ "sm": "2px",
580
+ "md": "3px",
581
+ "lg": "4px",
582
+ "xl": "5px",
583
+ "2xl": "6px"
584
+ }
585
+ },
586
+ "lift": {
587
+ "$description": "How far elements move on hover (negative: up and left, towards the viewer) and when pressed (positive: into the page). A still brand sets every step to 0",
588
+ "hoverSm": "-1px",
589
+ "hoverMd": "-2px",
590
+ "pressSm": "1px",
591
+ "pressMd": "2px"
592
+ },
593
+ "stroke": {
594
+ "$description": "Border widths by role",
595
+ "control": "2.5px",
596
+ "surface": "1px",
597
+ "divider": "1px"
598
+ },
599
+ "decoration": {
600
+ "$description": "Link underlines. Orange Halo's are dashed: a dash, then a gap, repeating every period. A solid underline sets dash and period to the same value",
601
+ "underlineThickness": "2px",
602
+ "underlineFocusThickness": "3px",
603
+ "underlineDash": "4px",
604
+ "underlinePeriod": "8px"
605
+ },
606
+ "focus": {
607
+ "$description": "Warm, friendly focus ring",
608
+ "ringWidth": "3px",
609
+ "ringOffset": "2px",
610
+ "ringColor": "#e8a838",
611
+ "glowColor": "#e8a83833"
612
+ },
613
+ "button": {
614
+ "$description": "Button — chunky, tactile, playful with offset shadows",
615
+ "base": {
616
+ "fontFamily": "'Bricolage Grotesque', 'General Sans', -apple-system, BlinkMacSystemFont, sans-serif",
617
+ "fontWeight": "600",
618
+ "letterSpacing": "0.01em",
619
+ "borderRadius": "10px",
620
+ "borderWidth": "2.5px",
621
+ "transitionDuration": "150ms",
622
+ "transitionEasing": [
623
+ 0.34,
624
+ 1.3,
625
+ 0.64,
626
+ 1
627
+ ]
628
+ },
629
+ "size": {
630
+ "$description": "Matches oh-button.ts, which reads these. Minimum 16px text",
631
+ "sm": {
632
+ "fontSize": "1rem",
633
+ "paddingX": "1rem",
634
+ "paddingY": "0.5rem",
635
+ "minHeight": "40px",
636
+ "gap": "0.5rem"
637
+ },
638
+ "md": {
639
+ "fontSize": "1.25rem",
640
+ "paddingX": "1.5rem",
641
+ "paddingY": "0.75rem",
642
+ "minHeight": "48px",
643
+ "gap": "0.5rem"
644
+ },
645
+ "lg": {
646
+ "fontSize": "1.5rem",
647
+ "paddingX": "2rem",
648
+ "paddingY": "1rem",
649
+ "minHeight": "56px",
650
+ "gap": "0.625rem"
651
+ }
652
+ },
653
+ "variant": {
654
+ "primary": {
655
+ "$description": "Primary — warm orange, chunky tactile shadow",
656
+ "background": "#e8a838",
657
+ "backgroundHover": "#f8d56f",
658
+ "backgroundActive": "#d4922c",
659
+ "color": "#2a2420",
660
+ "borderColor": "#e8a838",
661
+ "shadowColor": "#6b4815"
662
+ },
663
+ "secondary": {
664
+ "$description": "Secondary — cream surface with emphasis border",
665
+ "background": "#2a2420",
666
+ "backgroundHover": "#4a3f33",
667
+ "backgroundActive": "#352e28",
668
+ "color": "#f5f0e8",
669
+ "borderColor": "#a09080",
670
+ "shadowColor": "#1f1a17"
671
+ },
672
+ "accent": {
673
+ "$description": "Accent — blue, modern counterbalance",
674
+ "background": "#a0b4c8",
675
+ "backgroundHover": "#d6e4f0",
676
+ "backgroundActive": "#7a9ab8",
677
+ "color": "#2a2420",
678
+ "borderColor": "#a0b4c8",
679
+ "shadowColor": "#253850"
680
+ }
681
+ },
682
+ "focus": {
683
+ "$description": "Focus is an underline in focus.ringColor; glow is decoration",
684
+ "ringColor": "#e8a838",
685
+ "glowColor": "#e8a83833"
686
+ }
687
+ },
688
+ "input": {
689
+ "$description": "Input — chunky border, inset shadow, tactile feel",
690
+ "base": {
691
+ "fontFamily": "'Bricolage Grotesque', 'General Sans', -apple-system, BlinkMacSystemFont, sans-serif",
692
+ "fontSize": "1.25rem",
693
+ "lineHeight": 1.5,
694
+ "borderRadius": "10px",
695
+ "borderWidth": "2.5px",
696
+ "transitionDuration": "150ms",
697
+ "transitionEasing": [
698
+ 0.4,
699
+ 0,
700
+ 0.2,
701
+ 1
702
+ ]
703
+ },
704
+ "size": {
705
+ "md": {
706
+ "paddingX": "1rem",
707
+ "paddingY": "0.75rem",
708
+ "minHeight": "48px"
709
+ }
710
+ },
711
+ "state": {
712
+ "default": {
713
+ "background": "#2a2420",
714
+ "borderColor": "#a09080",
715
+ "color": "#f5f0e8",
716
+ "placeholderColor": "#c9c1b4",
717
+ "shadowColor": "#1f1a17"
718
+ },
719
+ "hover": {
720
+ "borderColor": "#c9c1b4"
721
+ },
722
+ "focus": {
723
+ "background": "#4a3f33",
724
+ "borderColor": "#e8a838",
725
+ "focusRingColor": "#e8a838"
726
+ },
727
+ "error": {
728
+ "borderColor": "#e08f8d",
729
+ "background": "#3d2a29",
730
+ "shadowColor": "#3d2a29"
731
+ }
732
+ }
733
+ },
734
+ "card": {
735
+ "$description": "Card — raised surface with visible frame",
736
+ "base": {
737
+ "background": "#3d3229",
738
+ "borderRadius": "14px",
739
+ "borderWidth": "1px",
740
+ "borderColor": "#8a7a68",
741
+ "shadow": "0 2px 8px rgba(0, 0, 0, 0.25)",
742
+ "padding": "1.25rem"
743
+ },
744
+ "interactive": {
745
+ "$description": "Interactive card — gentle warmth on hover",
746
+ "transitionDuration": "200ms",
747
+ "transitionEasing": [
748
+ 0.4,
749
+ 0,
750
+ 0.2,
751
+ 1
752
+ ],
753
+ "backgroundHover": "#2a2420",
754
+ "borderColorHover": "#e8a8384d",
755
+ "shadowHover": "0 4px 16px rgba(0, 0, 0, 0.3)"
756
+ },
757
+ "raised": {
758
+ "$description": "Raised card (default) — subtle top-lit gradient",
759
+ "gradientStart": "#4a3f33",
760
+ "gradientMid": "#2a2420",
761
+ "gradientEnd": "#3d3229",
762
+ "borderColor": "#8a7a68"
763
+ },
764
+ "flat": {
765
+ "$description": "Flat card — border-led, minimal shadow",
766
+ "gradientStart": "#2a2420",
767
+ "gradientEnd": "#3d3229",
768
+ "borderColor": "#8a7a68"
769
+ },
770
+ "sunlit": {
771
+ "$description": "Sunlit card — featured with gradient",
772
+ "background": "linear-gradient(180deg, #fffbf5 0%, #fdf6ee 30%, #f8efe4 100%)",
773
+ "gradientStart": "#fffbf5",
774
+ "gradientMid": "#fdf6ee",
775
+ "gradientEnd": "#f8efe4",
776
+ "borderColor": "#e8a8384d",
777
+ "borderColorHover": "#c5430059",
778
+ "shadow": "0 4px 16px rgba(0, 0, 0, 0.3)"
779
+ },
780
+ "section": {
781
+ "$description": "Card header and footer",
782
+ "dividerColor": "#e2d5c899",
783
+ "headerGradientStart": "#ffffff80",
784
+ "headerGradientEnd": "#ffffff00"
785
+ }
786
+ },
787
+ "progress": {
788
+ "$description": "Progress — chunky pill track",
789
+ "track": {
790
+ "insetShadow": "#0000000f"
791
+ },
792
+ "inverse": {
793
+ "$description": "On brand/accent backgrounds (e.g. journey hero). Fill is cream so it reads at 3.7:1 against the track.",
794
+ "trackBackground": "#ffffff26",
795
+ "trackBorder": "#ffffff4d",
796
+ "fill": "#2a2420"
797
+ }
798
+ },
799
+ "badge": {
800
+ "$description": "Badge — small status indicators",
801
+ "base": {
802
+ "fontFamily": "'Bricolage Grotesque', 'General Sans', -apple-system, BlinkMacSystemFont, sans-serif",
803
+ "fontSize": "1rem",
804
+ "fontWeight": "500",
805
+ "letterSpacing": "0.01em",
806
+ "borderRadius": "6px",
807
+ "paddingX": "0.625rem",
808
+ "paddingY": "0.25rem"
809
+ },
810
+ "variant": {
811
+ "brand": {
812
+ "background": "#3d3229",
813
+ "color": "#e8a838"
814
+ },
815
+ "accent": {
816
+ "background": "#253850",
817
+ "color": "#a0b4c8"
818
+ },
819
+ "success": {
820
+ "background": "#2a3629",
821
+ "color": "#7ab87c"
822
+ },
823
+ "error": {
824
+ "background": "#3d2a29",
825
+ "color": "#e08f8d"
826
+ },
827
+ "warning": {
828
+ "background": "#3d3529",
829
+ "color": "#f8d56f"
830
+ },
831
+ "neutral": {
832
+ "background": "#1f1a17",
833
+ "color": "#c9c1b4"
834
+ }
835
+ }
836
+ },
837
+ "link": {
838
+ "$description": "Link — warm brand color",
839
+ "color": "#e8a838",
840
+ "colorHover": "#f8d56f",
841
+ "textDecoration": "underline",
842
+ "textDecorationHover": "none",
843
+ "inverse": {
844
+ "$description": "On brand/accent backgrounds",
845
+ "focusBackground": "#0000001a"
846
+ }
847
+ },
848
+ "modal": {
849
+ "$description": "Modal dialog",
850
+ "overlay": "#3d322999"
851
+ },
852
+ "closeButton": {
853
+ "$description": "Icon-only close buttons in alerts and modals",
854
+ "backgroundHover": "#00000014",
855
+ "shadowHover": "#00000026"
856
+ }
857
+ }