@almadar/ui 6.29.0 → 6.30.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.
Files changed (52) hide show
  1. package/dist/{EntityBindingContext-UyeCfEBS.d.cts → EntityBindingContext-ChCONv2W.d.cts} +1 -50
  2. package/dist/{EntityBindingContext-UyeCfEBS.d.ts → EntityBindingContext-ChCONv2W.d.ts} +1 -50
  3. package/dist/avl/index.cjs +5 -6
  4. package/dist/avl/index.js +5 -6
  5. package/dist/components/index.cjs +4 -5
  6. package/dist/components/index.js +4 -5
  7. package/dist/context/index.cjs +135 -105
  8. package/dist/context/index.d.cts +2 -60
  9. package/dist/context/index.d.ts +2 -60
  10. package/dist/context/index.js +135 -105
  11. package/dist/lib/index.cjs +455 -0
  12. package/dist/lib/index.d.cts +42 -1
  13. package/dist/lib/index.d.ts +42 -1
  14. package/dist/lib/index.js +438 -1
  15. package/dist/marketing/index.cjs +4 -5
  16. package/dist/marketing/index.js +4 -5
  17. package/dist/providers/index.cjs +143 -116
  18. package/dist/providers/index.d.cts +1 -1
  19. package/dist/providers/index.d.ts +1 -1
  20. package/dist/providers/index.js +143 -116
  21. package/dist/runtime/index.cjs +5 -6
  22. package/dist/runtime/index.d.cts +2 -2
  23. package/dist/runtime/index.d.ts +2 -2
  24. package/dist/runtime/index.js +5 -6
  25. package/dist/themeTokens-DVRwufw8.d.cts +112 -0
  26. package/dist/themeTokens-DVRwufw8.d.ts +112 -0
  27. package/package.json +6 -5
  28. package/scripts/audit-tailwind-safelist.ts +4 -0
  29. package/tailwind-preset.cjs +155 -28
  30. package/themes/almadar-website.css +37 -107
  31. package/themes/almadar.css +37 -108
  32. package/themes/atelier.css +145 -240
  33. package/themes/bloomberg-dense.css +145 -252
  34. package/themes/clay.css +39 -137
  35. package/themes/comic.css +39 -145
  36. package/themes/corporate.css +39 -131
  37. package/themes/game-adventure.css +22 -87
  38. package/themes/game-rpg.css +22 -84
  39. package/themes/game-sci-fi.css +22 -88
  40. package/themes/game-ui-pack.css +22 -85
  41. package/themes/gazette.css +43 -135
  42. package/themes/glass.css +39 -148
  43. package/themes/kiosk.css +51 -146
  44. package/themes/linear-clean.css +145 -215
  45. package/themes/minimalist.css +39 -125
  46. package/themes/neon.css +39 -132
  47. package/themes/notion-editorial.css +145 -215
  48. package/themes/prism.css +37 -100
  49. package/themes/retro.css +39 -130
  50. package/themes/terminal.css +61 -152
  51. package/themes/trait-wars.css +121 -285
  52. package/themes/wireframe.css +41 -128
@@ -1,58 +1,20 @@
1
1
  /**
2
- * Corporate Theme "Enterprise Trust"
3
- *
4
- * The conservative B2B palette business clients actually pick: classic
5
- * corporate blue on crisp white cards over a cool-gray canvas, navy-slate
6
- * text, and a true enterprise dark mode in deep navy with softened blues.
7
- * Everything is restrained — hairline 1px borders, 6px radii, small
8
- * flat shadows with no glow, system fonts at 400/500/600 weights, and
9
- * short standard-eased transitions with no hover theatrics. Generous
10
- * whitespace signals confidence, not density.
2
+ * GENERATEDdo not edit by hand.
3
+ * Source: packages/almadar-core/themes/corporate.json
4
+ * Regenerate: node tools/almadar-pattern-sync/dist/index.js themes (or `almadar-sync themes`)
11
5
  */
12
6
 
