@almadar/ui 5.1.6 → 5.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/themes/forest.css CHANGED
@@ -70,15 +70,6 @@
70
70
  --color-info: #0ea5e9;
71
71
  --color-info-foreground: #ffffff;
72
72
 
73
- /* Typography - Natural, grounded */
74
- --font-family:
75
- "Plus Jakarta Sans", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
76
- --font-weight-normal: 400;
77
- --font-weight-medium: 500;
78
- --font-weight-bold: 600;
79
- --letter-spacing: 0em;
80
- --line-height: 1.6;
81
-
82
73
  /* Icon styling */
83
74
  --icon-stroke-width: 1.75;
84
75
  --icon-color: #2d6a4f;
@@ -102,83 +93,6 @@
102
93
  --focus-ring-color: #2d6a4f;
103
94
 
104
95
  /* 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 (aliases existing --font-family for backward compat) */
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 (calibrated to existing component usage) */
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
96
  /* Motion axis — duration palette (aliases existing --transition-* for backward compat) */
183
97
  --duration-instant: 0ms;
184
98
  --duration-fast: var(--transition-fast);
@@ -271,15 +185,6 @@
271
185
  --color-info: #38bdf8;
272
186
  --color-info-foreground: #000000;
273
187
 
274
- /* Typography - Natural, grounded */
275
- --font-family:
276
- "Plus Jakarta Sans", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
277
- --font-weight-normal: 400;
278
- --font-weight-medium: 500;
279
- --font-weight-bold: 600;
280
- --letter-spacing: 0em;
281
- --line-height: 1.6;
282
-
283
188
  /* Icon styling */
284
189
  --icon-stroke-width: 1.75;
285
190
  --icon-color: #52b788;
@@ -303,83 +208,6 @@
303
208
  --focus-ring-color: #52b788;
304
209
 
305
210
  /* 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 (aliases existing --font-family for backward compat) */
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 (calibrated to existing component usage) */
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
211
  /* Motion axis — duration palette (aliases existing --transition-* for backward compat) */
384
212
  --duration-instant: 0ms;
385
213
  --duration-fast: var(--transition-fast);
package/themes/index.css CHANGED
@@ -13,6 +13,12 @@
13
13
  * means body text renders immediately with the fallback chain while the web fonts load. */
14
14
  @import url("https://fonts.googleapis.com/css2?family=Fraunces:wght@400;500;700;900&family=Inter:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500;700&family=Manrope:wght@400;500;600;700;800&display=swap");
15
15
 
16
+ /* Shared base layer — atelier's typography + density at :root, inherited
17
+ * by every theme that doesn't override. MUST come before per-theme
18
+ * imports so [data-theme="..."] selectors win the cascade on the few
19
+ * personality themes that intentionally opt out. */
20
+ @import "./_base.css";
21
+
16
22
  /* Core themes */
17
23
  @import "./wireframe.css";
18
24
  @import "./minimalist.css";
@@ -67,15 +67,6 @@
67
67
  --color-info: #2563eb;
68
68
  --color-info-foreground: #ffffff;
69
69
 
70
- /* Typography - Clean, slightly loose */
71
- --font-family:
72
- "Plus Jakarta Sans", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
73
- --font-weight-normal: 400;
74
- --font-weight-medium: 500;
75
- --font-weight-bold: 600;
76
- --letter-spacing: -0.01em;
77
- --line-height: 1.6;
78
-
79
70
  /* Icon styling - Violet tint */
80
71
  --icon-stroke-width: 1.5;
81
72
  --icon-color: #7c3aed;
@@ -99,83 +90,6 @@
99
90
  --focus-ring-color: #7c3aed;
100
91
 
101
92
  /* Layer 1 — backfill (preserves current visual output, see themes/_contract.md) */
