@almadar/ui 4.57.5 → 5.1.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 (48) hide show
  1. package/dist/avl/index.cjs +2499 -1903
  2. package/dist/avl/index.js +1111 -518
  3. package/dist/components/atoms/Icon.d.ts +7 -4
  4. package/dist/components/index.cjs +2064 -1636
  5. package/dist/components/index.js +905 -480
  6. package/dist/components/molecules/Breadcrumb.d.ts +4 -4
  7. package/dist/components/molecules/EmptyState.d.ts +1 -1
  8. package/dist/components/templates/DashboardLayout.d.ts +1 -1
  9. package/dist/context/index.cjs +199 -0
  10. package/dist/context/index.js +199 -0
  11. package/dist/context/themeTokens.d.ts +1 -1
  12. package/dist/docs/index.cjs +456 -98
  13. package/dist/docs/index.d.cts +7 -4
  14. package/dist/docs/index.js +429 -74
  15. package/dist/lib/iconFamily.d.ts +41 -0
  16. package/dist/marketing/index.cjs +480 -124
  17. package/dist/marketing/index.d.cts +7 -4
  18. package/dist/marketing/index.js +446 -93
  19. package/dist/providers/index.cjs +1933 -1505
  20. package/dist/providers/index.js +909 -484
  21. package/dist/runtime/index.cjs +2130 -1534
  22. package/dist/runtime/index.js +1071 -478
  23. package/package.json +5 -2
  24. package/tailwind-preset.cjs +118 -3
  25. package/themes/_contract.md +198 -0
  26. package/themes/almadar-website.css +212 -0
  27. package/themes/almadar.css +210 -0
  28. package/themes/arctic.css +210 -0
  29. package/themes/atelier.css +427 -0
  30. package/themes/copper.css +210 -0
  31. package/themes/ember.css +210 -0
  32. package/themes/forest.css +210 -0
  33. package/themes/gazette.css +411 -0
  34. package/themes/index.css +12 -0
  35. package/themes/kiosk.css +412 -0
  36. package/themes/lavender.css +210 -0
  37. package/themes/midnight.css +210 -0
  38. package/themes/minimalist.css +210 -0
  39. package/themes/neon.css +210 -0
  40. package/themes/ocean.css +210 -0
  41. package/themes/prism.css +406 -0
  42. package/themes/rose.css +210 -0
  43. package/themes/sand.css +210 -0
  44. package/themes/slate.css +210 -0
  45. package/themes/sunset.css +210 -0
  46. package/themes/terminal.css +422 -0
  47. package/themes/trait-wars.css +210 -0
  48. package/themes/wireframe.css +216 -0
package/themes/sunset.css CHANGED
@@ -101,6 +101,111 @@
101
101
  --focus-ring-offset: 2px;
102
102
  --focus-ring-color: #e76f51;
103
103
 