13
- /* ==========================================================================
14
- * LIGHT MODE
15
- * ========================================================================== */
16
7
  [data-theme="corporate-light"] {
17
- /* Shadows - Small, flat, neutral (no glow, no offset) */
18
- --shadow-main: 0 1px 3px rgba(15, 23, 42, 0.08), 0 1px 2px rgba(15, 23, 42, 0.04);
19
- --shadow-sm: 0 1px 2px rgba(15, 23, 42, 0.06);
20
- --shadow-lg:
21
- 0 4px 12px rgba(15, 23, 42, 0.10), 0 2px 4px rgba(15, 23, 42, 0.05);
22
- --shadow-inner: inset 0 1px 2px rgba(15, 23, 42, 0.05);
23
- --shadow-none: none;
24
- --shadow-hover:
25
- 0 4px 10px rgba(15, 23, 42, 0.10), 0 1px 3px rgba(15, 23, 42, 0.06);
26
- --shadow-active: 0 1px 2px rgba(15, 23, 42, 0.08);
27
-
28
- /* Border radius - Restrained 6px rhythm */
29
- --radius-none: 0px;
30
- --radius-sm: 4px;
31
- --radius-md: 6px;
32
- --radius-lg: 8px;
33
- --radius-xl: 10px;
34
- --radius-full: 9999px;
35
-
36
- /* Border width - Hairline */
37
- --border-width: 1px;
38
- --border-width-thin: 1px;
39
- --border-width-thick: 2px;
40
-
41
- /* Colors - Classic corporate blue on cool gray */
42
8
  --color-primary: #1d4ed8;
43
9
  --color-primary-hover: #1e40af;
44
10
  --color-primary-foreground: #ffffff;
45
-
46
11
  --color-secondary: #e2e8f0;
47
12
  --color-secondary-hover: #cbd5e1;
48
13
  --color-secondary-foreground: #1e293b;
49
-
50
14
  --color-accent: #0369a1;
51
15
  --color-accent-foreground: #ffffff;
52
-
53
16
  --color-muted: #eef1f6;
54
17
  --color-muted-foreground: #5b6b80;
55
-
56
18
  --color-background: #f4f6f9;
57
19
  --color-foreground: #1e293b;
58
20
  --color-card: #ffffff;
@@ -61,8 +23,6 @@
61
23
  --color-border: #d7dee8;
62
24
  --color-input: #c3cdd9;
63
25
  --color-ring: #1d4ed8;
64
-
65
- /* Semantic colors */
66
26
  --color-error: #b91c1c;
67
27
  --color-error-foreground: #ffffff;
68
28
  --color-success: #15803d;
@@ -71,40 +31,41 @@
71
31
  --color-warning-foreground: #ffffff;
72
32
  --color-info: #1d4ed8;
73
33
  --color-info-foreground: #ffffff;
74
-
75
- /* Typography - System stack, regular/medium/semibold */
76
- --font-family:
77
- -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Helvetica Neue", Arial, sans-serif;
34
+ --radius-none: 0px;
35
+ --radius-sm: 4px;
36
+ --radius-md: 6px;
37
+ --radius-lg: 8px;
38
+ --radius-xl: 10px;
39
+ --radius-full: 9999px;
40
+ --border-width: 1px;
41
+ --border-width-thin: 1px;
42
+ --border-width-thick: 2px;
43
+ --font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Helvetica Neue", Arial, sans-serif;
78
44
  --font-weight-normal: 400;
79
45
  --font-weight-medium: 500;
80
46
  --font-weight-bold: 600;
81
47
  --letter-spacing: normal;
82
48
  --line-height: 1.5;
83
-
84
- /* Icon styling - Thin lucide strokes */
85
- --icon-stroke-width: 1.75;
86
49
  --icon-color: #475569;
87
-
88
- /* Transitions - Short, standard ease */
89
50
  --transition-fast: 100ms;
90
51
  --transition-normal: 150ms;
91
52
  --transition-slow: 200ms;
92
53
  --transition-timing: cubic-bezier(0.4, 0, 0.2, 1);
93
-
94
- /* Hover/Active transforms - None; state shows via color/shadow only */
95
54
  --hover-scale: 1.0;
96
55
  --hover-translate-y: 0;
97
56
  --hover-translate-x: 0;
98
57
  --active-scale: 0.99;
99
58
  --active-translate-y: 0;
100
-
101
- /* Focus ring */
102
59
  --focus-ring-width: 2px;
103
60
  --focus-ring-offset: 2px;
104
61
  --focus-ring-color: #1d4ed8;
105
-
106
- /* Layer 1 backfill (preserves current visual output, see themes/_contract.md) */
107
- /* Density axis spacing scale */
62
+ --shadow-main: 0 1px 3px rgba(15, 23, 42, 0.08), 0 1px 2px rgba(15, 23, 42, 0.04);
63
+ --shadow-sm: 0 1px 2px rgba(15, 23, 42, 0.06);
64
+ --shadow-lg: 0 4px 12px rgba(15, 23, 42, 0.10), 0 2px 4px rgba(15, 23, 42, 0.05);
65
+ --shadow-inner: inset 0 1px 2px rgba(15, 23, 42, 0.05);
66
+ --shadow-none: none;
67
+ --shadow-hover: 0 4px 10px rgba(15, 23, 42, 0.10), 0 1px 3px rgba(15, 23, 42, 0.06);
68
+ --shadow-active: 0 1px 2px rgba(15, 23, 42, 0.08);
108
69
  --space-0: 0px;
109
70
  --space-1: 4px;
110
71
  --space-2: 8px;
@@ -118,7 +79,6 @@
118
79
  --space-10: 40px;
119
80
  --space-11: 44px;
120
81
  --space-12: 48px;
121
- /* Density axis — per-element heights (slightly generous, enterprise comfort) */
122
82
  --button-height-sm: 30px;
123
83
  --button-height-md: 38px;
124
84
  --button-height-lg: 46px;
@@ -128,17 +88,14 @@
128
88
  --row-height-compact: 36px;
129
89
  --row-height-normal: 44px;
130
90
  --row-height-spacious: 52px;
131
- /* Density axis — per-element padding */
132
91
  --card-padding-sm: 16px;
133
92
  --card-padding-md: 20px;
134
93
  --card-padding-lg: 28px;
135
94
  --dialog-padding: 28px;
136
95
  --section-gap: 40px;
137
- /* Type axis — family triplet (aliases existing --font-family for backward compat) */
138
96
  --font-family-display: var(--font-family);
139
97
  --font-family-body: var(--font-family);
140
98
  --font-family-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
141
- /* Type axis — size scale */
142
99
  --text-xs: 12px;
143
100
  --leading-xs: 16px;
144
101
  --text-sm: 14px;
@@ -159,7 +116,6 @@
159
116
  --leading-display-1: 52px;
160
117
  --text-display-2: 60px;
161
118
  --leading-display-2: 64px;
162
- /* Type axis — intent mapping */
163
119
  --intent-heading-major-size: var(--text-2xl);
164
120
  --intent-heading-major-weight: var(--font-weight-bold);
165
121
  --intent-heading-major-leading: var(--leading-2xl);
@@ -181,78 +137,41 @@
181
137
  --intent-numeric-size: var(--text-sm);
182
138
  --intent-numeric-weight: var(--font-weight-medium);
183
139
  --intent-numeric-leading: var(--leading-sm);
184
- /* Motion axis — duration palette */
185
140
  --duration-instant: 0ms;
186
141
  --duration-fast: var(--transition-fast);
187
142
  --duration-normal: var(--transition-normal);
188
143
  --duration-slow: var(--transition-slow);
189
144
  --duration-dramatic: 400ms;
190
- /* Motion axis — easing palette */
191
145
  --easing-linear: linear;
192
146
  --easing-standard: var(--transition-timing);
193
147
  --easing-emphasized: cubic-bezier(0.2, 0, 0, 1);
194
148
  --easing-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
195
- /* Iconography axis */
196
149
  --icon-family: lucide;
150
+ --icon-stroke-width: 1.75;
197
151
  --icon-default-size: 16px;
198
- /* Elevation axis — per-layer mapping */
199
152
  --elevation-card: var(--shadow-sm);
200
153
  --elevation-popover: var(--shadow-main);
201
154
  --elevation-dialog: var(--shadow-lg);
202
155
  --elevation-toast: var(--shadow-main);
203
- /* Geometry axis — radius rhythm with intent */
204
156
  --radius-container: var(--radius-md);
205
157
  --radius-interactive: var(--radius-md);
206
158
  --radius-pill: var(--radius-full);
207
- /* Geometry axis — border-width rhythm */
208
159
  --border-hairline: 1px;
209
160
  --border-standard: var(--border-width);
210
161
  --border-heavy: var(--border-width-thick);
211
162
  }