102
- /* Density axis — spacing scale */
103
- --space-0: 0px;
104
- --space-1: 4px;
105
- --space-2: 8px;
106
- --space-3: 12px;
107
- --space-4: 16px;
108
- --space-5: 20px;
109
- --space-6: 24px;
110
- --space-7: 28px;
111
- --space-8: 32px;
112
- --space-9: 36px;
113
- --space-10: 40px;
114
- --space-11: 44px;
115
- --space-12: 48px;
116
- /* Density axis — per-element heights */
117
- --button-height-sm: 28px;
118
- --button-height-md: 36px;
119
- --button-height-lg: 44px;
120
- --input-height-sm: 28px;
121
- --input-height-md: 36px;
122
- --input-height-lg: 44px;
123
- --row-height-compact: 32px;
124
- --row-height-normal: 40px;
125
- --row-height-spacious: 48px;
126
- /* Density axis — per-element padding */
127
- --card-padding-sm: 12px;
128
- --card-padding-md: 16px;
129
- --card-padding-lg: 24px;
130
- --dialog-padding: 24px;
131
- --section-gap: 32px;
132
- /* Type axis — family triplet (aliases existing --font-family for backward compat) */
133
- --font-family-display: var(--font-family);
134
- --font-family-body: var(--font-family);
135
- --font-family-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
136
- /* Type axis — size scale */
137
- --text-xs: 12px;
138
- --leading-xs: 16px;
139
- --text-sm: 14px;
140
- --leading-sm: 20px;
141
- --text-base: 16px;
142
- --leading-base: 24px;
143
- --text-lg: 18px;
144
- --leading-lg: 28px;
145
- --text-xl: 20px;
146
- --leading-xl: 28px;
147
- --text-2xl: 24px;
148
- --leading-2xl: 32px;
149
- --text-3xl: 30px;
150
- --leading-3xl: 36px;
151
- --text-4xl: 36px;
152
- --leading-4xl: 40px;
153
- --text-display-1: 48px;
154
- --leading-display-1: 52px;
155
- --text-display-2: 60px;
156
- --leading-display-2: 64px;
157
- /* Type axis — intent mapping */
158
- --intent-heading-major-size: var(--text-2xl);
159
- --intent-heading-major-weight: var(--font-weight-bold);
160
- --intent-heading-major-leading: var(--leading-2xl);
161
- --intent-heading-minor-size: var(--text-lg);
162
- --intent-heading-minor-weight: var(--font-weight-bold);
163
- --intent-heading-minor-leading: var(--leading-lg);
164
- --intent-body-emphasis-size: var(--text-base);
165
- --intent-body-emphasis-weight: var(--font-weight-medium);
166
- --intent-body-emphasis-leading: var(--leading-base);
167
- --intent-body-default-size: var(--text-sm);
168
- --intent-body-default-weight: var(--font-weight-normal);
169
- --intent-body-default-leading: var(--leading-sm);
170
- --intent-body-quiet-size: var(--text-sm);
171
- --intent-body-quiet-weight: var(--font-weight-normal);
172
- --intent-body-quiet-leading: var(--leading-sm);
173
- --intent-caption-size: var(--text-xs);
174
- --intent-caption-weight: var(--font-weight-normal);
175
- --intent-caption-leading: var(--leading-xs);
176
- --intent-numeric-size: var(--text-sm);
177
- --intent-numeric-weight: var(--font-weight-medium);
178
- --intent-numeric-leading: var(--leading-sm);
179
93
  /* Motion axis — duration palette */
180
94
  --duration-instant: 0ms;
181
95
  --duration-fast: var(--transition-fast);
@@ -266,15 +180,6 @@
266
180
  --color-info: #60a5fa;
267
181
  --color-info-foreground: #000000;
268
182
 
269
- /* Typography */
270
- --font-family:
271
- "Plus Jakarta Sans", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
272
- --font-weight-normal: 400;
273
- --font-weight-medium: 500;
274
- --font-weight-bold: 600;
275
- --letter-spacing: -0.01em;
276
- --line-height: 1.6;
277
-
278
183
  /* Icon styling - Lighter violet for dark */
279
184
  --icon-stroke-width: 1.5;
280
185
  --icon-color: #a78bfa;
@@ -298,83 +203,6 @@
298
203
  --focus-ring-color: #a78bfa;
299
204
 
300
205
  /* Layer 1 — backfill (preserves current visual output, see themes/_contract.md) */