104
+ /* Layer 1 — backfill (preserves current visual output, see themes/_contract.md) */
105
+ /* Density axis — spacing scale */
106
+ --space-0: 0px;
107
+ --space-1: 4px;
108
+ --space-2: 8px;
109
+ --space-3: 12px;
110
+ --space-4: 16px;
111
+ --space-5: 20px;
112
+ --space-6: 24px;
113
+ --space-7: 28px;
114
+ --space-8: 32px;
115
+ --space-9: 36px;
116
+ --space-10: 40px;
117
+ --space-11: 44px;
118
+ --space-12: 48px;
119
+ /* Density axis — per-element heights */
120
+ --button-height-sm: 28px;
121
+ --button-height-md: 36px;
122
+ --button-height-lg: 44px;
123
+ --input-height-sm: 28px;
124
+ --input-height-md: 36px;
125
+ --input-height-lg: 44px;
126
+ --row-height-compact: 32px;
127
+ --row-height-normal: 40px;
128
+ --row-height-spacious: 48px;
129
+ /* Density axis — per-element padding */
130
+ --card-padding-sm: 12px;
131
+ --card-padding-md: 16px;
132
+ --card-padding-lg: 24px;
133
+ --dialog-padding: 24px;
134
+ --section-gap: 32px;
135
+ /* Type axis — family triplet */
136
+ --font-family-display: var(--font-family);
137
+ --font-family-body: var(--font-family);
138
+ --font-family-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
139
+ /* Type axis — size scale */
140
+ --text-xs: 12px;
141
+ --leading-xs: 16px;
142
+ --text-sm: 14px;
143
+ --leading-sm: 20px;
144
+ --text-base: 16px;
145
+ --leading-base: 24px;
146
+ --text-lg: 18px;
147
+ --leading-lg: 28px;
148
+ --text-xl: 20px;
149
+ --leading-xl: 28px;
150
+ --text-2xl: 24px;
151
+ --leading-2xl: 32px;
152
+ --text-3xl: 30px;
153
+ --leading-3xl: 36px;
154
+ --text-4xl: 36px;
155
+ --leading-4xl: 40px;
156
+ --text-display-1: 48px;
157
+ --leading-display-1: 52px;
158
+ --text-display-2: 60px;
159
+ --leading-display-2: 64px;
160
+ /* Type axis — intent mapping */
161
+ --intent-heading-major-size: var(--text-2xl);
162
+ --intent-heading-major-weight: var(--font-weight-bold);
163
+ --intent-heading-major-leading: var(--leading-2xl);
164
+ --intent-heading-minor-size: var(--text-lg);
165
+ --intent-heading-minor-weight: var(--font-weight-bold);
166
+ --intent-heading-minor-leading: var(--leading-lg);
167
+ --intent-body-emphasis-size: var(--text-base);
168
+ --intent-body-emphasis-weight: var(--font-weight-medium);
169
+ --intent-body-emphasis-leading: var(--leading-base);
170
+ --intent-body-default-size: var(--text-sm);
171
+ --intent-body-default-weight: var(--font-weight-normal);
172
+ --intent-body-default-leading: var(--leading-sm);
173
+ --intent-body-quiet-size: var(--text-sm);
174
+ --intent-body-quiet-weight: var(--font-weight-normal);
175
+ --intent-body-quiet-leading: var(--leading-sm);
176
+ --intent-caption-size: var(--text-xs);
177
+ --intent-caption-weight: var(--font-weight-normal);
178
+ --intent-caption-leading: var(--leading-xs);
179
+ --intent-numeric-size: var(--text-sm);
180
+ --intent-numeric-weight: var(--font-weight-medium);
181
+ --intent-numeric-leading: var(--leading-sm);
182
+ /* Motion axis — duration palette */
183
+ --duration-instant: 0ms;
184
+ --duration-fast: var(--transition-fast);
185
+ --duration-normal: var(--transition-normal);
186
+ --duration-slow: var(--transition-slow);
187
+ --duration-dramatic: 600ms;
188
+ /* Motion axis — easing palette */
189
+ --easing-linear: linear;
190
+ --easing-standard: var(--transition-timing);
191
+ --easing-emphasized: cubic-bezier(0.2, 0, 0, 1);
192
+ --easing-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
193
+ /* Iconography axis */
194
+ --icon-family: lucide;
195
+ --icon-default-size: 16px;
196
+ /* Elevation axis — per-layer mapping */
197
+ --elevation-card: var(--shadow-sm);
198
+ --elevation-popover: var(--shadow-main);
199
+ --elevation-dialog: var(--shadow-lg);
200
+ --elevation-toast: var(--shadow-main);
201
+ /* Geometry axis — radius rhythm with intent */
202
+ --radius-container: var(--radius-md);
203
+ --radius-interactive: var(--radius-md);
204
+ --radius-pill: var(--radius-full);
205
+ /* Geometry axis — border-width rhythm */
206
+ --border-hairline: 1px;
207
+ --border-standard: var(--border-width);
208
+ --border-heavy: var(--border-width-thick);
104
209
  }