212
163
 
213
- /* ==========================================================================
214
- * DARK MODE
215
- * ========================================================================== */
216
164
  [data-theme="corporate-dark"] {
217
- /* Shadows - Small, flat, deep (no glow, no offset) */
218
- --shadow-main: 0 1px 3px rgba(0, 0, 0, 0.4), 0 1px 2px rgba(0, 0, 0, 0.3);
219
- --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.35);
220
- --shadow-lg:
221
- 0 4px 12px rgba(0, 0, 0, 0.5), 0 2px 4px rgba(0, 0, 0, 0.35);
222
- --shadow-inner: inset 0 1px 2px rgba(0, 0, 0, 0.3);
223
- --shadow-none: none;
224
- --shadow-hover:
225
- 0 4px 10px rgba(0, 0, 0, 0.5), 0 1px 3px rgba(0, 0, 0, 0.35);
226
- --shadow-active: 0 1px 2px rgba(0, 0, 0, 0.4);
227
-
228
- /* Border radius - Restrained 6px rhythm */
229
- --radius-none: 0px;
230
- --radius-sm: 4px;
231
- --radius-md: 6px;
232
- --radius-lg: 8px;
233
- --radius-xl: 10px;
234
- --radius-full: 9999px;
235
-
236
- /* Border width - Hairline */
237
- --border-width: 1px;
238
- --border-width-thin: 1px;
239
- --border-width-thick: 2px;
240
-
241
- /* Colors - Enterprise dark: deep navy, softened blue */
242
165
  --color-primary: #5b8def;