301
- /* Density axis — spacing scale */
302
- --space-0: 0px;
303
- --space-1: 4px;
304
- --space-2: 8px;
305
- --space-3: 12px;
306
- --space-4: 16px;
307
- --space-5: 20px;
308
- --space-6: 24px;
309
- --space-7: 28px;
310
- --space-8: 32px;
311
- --space-9: 36px;
312
- --space-10: 40px;
313
- --space-11: 44px;
314
- --space-12: 48px;
315
- /* Density axis — per-element heights */
316
- --button-height-sm: 28px;
317
- --button-height-md: 36px;
318
- --button-height-lg: 44px;
319
- --input-height-sm: 28px;
320
- --input-height-md: 36px;
321
- --input-height-lg: 44px;
322
- --row-height-compact: 32px;
323
- --row-height-normal: 40px;
324
- --row-height-spacious: 48px;
325
- /* Density axis — per-element padding */
326
- --card-padding-sm: 12px;
327
- --card-padding-md: 16px;
328
- --card-padding-lg: 24px;
329
- --dialog-padding: 24px;
330
- --section-gap: 32px;
331
- /* Type axis — family triplet (aliases existing --font-family for backward compat) */
332
- --font-family-display: var(--font-family);
333
- --font-family-body: var(--font-family);
334
- --font-family-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
335
- /* Type axis — size scale */
336
- --text-xs: 12px;
337
- --leading-xs: 16px;
338
- --text-sm: 14px;
339
- --leading-sm: 20px;
340
- --text-base: 16px;
341
- --leading-base: 24px;
342
- --text-lg: 18px;
343
- --leading-lg: 28px;
344
- --text-xl: 20px;
345
- --leading-xl: 28px;
346
- --text-2xl: 24px;
347
- --leading-2xl: 32px;
348
- --text-3xl: 30px;
349
- --leading-3xl: 36px;
350
- --text-4xl: 36px;
351
- --leading-4xl: 40px;
352
- --text-display-1: 48px;
353
- --leading-display-1: 52px;
354
- --text-display-2: 60px;
355
- --leading-display-2: 64px;
356
- /* Type axis — intent mapping */
357
- --intent-heading-major-size: var(--text-2xl);
358
- --intent-heading-major-weight: var(--font-weight-bold);
359
- --intent-heading-major-leading: var(--leading-2xl);
360
- --intent-heading-minor-size: var(--text-lg);
361
- --intent-heading-minor-weight: var(--font-weight-bold);
362
- --intent-heading-minor-leading: var(--leading-lg);
363
- --intent-body-emphasis-size: var(--text-base);
364
- --intent-body-emphasis-weight: var(--font-weight-medium);
365
- --intent-body-emphasis-leading: var(--leading-base);
366
- --intent-body-default-size: var(--text-sm);
367
- --intent-body-default-weight: var(--font-weight-normal);
368
- --intent-body-default-leading: var(--leading-sm);
369
- --intent-body-quiet-size: var(--text-sm);
370
- --intent-body-quiet-weight: var(--font-weight-normal);
371
- --intent-body-quiet-leading: var(--leading-sm);
372
- --intent-caption-size: var(--text-xs);
373
- --intent-caption-weight: var(--font-weight-normal);
374
- --intent-caption-leading: var(--leading-xs);
375
- --intent-numeric-size: var(--text-sm);
376
- --intent-numeric-weight: var(--font-weight-medium);
377
- --intent-numeric-leading: var(--leading-sm);
378
206
  /* Motion axis — duration palette */
379
207
  --duration-instant: 0ms;
380
208
  --duration-fast: var(--transition-fast);
@@ -68,15 +68,6 @@
68
68
  --color-info: #2563eb;
69
69
  --color-info-foreground: #ffffff;
70
70
 
71
- /* Typography - Wide, elegant */
72
- --font-family:
73
- "Plus Jakarta Sans", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
74
- --font-weight-normal: 300;
75
- --font-weight-medium: 450;
76
- --font-weight-bold: 600;
77
- --letter-spacing: 0.02em;
78
- --line-height: 1.6;
79
-
80
71
  /* Icon styling - Indigo tint */
81
72
  --icon-stroke-width: 1.5;