105
210
 
106
211
  /* ==========================================================================
@@ -197,4 +302,109 @@
197
302
  --focus-ring-offset: 2px;
198
303
  --focus-ring-color: #f4845f;
199
304
 
305
+ /* Layer 1 — backfill (preserves current visual output, see themes/_contract.md) */
306
+ /* Density axis — spacing scale */
307
+ --space-0: 0px;
308
+ --space-1: 4px;
309
+ --space-2: 8px;
310
+ --space-3: 12px;
311
+ --space-4: 16px;
312
+ --space-5: 20px;
313
+ --space-6: 24px;
314
+ --space-7: 28px;
315
+ --space-8: 32px;
316
+ --space-9: 36px;
317
+ --space-10: 40px;
318
+ --space-11: 44px;
319
+ --space-12: 48px;
320
+ /* Density axis — per-element heights */
321
+ --button-height-sm: 28px;
322
+ --button-height-md: 36px;
323
+ --button-height-lg: 44px;
324
+ --input-height-sm: 28px;
325
+ --input-height-md: 36px;
326
+ --input-height-lg: 44px;
327
+ --row-height-compact: 32px;
328
+ --row-height-normal: 40px;
329
+ --row-height-spacious: 48px;
330
+ /* Density axis — per-element padding */
331
+ --card-padding-sm: 12px;
332
+ --card-padding-md: 16px;
333
+ --card-padding-lg: 24px;
334
+ --dialog-padding: 24px;
335
+ --section-gap: 32px;
336
+ /* Type axis — family triplet */
337
+ --font-family-display: var(--font-family);
338
+ --font-family-body: var(--font-family);
339
+ --font-family-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
340
+ /* Type axis — size scale */
341
+ --text-xs: 12px;
342
+ --leading-xs: 16px;
343
+ --text-sm: 14px;
344
+ --leading-sm: 20px;
345
+ --text-base: 16px;
346
+ --leading-base: 24px;
347
+ --text-lg: 18px;
348
+ --leading-lg: 28px;
349
+ --text-xl: 20px;
350
+ --leading-xl: 28px;
351
+ --text-2xl: 24px;
352
+ --leading-2xl: 32px;
353
+ --text-3xl: 30px;
354
+ --leading-3xl: 36px;
355
+ --text-4xl: 36px;
356
+ --leading-4xl: 40px;
357
+ --text-display-1: 48px;
358
+ --leading-display-1: 52px;
359
+ --text-display-2: 60px;
360
+ --leading-display-2: 64px;
361
+ /* Type axis — intent mapping */
362
+ --intent-heading-major-size: var(--text-2xl);
363
+ --intent-heading-major-weight: var(--font-weight-bold);
364
+ --intent-heading-major-leading: var(--leading-2xl);
365
+ --intent-heading-minor-size: var(--text-lg);
366
+ --intent-heading-minor-weight: var(--font-weight-bold);
367
+ --intent-heading-minor-leading: var(--leading-lg);
368
+ --intent-body-emphasis-size: var(--text-base);
369
+ --intent-body-emphasis-weight: var(--font-weight-medium);
370
+ --intent-body-emphasis-leading: var(--leading-base);
371
+ --intent-body-default-size: var(--text-sm);
372
+ --intent-body-default-weight: var(--font-weight-normal);
373
+ --intent-body-default-leading: var(--leading-sm);
374
+ --intent-body-quiet-size: var(--text-sm);
375
+ --intent-body-quiet-weight: var(--font-weight-normal);
376
+ --intent-body-quiet-leading: var(--leading-sm);
377
+ --intent-caption-size: var(--text-xs);
378
+ --intent-caption-weight: var(--font-weight-normal);
379
+ --intent-caption-leading: var(--leading-xs);
380
+ --intent-numeric-size: var(--text-sm);
381
+ --intent-numeric-weight: var(--font-weight-medium);
382
+ --intent-numeric-leading: var(--leading-sm);
383
+ /* Motion axis — duration palette */
384
+ --duration-instant: 0ms;
385
+ --duration-fast: var(--transition-fast);
386
+ --duration-normal: var(--transition-normal);
387
+ --duration-slow: var(--transition-slow);
388
+ --duration-dramatic: 600ms;
389
+ /* Motion axis — easing palette */
390
+ --easing-linear: linear;
391
+ --easing-standard: var(--transition-timing);
392
+ --easing-emphasized: cubic-bezier(0.2, 0, 0, 1);
393
+ --easing-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
394
+ /* Iconography axis */
395
+ --icon-family: lucide;
396
+ --icon-default-size: 16px;
397
+ /* Elevation axis — per-layer mapping */
398
+ --elevation-card: var(--shadow-sm);
399
+ --elevation-popover: var(--shadow-main);
400
+ --elevation-dialog: var(--shadow-lg);
401
+ --elevation-toast: var(--shadow-main);
402
+ /* Geometry axis — radius rhythm with intent */
403
+ --radius-container: var(--radius-md);
404
+ --radius-interactive: var(--radius-md);
405
+ --radius-pill: var(--radius-full);
406
+ /* Geometry axis — border-width rhythm */
407
+ --border-hairline: 1px;
408
+ --border-standard: var(--border-width);
409
+ --border-heavy: var(--border-width-thick);
200
410
  }