243
166
  --color-primary-hover: #7aa5f5;
244
167
  --color-primary-foreground: #0d1526;
245
-
246
168
  --color-secondary: #1c2942;
247
169
  --color-secondary-hover: #24344f;
248
170
  --color-secondary-foreground: #dbe3f0;
249
-
250
171
  --color-accent: #7aa5f5;
251
172
  --color-accent-foreground: #0d1526;
252
-
253
173
  --color-muted: #1a2438;
254
174
  --color-muted-foreground: #8b98ad;
255
-
256
175
  --color-background: #0d1526;
257
176
  --color-foreground: #dbe3f0;
258
177
  --color-card: #14203a;
@@ -261,8 +180,6 @@
261
180
  --color-border: #2a3a58;
262
181
  --color-input: #35486b;
263
182
  --color-ring: #5b8def;
264
-
265
- /* Semantic colors - Softened for dark mode */
266
183
  --color-error: #f87171;
267
184
  --color-error-foreground: #0d1526;
268
185
  --color-success: #4ade80;
@@ -271,40 +188,41 @@
271
188
  --color-warning-foreground: #0d1526;
272
189
  --color-info: #7aa5f5;
273
190
  --color-info-foreground: #0d1526;
274
-
275
- /* Typography - System stack, regular/medium/semibold */
276
- --font-family:
277
- -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Helvetica Neue", Arial, sans-serif;
191
+ --radius-none: 0px;
192
+ --radius-sm: 4px;
193
+ --radius-md: 6px;
194
+ --radius-lg: 8px;
195
+ --radius-xl: 10px;
196
+ --radius-full: 9999px;
197
+ --border-width: 1px;
198
+ --border-width-thin: 1px;
199
+ --border-width-thick: 2px;
200
+ --font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Helvetica Neue", Arial, sans-serif;
278
201
  --font-weight-normal: 400;
279
202
  --font-weight-medium: 500;