82
73
  --icon-color: #6366f1;
@@ -100,83 +91,6 @@
100
91
  --focus-ring-color: #6366f1;
101
92
 
102
93
  /* Layer 1 — backfill (preserves current visual output, see themes/_contract.md) */
103
- /* Density axis — spacing scale */
104
- --space-0: 0px;
105
- --space-1: 4px;
106
- --space-2: 8px;
107
- --space-3: 12px;
108
- --space-4: 16px;
109
- --space-5: 20px;
110
- --space-6: 24px;
111
- --space-7: 28px;
112
- --space-8: 32px;
113
- --space-9: 36px;
114
- --space-10: 40px;
115
- --space-11: 44px;
116
- --space-12: 48px;
117
- /* Density axis — per-element heights */
118
- --button-height-sm: 28px;
119
- --button-height-md: 36px;
120
- --button-height-lg: 44px;
121
- --input-height-sm: 28px;
122
- --input-height-md: 36px;
123
- --input-height-lg: 44px;
124
- --row-height-compact: 32px;
125
- --row-height-normal: 40px;
126
- --row-height-spacious: 48px;
127
- /* Density axis — per-element padding */
128
- --card-padding-sm: 12px;
129
- --card-padding-md: 16px;
130
- --card-padding-lg: 24px;
131
- --dialog-padding: 24px;
132
- --section-gap: 32px;
133
- /* Type axis — family triplet (aliases existing --font-family for backward compat) */
134
- --font-family-display: var(--font-family);
135
- --font-family-body: var(--font-family);
136
- --font-family-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
137
- /* Type axis — size scale */
138
- --text-xs: 12px;
139
- --leading-xs: 16px;
140
- --text-sm: 14px;
141
- --leading-sm: 20px;
142
- --text-base: 16px;
143
- --leading-base: 24px;
144
- --text-lg: 18px;
145
- --leading-lg: 28px;
146
- --text-xl: 20px;
147
- --leading-xl: 28px;
148
- --text-2xl: 24px;
149
- --leading-2xl: 32px;
150
- --text-3xl: 30px;
151
- --leading-3xl: 36px;
152
- --text-4xl: 36px;
153
- --leading-4xl: 40px;
154
- --text-display-1: 48px;
155
- --leading-display-1: 52px;
156
- --text-display-2: 60px;
157
- --leading-display-2: 64px;
158
- /* Type axis — intent mapping */
159
- --intent-heading-major-size: var(--text-2xl);
160
- --intent-heading-major-weight: var(--font-weight-bold);
161
- --intent-heading-major-leading: var(--leading-2xl);
162
- --intent-heading-minor-size: var(--text-lg);
163
- --intent-heading-minor-weight: var(--font-weight-bold);
164
- --intent-heading-minor-leading: var(--leading-lg);
165
- --intent-body-emphasis-size: var(--text-base);
166
- --intent-body-emphasis-weight: var(--font-weight-medium);
167
- --intent-body-emphasis-leading: var(--leading-base);
168
- --intent-body-default-size: var(--text-sm);
169
- --intent-body-default-weight: var(--font-weight-normal);
170
- --intent-body-default-leading: var(--leading-sm);
171
- --intent-body-quiet-size: var(--text-sm);
172
- --intent-body-quiet-weight: var(--font-weight-normal);
173
- --intent-body-quiet-leading: var(--leading-sm);
174
- --intent-caption-size: var(--text-xs);
175
- --intent-caption-weight: var(--font-weight-normal);
176
- --intent-caption-leading: var(--leading-xs);
177
- --intent-numeric-size: var(--text-sm);
178
- --intent-numeric-weight: var(--font-weight-medium);
179
- --intent-numeric-leading: var(--leading-sm);
180
94
  /* Motion axis — duration palette */
181
95
  --duration-instant: 0ms;
182
96
  --duration-fast: var(--transition-fast);
@@ -267,15 +181,6 @@
267
181
  --color-info: #60a5fa;
268
182
  --color-info-foreground: #000000;
269
183
 