@@ -0,0 +1,422 @@
1
+ /**
2
+ * Terminal Theme
3
+ *
4
+ * Hyper-compact brutalist CRT/Bloomberg terminal aesthetic — pure mono, 3pt rhythm, sharp 0px corners, zero shadows.
5
+ * Light = white paper with phosphor-green primary; dark = black CRT with phosphor-green glow body text.
6
+ */
7
+
8
+ /* ==========================================================================
9
+ * LIGHT MODE
10
+ * ========================================================================== */
11
+ [data-theme="terminal-light"] {
12
+ /* Shadows - NONE. Hierarchy is borders + color, never elevation. */
13
+ --shadow-none: none;
14
+ --shadow-sm: none;
15
+ --shadow-main: none;
16
+ --shadow-lg: none;
17
+ --shadow-inner: none;
18
+ --shadow-hover: none;
19
+ --shadow-active: none;
20
+
21
+ /* Border radius - SHARP. 0px everywhere except --radius-full (avatars/dots). */
22
+ --radius-none: 0px;
23
+ --radius-sm: 0px;
24
+ --radius-md: 0px;
25
+ --radius-lg: 0px;
26
+ --radius-xl: 0px;
27
+ --radius-full: 9999px;
28
+
29
+ /* Border width - Heavy mechanical rules */
30
+ --border-width: 2px;
31
+ --border-width-thin: 1px;
32
+ --border-width-thick: 3px;
33
+
34
+ /* Colors - White paper, pure black ink, phosphor green primary, single amber accent */
35
+ --color-primary: #00ff66;
36
+ --color-primary-hover: #00cc52;
37
+ --color-primary-foreground: #000000;
38
+
39
+ --color-secondary: #000000;
40
+ --color-secondary-hover: #1a1a1a;
41
+ --color-secondary-foreground: #ffffff;
42
+
43
+ --color-accent: #ffb300;
44
+ --color-accent-foreground: #000000;
45
+
46
+ --color-muted: #f2f2f2;
47
+ --color-muted-foreground: #555555;
48
+
49
+ --color-background: #ffffff;
50
+ --color-foreground: #000000;
51
+ --color-card: #ffffff;
52
+ --color-card-foreground: #000000;
53
+ --color-surface: #f2f2f2;
54
+ --color-border: #000000;
55
+ --color-input: #000000;
56
+ --color-ring: #00ff66;
57
+
58
+ /* Optional table tokens */
59
+ --color-table-header: #000000;
60
+ --color-table-border: #000000;
61
+ --color-table-row-hover: #f2f2f2;
62
+ --color-surface-hover: #e8e8e8;
63
+ --color-border-hover: #000000;
64
+ --color-placeholder: #777777;
65
+
66
+ /* Semantic colors - flat CRT signal palette */
67
+ --color-error: #ff0033;
68
+ --color-error-foreground: #ffffff;
69
+ --color-success: #00cc52;
70
+ --color-success-foreground: #000000;
71
+ --color-warning: #ffb300;
72
+ --color-warning-foreground: #000000;
73
+ --color-info: #00aaff;
74
+ --color-info-foreground: #000000;
75
+
76
+ /* Typography - DENSE MONO. Every family slot is mono. */
77
+ --font-family: "JetBrains Mono", "Fira Code", "SF Mono", ui-monospace;
78
+ --font-family-display: "JetBrains Mono", "Fira Code", "SF Mono", ui-monospace;
79
+ --font-family-body: "JetBrains Mono", "Fira Code", "SF Mono", ui-monospace;
80
+ --font-family-mono: "JetBrains Mono", "Fira Code", "SF Mono", ui-monospace;
81
+ --font-weight-normal: 400;
82
+ --font-weight-medium: 500;
83
+ --font-weight-bold: 700;
84
+ --letter-spacing: 0;
85
+ --line-height: 1.35;
86
+
87
+ /* Icon styling - phosphor-fill, no stroke (filled glyphs) */
88
+ --icon-stroke-width: 0;
89
+ --icon-color: currentColor;
90
+
91
+ /* Transitions - MECHANICAL. Linear easings, sub-150ms only. */
92
+ --transition-fast: 60ms;
93
+ --transition-normal: 100ms;
94
+ --transition-slow: 140ms;
95
+ --transition-timing: linear;
96
+
97
+ /* Hover/Active transforms - color shift only, no motion */
98
+ --hover-scale: 1;
99
+ --hover-translate-y: 0;
100
+ --hover-translate-x: 0;
101
+ --active-scale: 1;
102
+ --active-translate-y: 0;
103
+
104
+ /* Focus ring */
105
+ --focus-ring-width: 2px;
106
+ --focus-ring-offset: 0px;
107
+ --focus-ring-color: #00ff66;
108
+
109
+ /* --- Layer 1: Density axis --- */
110
+ --space-0: 0px;
111
+ --space-1: 3px;
112
+ --space-2: 6px;
113
+ --space-3: 9px;
114
+ --space-4: 12px;
115
+ --space-5: 15px;
116
+ --space-6: 18px;
117
+ --space-7: 21px;
118
+ --space-8: 24px;
119
+ --space-9: 27px;
120
+ --space-10: 30px;
121
+ --space-11: 33px;
122
+ --space-12: 36px;
123
+
124
+ --button-height-sm: 20px;
125
+ --button-height-md: 24px;
126
+ --button-height-lg: 30px;
127
+ --input-height-sm: 20px;
128
+ --input-height-md: 24px;
129
+ --input-height-lg: 30px;
130
+ --row-height-compact: 22px;
131
+ --row-height-normal: 28px;
132
+ --row-height-spacious: 34px;
133
+
134
+ --card-padding-sm: 6px;
135
+ --card-padding-md: 8px;
136
+ --card-padding-lg: 12px;
137
+ --dialog-padding: 12px;
138
+ --section-gap: 16px;
139
+
140
+ /* --- Layer 1: Type axis --- */
141
+ --text-xs: 11px;
142
+ --text-sm: 12px;
143
+ --text-base: 13px;
144
+ --text-lg: 14px;
145
+ --text-xl: 15px;
146
+ --text-2xl: 16px;
147
+ --text-3xl: 18px;
148
+ --text-4xl: 20px;
149
+ --text-display-1: 24px;
150
+ --text-display-2: 28px;
151
+
152
+ --leading-xs: 14px;
153
+ --leading-sm: 16px;
154
+ --leading-base: 17px;
155
+ --leading-lg: 18px;
156
+ --leading-xl: 20px;
157
+ --leading-2xl: 20px;
158
+ --leading-3xl: 22px;
159
+ --leading-4xl: 24px;
160
+ --leading-display-1: 28px;
161
+ --leading-display-2: 32px;
162
+
163
+ --intent-heading-major-size: var(--text-2xl);
164
+ --intent-heading-major-weight: var(--font-weight-bold);
165
+ --intent-heading-major-leading: var(--leading-2xl);
166
+ --intent-heading-minor-size: var(--text-lg);
167
+ --intent-heading-minor-weight: var(--font-weight-bold);
168
+ --intent-heading-minor-leading: var(--leading-lg);
169
+ --intent-body-emphasis-size: var(--text-sm);
170
+ --intent-body-emphasis-weight: var(--font-weight-medium);
171
+ --intent-body-emphasis-leading: var(--leading-sm);
172
+ --intent-body-default-size: var(--text-sm);
173
+ --intent-body-default-weight: var(--font-weight-normal);
174
+ --intent-body-default-leading: var(--leading-sm);
175
+ --intent-body-quiet-size: var(--text-sm);
176
+ --intent-body-quiet-weight: var(--font-weight-normal);
177
+ --intent-body-quiet-leading: var(--leading-sm);
178
+ --intent-caption-size: var(--text-xs);
179
+ --intent-caption-weight: var(--font-weight-normal);
180
+ --intent-caption-leading: var(--leading-xs);
181
+ --intent-numeric-size: var(--text-sm);
182
+ --intent-numeric-weight: var(--font-weight-medium);
183
+ --intent-numeric-leading: var(--leading-sm);
184
+
185
+ /* --- Layer 1: Motion axis - all linear --- */
186
+ --duration-instant: 0ms;
187
+ --duration-fast: var(--transition-fast);
188
+ --duration-normal: var(--transition-normal);
189
+ --duration-slow: var(--transition-slow);
190
+ --duration-dramatic: 200ms;
191
+
192
+ --easing-linear: linear;
193
+ --easing-standard: linear;
194
+ --easing-emphasized: linear;
195
+ --easing-spring: linear;
196
+
197
+ /* --- Layer 1: Iconography axis --- */
198
+ --icon-family: phosphor-fill;
199
+ --icon-default-size: 14px;
200
+
201
+ /* --- Layer 1: Elevation axis - all none --- */
202
+ --elevation-card: none;
203
+ --elevation-popover: none;
204
+ --elevation-dialog: none;
205
+ --elevation-toast: none;
206
+
207
+ /* --- Layer 1: Geometry axis - sharp pill enforced --- */
208
+ --radius-container: 0px;
209
+ --radius-interactive: 0px;
210
+ --radius-pill: 0px;
211
+ --border-hairline: 1px;
212
+ --border-standard: var(--border-width);
213
+ --border-heavy: var(--border-width-thick);
214
+ }
215
+
216
+ /* ==========================================================================
217
+ * DARK MODE
218
+ * ========================================================================== */
219
+ [data-theme="terminal-dark"] {
220
+ /* Shadows - NONE. CRT screens don't cast shadows. */
221
+ --shadow-none: none;
222
+ --shadow-sm: none;
223
+ --shadow-main: none;
224
+ --shadow-lg: none;
225
+ --shadow-inner: none;
226
+ --shadow-hover: none;
227
+ --shadow-active: none;
228
+
229
+ /* Border radius - SHARP. */
230
+ --radius-none: 0px;
231
+ --radius-sm: 0px;
232
+ --radius-md: 0px;
233
+ --radius-lg: 0px;
234
+ --radius-xl: 0px;
235
+ --radius-full: 9999px;
236
+
237
+ /* Border width */
238
+ --border-width: 2px;
239
+ --border-width-thin: 1px;
240
+ --border-width-thick: 3px;
241
+
242
+ /* Colors - Pure black CRT, phosphor green glow, amber accent */
243
+ --color-primary: #00ff66;
244
+ --color-primary-hover: #33ff85;
245
+ --color-primary-foreground: #000000;
246
+
247
+ --color-secondary: #1a1a1a;
248
+ --color-secondary-hover: #262626;
249
+ --color-secondary-foreground: #00ff66;
250
+
251
+ --color-accent: #ffb300;
252
+ --color-accent-foreground: #000000;
253
+
254
+ --color-muted: #0d0d0d;
255
+ --color-muted-foreground: #888888;
256
+
257
+ --color-background: #000000;
258
+ --color-foreground: #aaffaa;
259
+ --color-card: #050505;
260
+ --color-card-foreground: #00ff66;
261
+ --color-surface: #0d0d0d;
262
+ --color-border: #00ff66;
263
+ --color-input: #00ff66;
264
+ --color-ring: #00ff66;
265
+
266
+ /* Optional table tokens */
267
+ --color-table-header: #00ff66;
268
+ --color-table-border: #00ff66;
269
+ --color-table-row-hover: #0d0d0d;
270
+ --color-surface-hover: #1a1a1a;
271
+ --color-border-hover: #33ff85;
272
+ --color-placeholder: #557755;
273
+
274
+ /* Semantic colors - bright CRT signal palette */
275
+ --color-error: #ff3355;
276
+ --color-error-foreground: #000000;
277
+ --color-success: #00ff66;
278
+ --color-success-foreground: #000000;
279
+ --color-warning: #ffb300;
280
+ --color-warning-foreground: #000000;
281
+ --color-info: #00ccff;
282
+ --color-info-foreground: #000000;
283
+
284
+ /* Typography */
285
+ --font-family: "JetBrains Mono", "Fira Code", "SF Mono", ui-monospace;
286
+ --font-family-display: "JetBrains Mono", "Fira Code", "SF Mono", ui-monospace;
287
+ --font-family-body: "JetBrains Mono", "Fira Code", "SF Mono", ui-monospace;
288
+ --font-family-mono: "JetBrains Mono", "Fira Code", "SF Mono", ui-monospace;
289
+ --font-weight-normal: 400;
290
+ --font-weight-medium: 500;
291
+ --font-weight-bold: 700;
292
+ --letter-spacing: 0;
293
+ --line-height: 1.35;
294
+
295
+ /* Icon styling - phosphor-fill */
296
+ --icon-stroke-width: 0;
297
+ --icon-color: currentColor;
298
+
299
+ /* Transitions */
300
+ --transition-fast: 60ms;
301
+ --transition-normal: 100ms;
302
+ --transition-slow: 140ms;
303
+ --transition-timing: linear;
304
+
305
+ /* Hover/Active transforms - color shift only */
306
+ --hover-scale: 1;
307
+ --hover-translate-y: 0;
308
+ --hover-translate-x: 0;
309
+ --active-scale: 1;
310
+ --active-translate-y: 0;
311
+
312
+ /* Focus ring */
313
+ --focus-ring-width: 2px;
314
+ --focus-ring-offset: 0px;
315
+ --focus-ring-color: #00ff66;
316
+
317
+ /* --- Layer 1: Density axis --- */
318
+ --space-0: 0px;
319
+ --space-1: 3px;
320
+ --space-2: 6px;
321
+ --space-3: 9px;
322
+ --space-4: 12px;
323
+ --space-5: 15px;
324
+ --space-6: 18px;
325
+ --space-7: 21px;
326
+ --space-8: 24px;
327
+ --space-9: 27px;
328
+ --space-10: 30px;
329
+ --space-11: 33px;
330
+ --space-12: 36px;
331
+
332
+ --button-height-sm: 20px;
333
+ --button-height-md: 24px;
334
+ --button-height-lg: 30px;
335
+ --input-height-sm: 20px;
336
+ --input-height-md: 24px;
337
+ --input-height-lg: 30px;
338
+ --row-height-compact: 22px;
339
+ --row-height-normal: 28px;
340
+ --row-height-spacious: 34px;
341
+
342
+ --card-padding-sm: 6px;
343
+ --card-padding-md: 8px;
344
+ --card-padding-lg: 12px;
345
+ --dialog-padding: 12px;
346
+ --section-gap: 16px;
347
+
348
+ /* --- Layer 1: Type axis --- */
349
+ --text-xs: 11px;
350
+ --text-sm: 12px;
351
+ --text-base: 13px;
352
+ --text-lg: 14px;
353
+ --text-xl: 15px;
354
+ --text-2xl: 16px;
355
+ --text-3xl: 18px;
356
+ --text-4xl: 20px;
357
+ --text-display-1: 24px;
358
+ --text-display-2: 28px;
359
+
360
+ --leading-xs: 14px;
361
+ --leading-sm: 16px;
362
+ --leading-base: 17px;
363
+ --leading-lg: 18px;
364
+ --leading-xl: 20px;
365
+ --leading-2xl: 20px;
366
+ --leading-3xl: 22px;
367
+ --leading-4xl: 24px;
368
+ --leading-display-1: 28px;
369
+ --leading-display-2: 32px;
370
+
371
+ --intent-heading-major-size: var(--text-2xl);
372
+ --intent-heading-major-weight: var(--font-weight-bold);
373
+ --intent-heading-major-leading: var(--leading-2xl);
374
+ --intent-heading-minor-size: var(--text-lg);
375
+ --intent-heading-minor-weight: var(--font-weight-bold);
376
+ --intent-heading-minor-leading: var(--leading-lg);
377
+ --intent-body-emphasis-size: var(--text-sm);
378
+ --intent-body-emphasis-weight: var(--font-weight-medium);
379
+ --intent-body-emphasis-leading: var(--leading-sm);
380
+ --intent-body-default-size: var(--text-sm);
381
+ --intent-body-default-weight: var(--font-weight-normal);
382
+ --intent-body-default-leading: var(--leading-sm);
383
+ --intent-body-quiet-size: var(--text-sm);
384
+ --intent-body-quiet-weight: var(--font-weight-normal);
385
+ --intent-body-quiet-leading: var(--leading-sm);
386
+ --intent-caption-size: var(--text-xs);
387
+ --intent-caption-weight: var(--font-weight-normal);
388
+ --intent-caption-leading: var(--leading-xs);
389
+ --intent-numeric-size: var(--text-sm);
390
+ --intent-numeric-weight: var(--font-weight-medium);
391
+ --intent-numeric-leading: var(--leading-sm);
392
+
393
+ /* --- Layer 1: Motion axis - all linear --- */
394
+ --duration-instant: 0ms;
395
+ --duration-fast: var(--transition-fast);
396
+ --duration-normal: var(--transition-normal);
397
+ --duration-slow: var(--transition-slow);
398
+ --duration-dramatic: 200ms;
399
+
400
+ --easing-linear: linear;
401
+ --easing-standard: linear;
402
+ --easing-emphasized: linear;
403
+ --easing-spring: linear;
404
+
405
+ /* --- Layer 1: Iconography axis --- */
406
+ --icon-family: phosphor-fill;
407
+ --icon-default-size: 14px;
408
+
409
+ /* --- Layer 1: Elevation axis - all none --- */
410
+ --elevation-card: none;
411
+ --elevation-popover: none;
412
+ --elevation-dialog: none;
413
+ --elevation-toast: none;
414
+
415
+ /* --- Layer 1: Geometry axis - sharp pill enforced --- */
416
+ --radius-container: 0px;
417
+ --radius-interactive: 0px;
418
+ --radius-pill: 0px;
419
+ --border-hairline: 1px;
420
+ --border-standard: var(--border-width);
421
+ --border-heavy: var(--border-width-thick);
422
+ }