280
203
  --font-weight-bold: 600;
281
204
  --letter-spacing: normal;
282
205
  --line-height: 1.5;
283
-
284
- /* Icon styling - Thin lucide strokes */
285
- --icon-stroke-width: 1.75;
286
206
  --icon-color: #94a3b8;
287
-
288
- /* Transitions - Short, standard ease */
289
207
  --transition-fast: 100ms;
290
208
  --transition-normal: 150ms;
291
209
  --transition-slow: 200ms;
292
210
  --transition-timing: cubic-bezier(0.4, 0, 0.2, 1);
293
-
294
- /* Hover/Active transforms - None; state shows via color/shadow only */
295
211
  --hover-scale: 1.0;
296
212
  --hover-translate-y: 0;
297
213
  --hover-translate-x: 0;
298
214
  --active-scale: 0.99;
299
215
  --active-translate-y: 0;
300
-
301
- /* Focus ring */
302
216
  --focus-ring-width: 2px;
303
217
  --focus-ring-offset: 2px;
304
218
  --focus-ring-color: #5b8def;
305
-
306
- /* Layer 1 backfill (preserves current visual output, see themes/_contract.md) */
307
- /* Density axis spacing scale */
219
+ --shadow-main: 0 1px 3px rgba(0, 0, 0, 0.4), 0 1px 2px rgba(0, 0, 0, 0.3);
220
+ --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.35);
221
+ --shadow-lg: 0 4px 12px rgba(0, 0, 0, 0.5), 0 2px 4px rgba(0, 0, 0, 0.35);
222
+ --shadow-inner: inset 0 1px 2px rgba(0, 0, 0, 0.3);
223
+ --shadow-none: none;
224
+ --shadow-hover: 0 4px 10px rgba(0, 0, 0, 0.5), 0 1px 3px rgba(0, 0, 0, 0.35);
225
+ --shadow-active: 0 1px 2px rgba(0, 0, 0, 0.4);
308
226
  --space-0: 0px;
309
227
  --space-1: 4px;
310
228
  --space-2: 8px;
@@ -318,7 +236,6 @@
318
236
  --space-10: 40px;
319
237
  --space-11: 44px;
320
238
  --space-12: 48px;
321
- /* Density axis — per-element heights (slightly generous, enterprise comfort) */
322
239
  --button-height-sm: 30px;
323
240
  --button-height-md: 38px;
324
241
  --button-height-lg: 46px;
@@ -328,17 +245,14 @@
328
245
  --row-height-compact: 36px;
329
246
  --row-height-normal: 44px;
330
247
  --row-height-spacious: 52px;
331
- /* Density axis — per-element padding */
332
248
  --card-padding-sm: 16px;
333
249
  --card-padding-md: 20px;
334
250
  --card-padding-lg: 28px;
335
251
  --dialog-padding: 28px;
336
252
  --section-gap: 40px;
337
- /* Type axis — family triplet (aliases existing --font-family for backward compat) */
338
253
  --font-family-display: var(--font-family);
339
254
  --font-family-body: var(--font-family);
340
255
  --font-family-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
341
- /* Type axis — size scale */
342
256
  --text-xs: 12px;
343
257
  --leading-xs: 16px;
344
258
  --text-sm: 14px;
@@ -359,7 +273,6 @@
359
273
  --leading-display-1: 52px;
360
274
  --text-display-2: 60px;
361
275
  --leading-display-2: 64px;
362
- /* Type axis — intent mapping */
363
276
  --intent-heading-major-size: var(--text-2xl);
364
277
  --intent-heading-major-weight: var(--font-weight-bold);
365
278
  --intent-heading-major-leading: var(--leading-2xl);
@@ -381,30 +294,25 @@
381
294
  --intent-numeric-size: var(--text-sm);
382
295
  --intent-numeric-weight: var(--font-weight-medium);
383
296
  --intent-numeric-leading: var(--leading-sm);
384
- /* Motion axis — duration palette */
385
297
  --duration-instant: 0ms;
386
298
  --duration-fast: var(--transition-fast);