270
- /* Typography */
271
- --font-family:
272
- "Plus Jakarta Sans", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
273
- --font-weight-normal: 300;
274
- --font-weight-medium: 450;
275
- --font-weight-bold: 600;
276
- --letter-spacing: 0.02em;
277
- --line-height: 1.6;
278
-
279
184
  /* Icon styling - Lighter indigo for dark */
280
185
  --icon-stroke-width: 1.5;
281
186
  --icon-color: #818cf8;
@@ -299,83 +204,6 @@
299
204
  --focus-ring-color: #818cf8;
300
205
 
301
206
  /* Layer 1 — backfill (preserves current visual output, see themes/_contract.md) */
302
- /* Density axis — spacing scale */
303
- --space-0: 0px;
304
- --space-1: 4px;
305
- --space-2: 8px;
306
- --space-3: 12px;
307
- --space-4: 16px;
308
- --space-5: 20px;
309
- --space-6: 24px;
310
- --space-7: 28px;
311
- --space-8: 32px;
312
- --space-9: 36px;
313
- --space-10: 40px;
314
- --space-11: 44px;
315
- --space-12: 48px;
316
- /* Density axis — per-element heights */
317
- --button-height-sm: 28px;
318
- --button-height-md: 36px;
319
- --button-height-lg: 44px;
320
- --input-height-sm: 28px;
321
- --input-height-md: 36px;
322
- --input-height-lg: 44px;
323
- --row-height-compact: 32px;
324
- --row-height-normal: 40px;
325
- --row-height-spacious: 48px;
326
- /* Density axis — per-element padding */
327
- --card-padding-sm: 12px;
328
- --card-padding-md: 16px;
329
- --card-padding-lg: 24px;
330
- --dialog-padding: 24px;
331
- --section-gap: 32px;
332
- /* Type axis — family triplet (aliases existing --font-family for backward compat) */
333
- --font-family-display: var(--font-family);
334
- --font-family-body: var(--font-family);
335
- --font-family-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
336
- /* Type axis — size scale */
337
- --text-xs: 12px;
338
- --leading-xs: 16px;
339
- --text-sm: 14px;
340
- --leading-sm: 20px;
341
- --text-base: 16px;
342
- --leading-base: 24px;
343
- --text-lg: 18px;
344
- --leading-lg: 28px;
345
- --text-xl: 20px;
346
- --leading-xl: 28px;
347
- --text-2xl: 24px;
348
- --leading-2xl: 32px;
349
- --text-3xl: 30px;
350
- --leading-3xl: 36px;
351
- --text-4xl: 36px;
352
- --leading-4xl: 40px;
353
- --text-display-1: 48px;
354
- --leading-display-1: 52px;
355
- --text-display-2: 60px;
356
- --leading-display-2: 64px;
357
- /* Type axis — intent mapping */
358
- --intent-heading-major-size: var(--text-2xl);
359
- --intent-heading-major-weight: var(--font-weight-bold);
360
- --intent-heading-major-leading: var(--leading-2xl);
361
- --intent-heading-minor-size: var(--text-lg);
362
- --intent-heading-minor-weight: var(--font-weight-bold);
363
- --intent-heading-minor-leading: var(--leading-lg);
364
- --intent-body-emphasis-size: var(--text-base);
365
- --intent-body-emphasis-weight: var(--font-weight-medium);
366
- --intent-body-emphasis-leading: var(--leading-base);
367
- --intent-body-default-size: var(--text-sm);
368
- --intent-body-default-weight: var(--font-weight-normal);
369
- --intent-body-default-leading: var(--leading-sm);
370
- --intent-body-quiet-size: var(--text-sm);
371
- --intent-body-quiet-weight: var(--font-weight-normal);
372
- --intent-body-quiet-leading: var(--leading-sm);
373
- --intent-caption-size: var(--text-xs);
374
- --intent-caption-weight: var(--font-weight-normal);
375
- --intent-caption-leading: var(--leading-xs);
376
- --intent-numeric-size: var(--text-sm);
377
- --intent-numeric-weight: var(--font-weight-medium);
378
- --intent-numeric-leading: var(--leading-sm);
379
207
  /* Motion axis — duration palette */
380
208
  --duration-instant: 0ms;
381
209
  --duration-fast: var(--transition-fast);