387
299
  --duration-normal: var(--transition-normal);
388
300
  --duration-slow: var(--transition-slow);
389
301
  --duration-dramatic: 400ms;
390
- /* Motion axis — easing palette */
391
302
  --easing-linear: linear;
392
303
  --easing-standard: var(--transition-timing);
393
304
  --easing-emphasized: cubic-bezier(0.2, 0, 0, 1);
394
305
  --easing-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
395
- /* Iconography axis */
396
306
  --icon-family: lucide;
307
+ --icon-stroke-width: 1.75;
397
308
  --icon-default-size: 16px;
398
- /* Elevation axis — per-layer mapping */
399
309
  --elevation-card: var(--shadow-sm);
400
310
  --elevation-popover: var(--shadow-main);
401
311
  --elevation-dialog: var(--shadow-lg);
402
312
  --elevation-toast: var(--shadow-main);
403
- /* Geometry axis — radius rhythm with intent */
404
313
  --radius-container: var(--radius-md);
405
314
  --radius-interactive: var(--radius-md);
406
315
  --radius-pill: var(--radius-full);
407
- /* Geometry axis — border-width rhythm */
408
316
  --border-hairline: 1px;
409
317
  --border-standard: var(--border-width);
410
318
  --border-heavy: var(--border-width-thick);
@@ -1,78 +1,28 @@
1
1
  /**
2
- * Game Adventure Theme "Tavern Parchment"
3
- *
4
- * Kenney's fantasy-adventure UI pack (warm brown-framed parchment panels,
5
- * hanging banners) as a real theme, same contract as every other theme.
6
- * Dark tavern-brown background so the parchment panel chrome reads as a
7
- * lit scroll/signboard.
8
- *
9
- * Chrome sprites: --game-panel-border-image is a CSS 9-slice (border-image)
10
- * sourced from kenney-ui-pack-adventure's `panel_brownimg` sprite, consumed
11
- * by the `.chrome-panel` utility (tailwind-preset.cjs) that Card/GameShell/
12
- * GameHud/GameMenu already apply unconditionally. This pack's only button
13
- * sprites are small icon-sized (close/confirm), not full-width chrome, so
14
- * --game-button-bg-image is left undeclared — Button renders with flat
15
- * theme-colored chrome instead (the `.chrome-button` utility's `none`
16
- * fallback already handles this cleanly, same as game-sci-fi).
2
+ * GENERATED do not edit by hand.
3
+ * Source: packages/almadar-core/themes/game-adventure.json
4
+ * Regenerate: node tools/almadar-pattern-sync/dist/index.js themes (or `almadar-sync themes`)
17
5
  */
18
- [data-theme="game-adventure-dark"] {
19
- /* Shadows — warm tavern glow */
20
- --shadow-main: 0 4px 14px rgba(224, 165, 44, 0.12), 0 1px 3px rgba(0, 0, 0, 0.4);
21
- --shadow-sm: 0 2px 4px rgba(0, 0, 0, 0.3);
22
- --shadow-lg: 0 8px 30px rgba(224, 165, 44, 0.18), 0 4px 10px rgba(0, 0, 0, 0.35);
23
- --shadow-inner: inset 0 1px 3px rgba(0, 0, 0, 0.4);
24
- --shadow-none: none;
25
- --shadow-hover: 0 12px 40px rgba(224, 165, 44, 0.22), 0 4px 12px rgba(0, 0, 0, 0.3);
26
- --shadow-active: 0 2px 8px rgba(0, 0, 0, 0.35);
27
-
28
- /* Border radius — carved wood/parchment, only lightly rounded */
29
- --radius-none: 0px;
30
- --radius-sm: 3px;
31
- --radius-md: 5px;
32
- --radius-lg: 8px;
33
- --radius-xl: 12px;
34
- --radius-full: 9999px;
35
-
36
- /* Border width */
37
- --border-width: 1px;
38
- --border-width-thin: 1px;
39
- --border-width-thick: 2px;
40
-
41
- /* ======================================================================
42
- * CORE COLORS
43
- * ====================================================================== */
44
6
 
45
- /* Primary — leather brown-orange */
7
+ [data-theme="game-adventure-dark"] {
46
8
  --color-primary: #b5793a;
47
9
  --color-primary-hover: #c98d4c;
48
10
  --color-primary-foreground: #241608;
49
-
50
- /* Secondary — dark wood */
51
11
  --color-secondary: #3a2712;
52
12
  --color-secondary-hover: #4a3319;
53
13
  --color-secondary-foreground: #f3e3c4;
54
-
55
- /* Accent — gold trim */
56
14
  --color-accent: #e0a52c;
57
15
  --color-accent-foreground: #241608;
58
-
59
- /* Muted — deep parchment inset (light, like the card, so muted text passes on both) */
60
16
  --color-muted: #e8d6ae;
61
17
  --color-muted-foreground: #6b4f2a;
62
-
63
- /* Surfaces */
64
18
  --color-background: #241608;
65
19
  --color-foreground: #f3e3c4;
66
20
  --color-card: #fff1d2;
67
21
  --color-card-foreground: #4a2f14;
68
22
  --color-surface: #2e1d0d;
69
-
70
- /* Borders & Inputs */
71
23
  --color-border: #7a5228;
72
24
  --color-input: #3a2712;
73
25
  --color-ring: #e0a52c;
74
-
75
- /* Semantic colors */
76
26
  --color-error: #d9534f;
77
27
  --color-error-foreground: #1a0808;
78
28
  --color-success: #7ba05b;
@@ -81,49 +31,44 @@
81
31
  --color-warning-foreground: #241608;
82
32
  --color-info: #b5793a;
83
33
  --color-info-foreground: #241608;
84
-
85
- /* ======================================================================
86
- * CHROME — sprite-driven panel skin (kenney-ui-pack-adventure/panel_brownimg)
87
- * ====================================================================== */
34
+ --radius-none: 0px;
35
+ --radius-sm: 3px;
36
+ --radius-md: 5px;
37
+ --radius-lg: 8px;
38
+ --radius-xl: 12px;
39
+ --radius-full: 9999px;
40
+ --border-width: 1px;
41
+ --border-width-thin: 1px;
42
+ --border-width-thick: 2px;
88
43
  --game-panel-border-image: url('https://almadar-kflow-assets.web.app/shared/ui-game-shell/kenney-ui-pack-adventure/ui/panel_brownimg.png');
89
44
  --game-panel-border-image-slice: 17 fill;
90
45
  --game-panel-border-image-width: 14px;
91
-
92
- /* ======================================================================
93
- * TYPOGRAPHY
94
- * ====================================================================== */
95
- --font-family:
96
- "Kenney Blocks", ui-sans-serif, system-ui, sans-serif;
46
+ --font-family: "Kenney Blocks", ui-sans-serif, system-ui, sans-serif;
97
47
  --font-weight-normal: 400;
98
48
  --font-weight-medium: 500;
99
49
  --font-weight-bold: 700;
100
50
  --letter-spacing: 0.02em;
101
51
  --line-height: 1.5;
102
-
103
- /* Icon styling — gold tint */
104
- --icon-stroke-width: 1.75;
105
52
  --icon-color: #e0a52c;
106
-
107
- /* Transitions */
108
53
  --transition-fast: 100ms;
109
54
  --transition-normal: 200ms;
110
55
  --transition-slow: 400ms;
111
56
  --transition-timing: cubic-bezier(0.4, 0, 0.2, 1);
112
-
113
- /* Hover/Active transforms */
114
57
  --hover-scale: 1.01;
115
58
  --hover-translate-y: -1px;
116
59
  --hover-translate-x: 0;
117
60
  --active-scale: 0.99;
118
61
  --active-translate-y: 0;
119
-
120
- /* Focus ring — gold */
121
62
  --focus-ring-width: 2px;
122
63
  --focus-ring-offset: 2px;
123
64
  --focus-ring-color: #e0a52c;
124
-
125
- /* Layer 1 backfill (see themes/_contract.md) */
126
- /* Density axis spacing scale */
65
+ --shadow-main: 0 4px 14px rgba(224, 165, 44, 0.12), 0 1px 3px rgba(0, 0, 0, 0.4);
66
+ --shadow-sm: 0 2px 4px rgba(0, 0, 0, 0.3);
67
+ --shadow-lg: 0 8px 30px rgba(224, 165, 44, 0.18), 0 4px 10px rgba(0, 0, 0, 0.35);
68
+ --shadow-inner: inset 0 1px 3px rgba(0, 0, 0, 0.4);
69
+ --shadow-none: none;
70
+ --shadow-hover: 0 12px 40px rgba(224, 165, 44, 0.22), 0 4px 12px rgba(0, 0, 0, 0.3);
71
+ --shadow-active: 0 2px 8px rgba(0, 0, 0, 0.35);
127
72
  --space-0: 0px;
128
73
  --space-1: 4px;
129
74
  --space-2: 8px;
@@ -137,7 +82,6 @@
137
82
  --space-10: 40px;
138
83
  --space-11: 44px;
139
84
  --space-12: 48px;
140
- /* Density axis — per-element heights */
141
85
  --button-height-sm: 28px;
142
86
  --button-height-md: 36px;
143
87
  --button-height-lg: 44px;
@@ -147,17 +91,14 @@
147
91
  --row-height-compact: 32px;
148
92
  --row-height-normal: 40px;
149
93
  --row-height-spacious: 48px;
150
- /* Density axis — per-element padding */
151
94
  --card-padding-sm: 12px;
152
95
  --card-padding-md: 16px;
153
96
  --card-padding-lg: 24px;
154
97
  --dialog-padding: 24px;
155
98
  --section-gap: 32px;
156
- /* Type axis — family triplet */
157
99
  --font-family-display: var(--font-family);
158
100
  --font-family-body: var(--font-family);
159
101
  --font-family-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
160
- /* Type axis — size scale */
161
102
  --text-xs: 12px;
162
103
  --leading-xs: 16px;
163
104
  --text-sm: 14px;
@@ -178,7 +119,6 @@
178
119
  --leading-display-1: 52px;
179
120
  --text-display-2: 60px;
180
121
  --leading-display-2: 64px;
181
- /* Type axis — intent mapping */
182
122
  --intent-heading-major-size: var(--text-2xl);
183
123
  --intent-heading-major-weight: var(--font-weight-bold);
184
124
  --intent-heading-major-leading: var(--leading-2xl);
@@ -200,30 +140,25 @@
200
140
  --intent-numeric-size: var(--text-sm);
201
141
  --intent-numeric-weight: var(--font-weight-medium);
202
142
  --intent-numeric-leading: var(--leading-sm);
203
- /* Motion axis — duration palette */
204
143
  --duration-instant: 0ms;
205
144
  --duration-fast: var(--transition-fast);
206
145
  --duration-normal: var(--transition-normal);
207
146
  --duration-slow: var(--transition-slow);
208
147
  --duration-dramatic: 600ms;
209
- /* Motion axis — easing palette */
210
148
  --easing-linear: linear;
211
149
  --easing-standard: var(--transition-timing);
212
150
  --easing-emphasized: cubic-bezier(0.2, 0, 0, 1);
213
151
  --easing-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
214
- /* Iconography axis */
215
152
  --icon-family: lucide;
153
+ --icon-stroke-width: 1.75;
216
154
  --icon-default-size: 16px;
217
- /* Elevation axis — per-layer mapping */
218
155
  --elevation-card: var(--shadow-sm);
219
156
  --elevation-popover: var(--shadow-main);
220
157
  --elevation-dialog: var(--shadow-lg);
221
158
  --elevation-toast: var(--shadow-main);
222
- /* Geometry axis — radius rhythm with intent */
223
159
  --radius-container: var(--radius-md);
224
160
  --radius-interactive: var(--radius-md);
225
161
  --radius-pill: var(--radius-full);
226
- /* Geometry axis — border-width rhythm */
227
162
  --border-hairline: 1px;
228
163
  --border-standard: var(--border-width);
229
164
  --border-heavy: var(--border-width-thick);