@neuravision/construct 2.0.2 → 2.1.1

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 (115) hide show
  1. package/CHANGELOG.md +272 -0
  2. package/README.md +148 -152
  3. package/behaviors/combobox.js +447 -0
  4. package/behaviors/drawer.js +18 -0
  5. package/behaviors/dropdown.js +296 -0
  6. package/behaviors/index.d.ts +333 -0
  7. package/behaviors/index.js +9 -0
  8. package/behaviors/internal/dialog-controller.js +351 -0
  9. package/behaviors/internal/dom.js +377 -0
  10. package/behaviors/internal/overlay.js +241 -0
  11. package/behaviors/internal/popup-layer.js +188 -0
  12. package/behaviors/modal.js +17 -0
  13. package/behaviors/popover.js +269 -0
  14. package/behaviors/select-menu.js +326 -0
  15. package/behaviors/tabs.js +230 -0
  16. package/behaviors/toggle-group.js +234 -0
  17. package/behaviors/tooltip.js +233 -0
  18. package/components/README.md +279 -83
  19. package/components/_shared.css +11 -10
  20. package/components/_shell-shared.css +20 -4
  21. package/components/app-shell-v2.css +21 -14
  22. package/components/app-shell.css +23 -14
  23. package/components/badge.css +15 -0
  24. package/components/button.css +103 -15
  25. package/components/card.css +53 -8
  26. package/components/checkbox.css +3 -2
  27. package/components/chip.css +1 -1
  28. package/components/datepicker.css +3 -1
  29. package/components/datum.css +204 -0
  30. package/components/index.css +5 -0
  31. package/components/meter.css +182 -0
  32. package/components/navbar.css +88 -3
  33. package/components/slider.css +2 -1
  34. package/components/status.css +107 -0
  35. package/components/switch.css +4 -3
  36. package/components/tooltip.css +4 -0
  37. package/docs/architecture.md +79 -0
  38. package/docs/behaviors.md +101 -0
  39. package/docs/fonts.md +70 -0
  40. package/docs/governance.md +85 -0
  41. package/docs/guidelines.md +42 -23
  42. package/examples/react/README.md +20 -0
  43. package/examples/react/SettingsModal.jsx +66 -0
  44. package/examples/react/construct.css +5 -0
  45. package/fonts.css +10 -0
  46. package/foundations.css +8 -1
  47. package/package.json +72 -21
  48. package/schemas/components.schema.json +107 -0
  49. package/schemas/examples/theme.example.json +27 -0
  50. package/schemas/primitives.schema.json +135 -0
  51. package/schemas/semantic.schema.json +223 -0
  52. package/schemas/theme.schema.json +63 -0
  53. package/scripts/build-tokens.mjs +1417 -0
  54. package/scripts/construct-theme.mjs +43 -0
  55. package/scripts/validate-tokens.mjs +25 -0
  56. package/standalone/accordion.css +3 -0
  57. package/standalone/alert.css +3 -0
  58. package/standalone/app-shell-v2.css +4 -0
  59. package/standalone/app-shell.css +4 -0
  60. package/standalone/avatar.css +3 -0
  61. package/standalone/badge.css +3 -0
  62. package/standalone/banner.css +3 -0
  63. package/standalone/breadcrumbs.css +3 -0
  64. package/standalone/button.css +3 -0
  65. package/standalone/card.css +3 -0
  66. package/standalone/chart.css +3 -0
  67. package/standalone/checkbox.css +3 -0
  68. package/standalone/chip.css +3 -0
  69. package/standalone/combobox.css +3 -0
  70. package/standalone/core.css +4 -0
  71. package/standalone/data-table.css +3 -0
  72. package/standalone/datepicker.css +3 -0
  73. package/standalone/datum.css +3 -0
  74. package/standalone/divider.css +3 -0
  75. package/standalone/drawer.css +3 -0
  76. package/standalone/dropdown.css +3 -0
  77. package/standalone/empty-state.css +3 -0
  78. package/standalone/field.css +3 -0
  79. package/standalone/file-upload.css +3 -0
  80. package/standalone/icon.css +3 -0
  81. package/standalone/input.css +3 -0
  82. package/standalone/list.css +3 -0
  83. package/standalone/meter.css +3 -0
  84. package/standalone/modal.css +3 -0
  85. package/standalone/navbar.css +3 -0
  86. package/standalone/pagination.css +3 -0
  87. package/standalone/popover.css +3 -0
  88. package/standalone/progress-bar.css +3 -0
  89. package/standalone/select-menu.css +3 -0
  90. package/standalone/select.css +3 -0
  91. package/standalone/sidebar.css +3 -0
  92. package/standalone/skeleton.css +3 -0
  93. package/standalone/skip-link.css +3 -0
  94. package/standalone/slider.css +3 -0
  95. package/standalone/spinner.css +3 -0
  96. package/standalone/status.css +3 -0
  97. package/standalone/switch.css +3 -0
  98. package/standalone/table.css +3 -0
  99. package/standalone/tabs.css +3 -0
  100. package/standalone/textarea.css +3 -0
  101. package/standalone/toast.css +3 -0
  102. package/standalone/toggle-group.css +3 -0
  103. package/standalone/toolbar.css +3 -0
  104. package/standalone/tooltip.css +3 -0
  105. package/standalone/tree.css +3 -0
  106. package/tokens/README.md +130 -126
  107. package/tokens/components.json +54 -0
  108. package/tokens/primitives.json +268 -0
  109. package/tokens/semantic.dark.json +93 -0
  110. package/tokens/semantic.high-contrast.json +93 -0
  111. package/tokens/semantic.light.json +178 -0
  112. package/tokens/tokens.css +532 -28
  113. package/tokens/tokens.js +335 -25
  114. package/tokens/tokens.json +764 -21
  115. package/tokens/tokens.ts +335 -25
package/tokens/tokens.css CHANGED
@@ -1,6 +1,6 @@
1
- /* Generated by design/scripts/build-tokens.mjs. Do not edit directly. */
1
+ /* Generated by scripts/build-tokens.mjs. Do not edit directly. */
2
2
  :root {
3
- /* Color primitives */
3
+ /* Primitive: colors */
4
4
  --color-stone-0: #FFFFFF;
5
5
  --color-stone-50: #FAFAF8;
6
6
  --color-stone-100: #F1F0EB;
@@ -93,7 +93,7 @@
93
93
  --color-pink-700: #6A1932;
94
94
  --color-pink-800: #461020;
95
95
  --color-pink-900: #29080F;
96
- /* Typography */
96
+ /* Primitive: typography */
97
97
  --font-family-brand: "Lato", "Segoe UI", "Helvetica Neue", Arial, sans-serif;
98
98
  --font-family-text: "Lato", "Segoe UI", "Helvetica Neue", Arial, sans-serif;
99
99
  --font-family-mono: "JetBrains Mono", "SFMono-Regular", Menlo, monospace;
@@ -102,6 +102,7 @@
102
102
  --font-weight-semibold: 600;
103
103
  --font-weight-bold: 700;
104
104
  --font-weight-extrabold: 800;
105
+ --font-size-2xs: 10px;
105
106
  --font-size-xs: 12px;
106
107
  --font-size-sm: 14px;
107
108
  --font-size-md: 16px;
@@ -112,6 +113,7 @@
112
113
  --font-size-4xl: 32px;
113
114
  --font-size-5xl: 40px;
114
115
  --font-size-6xl: 48px;
116
+ --line-height-2xs: 14px;
115
117
  --line-height-xs: 16px;
116
118
  --line-height-sm: 20px;
117
119
  --line-height-md: 24px;
@@ -125,7 +127,7 @@
125
127
  --letter-spacing-tight: -0.3px;
126
128
  --letter-spacing-normal: 0px;
127
129
  --letter-spacing-wide: 0.3px;
128
- /* Semantic typography */
130
+ /* Semantic: typography */
129
131
  --type-display-font-family: var(--font-family-heading);
130
132
  --type-display-font-size: var(--font-size-6xl);
131
133
  --type-display-line-height: var(--line-height-6xl);
@@ -171,7 +173,7 @@
171
173
  --type-caption-line-height: var(--line-height-xs);
172
174
  --type-caption-font-weight: var(--font-weight-regular);
173
175
  --type-caption-letter-spacing: var(--letter-spacing-normal);
174
- /* Spacing */
176
+ /* Primitive: spacing */
175
177
  --space-0: 0px;
176
178
  --space-1: 2px;
177
179
  --space-2: 4px;
@@ -186,7 +188,7 @@
186
188
  --space-11: 48px;
187
189
  --space-12: 64px;
188
190
  --space-13: 80px;
189
- /* Radius */
191
+ /* Primitive: radius */
190
192
  --radius-xs: 2px;
191
193
  --radius-sm: 4px;
192
194
  --radius-md: 8px;
@@ -194,15 +196,15 @@
194
196
  --radius-xl: 16px;
195
197
  --radius-2xl: 24px;
196
198
  --radius-round: 999px;
197
- /* Border widths */
199
+ /* Primitive: border widths */
198
200
  --border-thin: 1px;
199
201
  --border-medium: 2px;
200
202
  --border-thick: 3px;
201
- /* Opacity */
203
+ /* Primitive: opacity */
202
204
  --opacity-muted: 0.7;
203
205
  --opacity-disabled: 0.5;
204
206
  --opacity-overlay: 0.6;
205
- /* Sizes */
207
+ /* Primitive: sizes */
206
208
  --control-height-xs: 28px;
207
209
  --control-height-sm: 32px;
208
210
  --control-height-md: 40px;
@@ -212,7 +214,7 @@
212
214
  --icon-md: 20px;
213
215
  --icon-lg: 24px;
214
216
  --icon-xl: 32px;
215
- /* Layout */
217
+ /* Primitive: layout */
216
218
  --container-sm: 640px;
217
219
  --container-md: 960px;
218
220
  --container-lg: 1200px;
@@ -224,13 +226,13 @@
224
226
  --grid-gap-md: 24px;
225
227
  --grid-gap-lg: 32px;
226
228
  --navbar-height: 56px;
227
- /* Shadows */
229
+ /* Primitive: shadows */
228
230
  --shadow-xs: 0 1px 2px rgba(28, 20, 10, 0.07);
229
231
  --shadow-sm: 0 2px 6px rgba(28, 20, 10, 0.09);
230
232
  --shadow-md: 0 8px 20px rgba(28, 20, 10, 0.11);
231
233
  --shadow-lg: 0 16px 36px rgba(28, 20, 10, 0.13);
232
234
  --shadow-xl: 0 24px 56px rgba(28, 20, 10, 0.17);
233
- /* Motion */
235
+ /* Primitive: motion */
234
236
  --duration-fast: 120ms;
235
237
  --duration-normal: 200ms;
236
238
  --duration-slow: 280ms;
@@ -238,7 +240,7 @@
238
240
  --easing-standard: cubic-bezier(0.2, 0, 0, 1);
239
241
  --easing-decelerate: cubic-bezier(0, 0, 0, 1);
240
242
  --easing-accelerate: cubic-bezier(0.3, 0, 1, 1);
241
- /* Z-Index */
243
+ /* Primitive: z-index */
242
244
  --z-base: 0;
243
245
  --z-dropdown: 1000;
244
246
  --z-sticky: 1100;
@@ -246,19 +248,140 @@
246
248
  --z-modal: 1300;
247
249
  --z-toast: 1400;
248
250
  --z-tooltip: 1500;
249
- /* Breakpoints */
251
+ /* Primitive: breakpoints */
250
252
  --bp-xs: 360px;
251
253
  --bp-sm: 600px;
252
254
  --bp-md: 900px;
253
255
  --bp-lg: 1200px;
254
256
  --bp-xl: 1536px;
257
+ /* Semantic: light */
258
+ --color-brand-primary: var(--color-stone-950);
259
+ --color-brand-primary-hover: var(--color-stone-800);
260
+ --color-brand-primary-active: var(--color-stone-900);
261
+ --color-brand-accent: var(--color-orange-500);
262
+ --color-brand-accent-hover: var(--color-orange-400);
263
+ --color-brand-accent-active: var(--color-orange-300);
264
+ --color-brand-on-accent: var(--color-stone-950);
265
+ --color-text-primary: var(--color-stone-950);
266
+ --color-text-secondary: var(--color-stone-700);
267
+ --color-text-muted: var(--color-stone-600);
268
+ --color-text-inverse: var(--color-stone-0);
269
+ --color-text-on-primary: var(--color-stone-0);
270
+ --color-bg-canvas: var(--color-stone-50);
271
+ --color-bg-surface: var(--color-stone-100);
272
+ --color-bg-elevated: var(--color-stone-0);
273
+ --color-bg-muted: var(--color-stone-200);
274
+ --color-bg-subtle: var(--color-bg-surface);
275
+ --color-border-subtle: var(--color-stone-200);
276
+ --color-border-default: var(--color-stone-500);
277
+ --color-border-strong: var(--color-stone-500);
278
+ --color-border-muted: var(--color-border-subtle);
279
+ --color-state-info: var(--color-ocean-600);
280
+ --color-state-success: var(--color-green-700);
281
+ --color-state-warning: var(--color-amber-700);
282
+ --color-state-danger: var(--color-red-500);
283
+ --color-state-on-solid: var(--color-stone-0);
284
+ --color-state-info-surface: var(--color-ocean-50);
285
+ --color-state-success-surface: var(--color-green-50);
286
+ --color-state-warning-surface: var(--color-amber-50);
287
+ --color-state-danger-surface: var(--color-red-50);
288
+ --color-state-info-border: var(--color-ocean-200);
289
+ --color-state-success-border: var(--color-green-200);
290
+ --color-state-warning-border: var(--color-amber-200);
291
+ --color-state-danger-border: var(--color-red-200);
292
+ --color-state-info-text: var(--color-ocean-700);
293
+ --color-state-success-text: var(--color-green-700);
294
+ --color-state-warning-text: var(--color-amber-700);
295
+ --color-state-danger-text: var(--color-red-700);
296
+ --color-overlay-scrim: rgba(22, 19, 15, 0.58);
297
+ --color-focus-ring: var(--color-orange-600);
298
+ --color-avatar-seed-1-bg: var(--color-ocean-100);
299
+ --color-avatar-seed-1-fg: var(--color-ocean-800);
300
+ --color-avatar-seed-2-bg: var(--color-teal-100);
301
+ --color-avatar-seed-2-fg: var(--color-teal-800);
302
+ --color-avatar-seed-3-bg: var(--color-amber-100);
303
+ --color-avatar-seed-3-fg: var(--color-amber-800);
304
+ --color-avatar-seed-4-bg: var(--color-red-100);
305
+ --color-avatar-seed-4-fg: var(--color-red-800);
306
+ --color-avatar-seed-5-bg: var(--color-green-100);
307
+ --color-avatar-seed-5-fg: var(--color-green-800);
308
+ --color-avatar-seed-6-bg: var(--color-purple-100);
309
+ --color-avatar-seed-6-fg: var(--color-purple-800);
310
+ --color-avatar-seed-7-bg: var(--color-pink-100);
311
+ --color-avatar-seed-7-fg: var(--color-pink-800);
312
+ --color-avatar-seed-8-bg: var(--color-stone-200);
313
+ --color-avatar-seed-8-fg: var(--color-stone-800);
314
+ --color-chart-series-1: var(--color-ocean-600);
315
+ --color-chart-series-2: var(--color-amber-600);
316
+ --color-chart-series-3: var(--color-green-600);
317
+ --color-chart-series-4: var(--color-purple-500);
318
+ --color-chart-series-5: var(--color-pink-500);
319
+ --color-chart-series-6: var(--color-teal-600);
320
+ --color-chart-series-7: var(--color-red-500);
321
+ --color-chart-series-8: var(--color-stone-600);
322
+ --theme-color-scheme: light;
323
+ --font-family-heading: var(--font-family-brand);
324
+ --font-family-body: var(--font-family-text);
325
+ --font-family-code: var(--font-family-mono);
326
+ --radius-control: var(--radius-md);
327
+ --radius-card: var(--radius-lg);
328
+ --radius-modal: var(--radius-xl);
329
+ --radius-pill: var(--radius-round);
330
+ --shadow-card: var(--shadow-sm);
331
+ --shadow-dropdown: var(--shadow-md);
332
+ --shadow-modal: var(--shadow-lg);
333
+ /* Component: defaults */
334
+ --component-button-background: var(--color-brand-primary);
335
+ --component-button-background-hover: var(--color-brand-primary-hover);
336
+ --component-button-background-active: var(--color-brand-primary-active);
337
+ --component-button-border: var(--color-brand-primary);
338
+ --component-button-color: var(--color-text-on-primary);
339
+ --component-button-height: var(--control-height-md);
340
+ --component-button-padding-x: var(--space-6);
341
+ --component-button-font-size: var(--font-size-sm);
342
+ --component-button-line-height: var(--line-height-sm);
343
+ --component-button-font-weight: var(--font-weight-semibold);
344
+ --component-button-radius: var(--radius-control);
345
+ --component-button-gap: var(--space-3);
346
+ --component-button-loading-spinner-size: var(--icon-md);
347
+ --component-control-background: var(--color-bg-elevated);
348
+ --component-control-background-hover: var(--color-bg-surface);
349
+ --component-control-background-disabled: var(--color-bg-muted);
350
+ --component-control-border: var(--color-border-default);
351
+ --component-control-border-hover: var(--color-border-strong);
352
+ --component-control-border-focus: var(--color-focus-ring);
353
+ --component-control-text: var(--color-text-primary);
354
+ --component-control-placeholder: var(--color-text-muted);
355
+ --component-control-radius: var(--radius-control);
356
+ --component-card-background: var(--color-bg-elevated);
357
+ --component-card-border: var(--color-border-subtle);
358
+ --component-card-radius: var(--radius-card);
359
+ --component-card-padding: var(--space-6);
360
+ --component-card-shadow: var(--shadow-card);
361
+ --component-card-shadow-hover: var(--shadow-dropdown);
362
+ --component-status-gap: var(--space-2);
363
+ --component-status-font-size: var(--font-size-sm);
364
+ --component-status-icon-size: var(--icon-sm);
365
+ --component-metric-background: var(--color-bg-elevated);
366
+ --component-metric-border: var(--color-border-subtle);
367
+ --component-metric-radius: var(--radius-card);
368
+ --component-metric-padding: var(--space-6);
369
+ --component-metric-value-font-size: var(--font-size-2xl);
370
+ --component-metric-label-font-size: var(--font-size-sm);
371
+ --component-meter-height: var(--space-3);
372
+ --component-meter-radius: var(--radius-pill);
373
+ --component-meter-track: var(--color-bg-muted);
374
+ }
375
+
376
+ [data-theme="light"] {
377
+ color-scheme: var(--theme-color-scheme);
255
378
  /* Semantic (light) */
256
379
  --color-brand-primary: var(--color-stone-950);
257
380
  --color-brand-primary-hover: var(--color-stone-800);
258
381
  --color-brand-primary-active: var(--color-stone-900);
259
382
  --color-brand-accent: var(--color-orange-500);
260
- --color-brand-accent-hover: var(--color-orange-600);
261
- --color-brand-accent-active: var(--color-orange-700);
383
+ --color-brand-accent-hover: var(--color-orange-400);
384
+ --color-brand-accent-active: var(--color-orange-300);
262
385
  --color-brand-on-accent: var(--color-stone-950);
263
386
  --color-text-primary: var(--color-stone-950);
264
387
  --color-text-secondary: var(--color-stone-700);
@@ -269,12 +392,14 @@
269
392
  --color-bg-surface: var(--color-stone-100);
270
393
  --color-bg-elevated: var(--color-stone-0);
271
394
  --color-bg-muted: var(--color-stone-200);
395
+ --color-bg-subtle: var(--color-bg-surface);
272
396
  --color-border-subtle: var(--color-stone-200);
273
- --color-border-default: var(--color-stone-300);
397
+ --color-border-default: var(--color-stone-500);
274
398
  --color-border-strong: var(--color-stone-500);
399
+ --color-border-muted: var(--color-border-subtle);
275
400
  --color-state-info: var(--color-ocean-600);
276
- --color-state-success: var(--color-green-500);
277
- --color-state-warning: var(--color-amber-400);
401
+ --color-state-success: var(--color-green-700);
402
+ --color-state-warning: var(--color-amber-700);
278
403
  --color-state-danger: var(--color-red-500);
279
404
  --color-state-on-solid: var(--color-stone-0);
280
405
  --color-state-info-surface: var(--color-ocean-50);
@@ -319,6 +444,51 @@
319
444
  --font-family-heading: var(--font-family-brand);
320
445
  --font-family-body: var(--font-family-text);
321
446
  --font-family-code: var(--font-family-mono);
447
+ --type-display-font-family: var(--font-family-heading);
448
+ --type-display-font-size: var(--font-size-6xl);
449
+ --type-display-line-height: var(--line-height-6xl);
450
+ --type-display-font-weight: var(--font-weight-extrabold);
451
+ --type-display-letter-spacing: var(--letter-spacing-tight);
452
+ --type-h1-font-family: var(--font-family-heading);
453
+ --type-h1-font-size: var(--font-size-5xl);
454
+ --type-h1-line-height: var(--line-height-5xl);
455
+ --type-h1-font-weight: var(--font-weight-bold);
456
+ --type-h1-letter-spacing: var(--letter-spacing-tight);
457
+ --type-h2-font-family: var(--font-family-heading);
458
+ --type-h2-font-size: var(--font-size-4xl);
459
+ --type-h2-line-height: var(--line-height-4xl);
460
+ --type-h2-font-weight: var(--font-weight-semibold);
461
+ --type-h2-letter-spacing: var(--letter-spacing-normal);
462
+ --type-h3-font-family: var(--font-family-heading);
463
+ --type-h3-font-size: var(--font-size-3xl);
464
+ --type-h3-line-height: var(--line-height-3xl);
465
+ --type-h3-font-weight: var(--font-weight-semibold);
466
+ --type-h3-letter-spacing: var(--letter-spacing-normal);
467
+ --type-h4-font-family: var(--font-family-heading);
468
+ --type-h4-font-size: var(--font-size-2xl);
469
+ --type-h4-line-height: var(--line-height-2xl);
470
+ --type-h4-font-weight: var(--font-weight-semibold);
471
+ --type-h4-letter-spacing: var(--letter-spacing-normal);
472
+ --type-body-font-family: var(--font-family-body);
473
+ --type-body-font-size: var(--font-size-md);
474
+ --type-body-line-height: var(--line-height-md);
475
+ --type-body-font-weight: var(--font-weight-regular);
476
+ --type-body-letter-spacing: var(--letter-spacing-normal);
477
+ --type-body-sm-font-family: var(--font-family-body);
478
+ --type-body-sm-font-size: var(--font-size-sm);
479
+ --type-body-sm-line-height: var(--line-height-sm);
480
+ --type-body-sm-font-weight: var(--font-weight-regular);
481
+ --type-body-sm-letter-spacing: var(--letter-spacing-normal);
482
+ --type-label-font-family: var(--font-family-body);
483
+ --type-label-font-size: var(--font-size-sm);
484
+ --type-label-line-height: var(--line-height-sm);
485
+ --type-label-font-weight: var(--font-weight-semibold);
486
+ --type-label-letter-spacing: var(--letter-spacing-wide);
487
+ --type-caption-font-family: var(--font-family-body);
488
+ --type-caption-font-size: var(--font-size-xs);
489
+ --type-caption-line-height: var(--line-height-xs);
490
+ --type-caption-font-weight: var(--font-weight-regular);
491
+ --type-caption-letter-spacing: var(--letter-spacing-normal);
322
492
  --radius-control: var(--radius-md);
323
493
  --radius-card: var(--radius-lg);
324
494
  --radius-modal: var(--radius-xl);
@@ -326,9 +496,51 @@
326
496
  --shadow-card: var(--shadow-sm);
327
497
  --shadow-dropdown: var(--shadow-md);
328
498
  --shadow-modal: var(--shadow-lg);
499
+ /* Component (light) */
500
+ --component-button-background: var(--color-brand-primary);
501
+ --component-button-background-hover: var(--color-brand-primary-hover);
502
+ --component-button-background-active: var(--color-brand-primary-active);
503
+ --component-button-border: var(--color-brand-primary);
504
+ --component-button-color: var(--color-text-on-primary);
505
+ --component-button-height: var(--control-height-md);
506
+ --component-button-padding-x: var(--space-6);
507
+ --component-button-font-size: var(--font-size-sm);
508
+ --component-button-line-height: var(--line-height-sm);
509
+ --component-button-font-weight: var(--font-weight-semibold);
510
+ --component-button-radius: var(--radius-control);
511
+ --component-button-gap: var(--space-3);
512
+ --component-button-loading-spinner-size: var(--icon-md);
513
+ --component-control-background: var(--color-bg-elevated);
514
+ --component-control-background-hover: var(--color-bg-surface);
515
+ --component-control-background-disabled: var(--color-bg-muted);
516
+ --component-control-border: var(--color-border-default);
517
+ --component-control-border-hover: var(--color-border-strong);
518
+ --component-control-border-focus: var(--color-focus-ring);
519
+ --component-control-text: var(--color-text-primary);
520
+ --component-control-placeholder: var(--color-text-muted);
521
+ --component-control-radius: var(--radius-control);
522
+ --component-card-background: var(--color-bg-elevated);
523
+ --component-card-border: var(--color-border-subtle);
524
+ --component-card-radius: var(--radius-card);
525
+ --component-card-padding: var(--space-6);
526
+ --component-card-shadow: var(--shadow-card);
527
+ --component-card-shadow-hover: var(--shadow-dropdown);
528
+ --component-status-gap: var(--space-2);
529
+ --component-status-font-size: var(--font-size-sm);
530
+ --component-status-icon-size: var(--icon-sm);
531
+ --component-metric-background: var(--color-bg-elevated);
532
+ --component-metric-border: var(--color-border-subtle);
533
+ --component-metric-radius: var(--radius-card);
534
+ --component-metric-padding: var(--space-6);
535
+ --component-metric-value-font-size: var(--font-size-2xl);
536
+ --component-metric-label-font-size: var(--font-size-sm);
537
+ --component-meter-height: var(--space-3);
538
+ --component-meter-radius: var(--radius-pill);
539
+ --component-meter-track: var(--color-bg-muted);
329
540
  }
330
541
 
331
542
  [data-theme="dark"] {
543
+ color-scheme: var(--theme-color-scheme);
332
544
  /* Semantic (dark) */
333
545
  --color-brand-primary: var(--color-stone-100);
334
546
  --color-brand-primary-hover: var(--color-stone-0);
@@ -339,16 +551,18 @@
339
551
  --color-brand-on-accent: var(--color-stone-950);
340
552
  --color-text-primary: var(--color-stone-0);
341
553
  --color-text-secondary: var(--color-stone-200);
342
- --color-text-muted: var(--color-stone-400);
554
+ --color-text-muted: var(--color-stone-300);
343
555
  --color-text-inverse: var(--color-stone-0);
344
556
  --color-text-on-primary: var(--color-stone-950);
345
557
  --color-bg-canvas: var(--color-stone-950);
346
558
  --color-bg-surface: var(--color-stone-800);
347
559
  --color-bg-elevated: var(--color-stone-700);
348
560
  --color-bg-muted: var(--color-stone-900);
561
+ --color-bg-subtle: var(--color-bg-surface);
349
562
  --color-border-subtle: var(--color-stone-700);
350
- --color-border-default: var(--color-stone-600);
563
+ --color-border-default: var(--color-stone-400);
351
564
  --color-border-strong: var(--color-stone-500);
565
+ --color-border-muted: var(--color-border-subtle);
352
566
  --color-state-info: var(--color-ocean-300);
353
567
  --color-state-success: var(--color-green-300);
354
568
  --color-state-warning: var(--color-amber-300);
@@ -393,16 +607,113 @@
393
607
  --color-chart-series-7: var(--color-red-300);
394
608
  --color-chart-series-8: var(--color-stone-300);
395
609
  --theme-color-scheme: dark;
610
+ --font-family-heading: var(--font-family-brand);
611
+ --font-family-body: var(--font-family-text);
612
+ --font-family-code: var(--font-family-mono);
613
+ --type-display-font-family: var(--font-family-heading);
614
+ --type-display-font-size: var(--font-size-6xl);
615
+ --type-display-line-height: var(--line-height-6xl);
616
+ --type-display-font-weight: var(--font-weight-extrabold);
617
+ --type-display-letter-spacing: var(--letter-spacing-tight);
618
+ --type-h1-font-family: var(--font-family-heading);
619
+ --type-h1-font-size: var(--font-size-5xl);
620
+ --type-h1-line-height: var(--line-height-5xl);
621
+ --type-h1-font-weight: var(--font-weight-bold);
622
+ --type-h1-letter-spacing: var(--letter-spacing-tight);
623
+ --type-h2-font-family: var(--font-family-heading);
624
+ --type-h2-font-size: var(--font-size-4xl);
625
+ --type-h2-line-height: var(--line-height-4xl);
626
+ --type-h2-font-weight: var(--font-weight-semibold);
627
+ --type-h2-letter-spacing: var(--letter-spacing-normal);
628
+ --type-h3-font-family: var(--font-family-heading);
629
+ --type-h3-font-size: var(--font-size-3xl);
630
+ --type-h3-line-height: var(--line-height-3xl);
631
+ --type-h3-font-weight: var(--font-weight-semibold);
632
+ --type-h3-letter-spacing: var(--letter-spacing-normal);
633
+ --type-h4-font-family: var(--font-family-heading);
634
+ --type-h4-font-size: var(--font-size-2xl);
635
+ --type-h4-line-height: var(--line-height-2xl);
636
+ --type-h4-font-weight: var(--font-weight-semibold);
637
+ --type-h4-letter-spacing: var(--letter-spacing-normal);
638
+ --type-body-font-family: var(--font-family-body);
639
+ --type-body-font-size: var(--font-size-md);
640
+ --type-body-line-height: var(--line-height-md);
641
+ --type-body-font-weight: var(--font-weight-regular);
642
+ --type-body-letter-spacing: var(--letter-spacing-normal);
643
+ --type-body-sm-font-family: var(--font-family-body);
644
+ --type-body-sm-font-size: var(--font-size-sm);
645
+ --type-body-sm-line-height: var(--line-height-sm);
646
+ --type-body-sm-font-weight: var(--font-weight-regular);
647
+ --type-body-sm-letter-spacing: var(--letter-spacing-normal);
648
+ --type-label-font-family: var(--font-family-body);
649
+ --type-label-font-size: var(--font-size-sm);
650
+ --type-label-line-height: var(--line-height-sm);
651
+ --type-label-font-weight: var(--font-weight-semibold);
652
+ --type-label-letter-spacing: var(--letter-spacing-wide);
653
+ --type-caption-font-family: var(--font-family-body);
654
+ --type-caption-font-size: var(--font-size-xs);
655
+ --type-caption-line-height: var(--line-height-xs);
656
+ --type-caption-font-weight: var(--font-weight-regular);
657
+ --type-caption-letter-spacing: var(--letter-spacing-normal);
658
+ --radius-control: var(--radius-md);
659
+ --radius-card: var(--radius-lg);
660
+ --radius-modal: var(--radius-xl);
661
+ --radius-pill: var(--radius-round);
662
+ --shadow-card: var(--shadow-sm);
663
+ --shadow-dropdown: var(--shadow-md);
664
+ --shadow-modal: var(--shadow-lg);
665
+ /* Component (dark) */
666
+ --component-button-background: var(--color-brand-primary);
667
+ --component-button-background-hover: var(--color-brand-primary-hover);
668
+ --component-button-background-active: var(--color-brand-primary-active);
669
+ --component-button-border: var(--color-brand-primary);
670
+ --component-button-color: var(--color-text-on-primary);
671
+ --component-button-height: var(--control-height-md);
672
+ --component-button-padding-x: var(--space-6);
673
+ --component-button-font-size: var(--font-size-sm);
674
+ --component-button-line-height: var(--line-height-sm);
675
+ --component-button-font-weight: var(--font-weight-semibold);
676
+ --component-button-radius: var(--radius-control);
677
+ --component-button-gap: var(--space-3);
678
+ --component-button-loading-spinner-size: var(--icon-md);
679
+ --component-control-background: var(--color-bg-elevated);
680
+ --component-control-background-hover: var(--color-bg-surface);
681
+ --component-control-background-disabled: var(--color-bg-muted);
682
+ --component-control-border: var(--color-border-default);
683
+ --component-control-border-hover: var(--color-border-strong);
684
+ --component-control-border-focus: var(--color-focus-ring);
685
+ --component-control-text: var(--color-text-primary);
686
+ --component-control-placeholder: var(--color-text-muted);
687
+ --component-control-radius: var(--radius-control);
688
+ --component-card-background: var(--color-bg-elevated);
689
+ --component-card-border: var(--color-border-subtle);
690
+ --component-card-radius: var(--radius-card);
691
+ --component-card-padding: var(--space-6);
692
+ --component-card-shadow: var(--shadow-card);
693
+ --component-card-shadow-hover: var(--shadow-dropdown);
694
+ --component-status-gap: var(--space-2);
695
+ --component-status-font-size: var(--font-size-sm);
696
+ --component-status-icon-size: var(--icon-sm);
697
+ --component-metric-background: var(--color-bg-elevated);
698
+ --component-metric-border: var(--color-border-subtle);
699
+ --component-metric-radius: var(--radius-card);
700
+ --component-metric-padding: var(--space-6);
701
+ --component-metric-value-font-size: var(--font-size-2xl);
702
+ --component-metric-label-font-size: var(--font-size-sm);
703
+ --component-meter-height: var(--space-3);
704
+ --component-meter-radius: var(--radius-pill);
705
+ --component-meter-track: var(--color-bg-muted);
396
706
  }
397
707
 
398
708
  [data-theme="high-contrast"] {
709
+ color-scheme: var(--theme-color-scheme);
399
710
  /* Semantic (high-contrast) */
400
711
  --color-brand-primary: var(--color-stone-950);
401
712
  --color-brand-primary-hover: var(--color-stone-900);
402
713
  --color-brand-primary-active: var(--color-stone-800);
403
714
  --color-brand-accent: var(--color-orange-700);
404
715
  --color-brand-accent-hover: var(--color-orange-800);
405
- --color-brand-accent-active: var(--color-orange-600);
716
+ --color-brand-accent-active: var(--color-orange-900);
406
717
  --color-brand-on-accent: var(--color-stone-0);
407
718
  --color-text-primary: var(--color-stone-950);
408
719
  --color-text-secondary: var(--color-stone-800);
@@ -413,9 +724,11 @@
413
724
  --color-bg-surface: var(--color-stone-0);
414
725
  --color-bg-elevated: var(--color-stone-0);
415
726
  --color-bg-muted: var(--color-stone-50);
727
+ --color-bg-subtle: var(--color-bg-surface);
416
728
  --color-border-subtle: var(--color-stone-400);
417
729
  --color-border-default: var(--color-stone-700);
418
730
  --color-border-strong: var(--color-stone-950);
731
+ --color-border-muted: var(--color-border-subtle);
419
732
  --color-state-info: var(--color-ocean-800);
420
733
  --color-state-success: var(--color-green-700);
421
734
  --color-state-warning: var(--color-amber-700);
@@ -460,6 +773,102 @@
460
773
  --color-chart-series-7: var(--color-red-700);
461
774
  --color-chart-series-8: var(--color-stone-800);
462
775
  --theme-color-scheme: light;
776
+ --font-family-heading: var(--font-family-brand);
777
+ --font-family-body: var(--font-family-text);
778
+ --font-family-code: var(--font-family-mono);
779
+ --type-display-font-family: var(--font-family-heading);
780
+ --type-display-font-size: var(--font-size-6xl);
781
+ --type-display-line-height: var(--line-height-6xl);
782
+ --type-display-font-weight: var(--font-weight-extrabold);
783
+ --type-display-letter-spacing: var(--letter-spacing-tight);
784
+ --type-h1-font-family: var(--font-family-heading);
785
+ --type-h1-font-size: var(--font-size-5xl);
786
+ --type-h1-line-height: var(--line-height-5xl);
787
+ --type-h1-font-weight: var(--font-weight-bold);
788
+ --type-h1-letter-spacing: var(--letter-spacing-tight);
789
+ --type-h2-font-family: var(--font-family-heading);
790
+ --type-h2-font-size: var(--font-size-4xl);
791
+ --type-h2-line-height: var(--line-height-4xl);
792
+ --type-h2-font-weight: var(--font-weight-semibold);
793
+ --type-h2-letter-spacing: var(--letter-spacing-normal);
794
+ --type-h3-font-family: var(--font-family-heading);
795
+ --type-h3-font-size: var(--font-size-3xl);
796
+ --type-h3-line-height: var(--line-height-3xl);
797
+ --type-h3-font-weight: var(--font-weight-semibold);
798
+ --type-h3-letter-spacing: var(--letter-spacing-normal);
799
+ --type-h4-font-family: var(--font-family-heading);
800
+ --type-h4-font-size: var(--font-size-2xl);
801
+ --type-h4-line-height: var(--line-height-2xl);
802
+ --type-h4-font-weight: var(--font-weight-semibold);
803
+ --type-h4-letter-spacing: var(--letter-spacing-normal);
804
+ --type-body-font-family: var(--font-family-body);
805
+ --type-body-font-size: var(--font-size-md);
806
+ --type-body-line-height: var(--line-height-md);
807
+ --type-body-font-weight: var(--font-weight-regular);
808
+ --type-body-letter-spacing: var(--letter-spacing-normal);
809
+ --type-body-sm-font-family: var(--font-family-body);
810
+ --type-body-sm-font-size: var(--font-size-sm);
811
+ --type-body-sm-line-height: var(--line-height-sm);
812
+ --type-body-sm-font-weight: var(--font-weight-regular);
813
+ --type-body-sm-letter-spacing: var(--letter-spacing-normal);
814
+ --type-label-font-family: var(--font-family-body);
815
+ --type-label-font-size: var(--font-size-sm);
816
+ --type-label-line-height: var(--line-height-sm);
817
+ --type-label-font-weight: var(--font-weight-semibold);
818
+ --type-label-letter-spacing: var(--letter-spacing-wide);
819
+ --type-caption-font-family: var(--font-family-body);
820
+ --type-caption-font-size: var(--font-size-xs);
821
+ --type-caption-line-height: var(--line-height-xs);
822
+ --type-caption-font-weight: var(--font-weight-regular);
823
+ --type-caption-letter-spacing: var(--letter-spacing-normal);
824
+ --radius-control: var(--radius-md);
825
+ --radius-card: var(--radius-lg);
826
+ --radius-modal: var(--radius-xl);
827
+ --radius-pill: var(--radius-round);
828
+ --shadow-card: var(--shadow-sm);
829
+ --shadow-dropdown: var(--shadow-md);
830
+ --shadow-modal: var(--shadow-lg);
831
+ /* Component (high-contrast) */
832
+ --component-button-background: var(--color-brand-primary);
833
+ --component-button-background-hover: var(--color-brand-primary-hover);
834
+ --component-button-background-active: var(--color-brand-primary-active);
835
+ --component-button-border: var(--color-brand-primary);
836
+ --component-button-color: var(--color-text-on-primary);
837
+ --component-button-height: var(--control-height-md);
838
+ --component-button-padding-x: var(--space-6);
839
+ --component-button-font-size: var(--font-size-sm);
840
+ --component-button-line-height: var(--line-height-sm);
841
+ --component-button-font-weight: var(--font-weight-semibold);
842
+ --component-button-radius: var(--radius-control);
843
+ --component-button-gap: var(--space-3);
844
+ --component-button-loading-spinner-size: var(--icon-md);
845
+ --component-control-background: var(--color-bg-elevated);
846
+ --component-control-background-hover: var(--color-bg-surface);
847
+ --component-control-background-disabled: var(--color-bg-muted);
848
+ --component-control-border: var(--color-border-default);
849
+ --component-control-border-hover: var(--color-border-strong);
850
+ --component-control-border-focus: var(--color-focus-ring);
851
+ --component-control-text: var(--color-text-primary);
852
+ --component-control-placeholder: var(--color-text-muted);
853
+ --component-control-radius: var(--radius-control);
854
+ --component-card-background: var(--color-bg-elevated);
855
+ --component-card-border: var(--color-border-subtle);
856
+ --component-card-radius: var(--radius-card);
857
+ --component-card-padding: var(--space-6);
858
+ --component-card-shadow: var(--shadow-card);
859
+ --component-card-shadow-hover: var(--shadow-dropdown);
860
+ --component-status-gap: var(--space-2);
861
+ --component-status-font-size: var(--font-size-sm);
862
+ --component-status-icon-size: var(--icon-sm);
863
+ --component-metric-background: var(--color-bg-elevated);
864
+ --component-metric-border: var(--color-border-subtle);
865
+ --component-metric-radius: var(--radius-card);
866
+ --component-metric-padding: var(--space-6);
867
+ --component-metric-value-font-size: var(--font-size-2xl);
868
+ --component-metric-label-font-size: var(--font-size-sm);
869
+ --component-meter-height: var(--space-3);
870
+ --component-meter-radius: var(--radius-pill);
871
+ --component-meter-track: var(--color-bg-muted);
463
872
  }
464
873
 
465
874
  @media (prefers-color-scheme: dark) {
@@ -471,19 +880,16 @@
471
880
  --color-brand-accent: var(--color-orange-400);
472
881
  --color-brand-accent-hover: var(--color-orange-300);
473
882
  --color-brand-accent-active: var(--color-orange-500);
474
- --color-brand-on-accent: var(--color-stone-950);
475
883
  --color-text-primary: var(--color-stone-0);
476
884
  --color-text-secondary: var(--color-stone-200);
477
- --color-text-muted: var(--color-stone-400);
478
- --color-text-inverse: var(--color-stone-0);
885
+ --color-text-muted: var(--color-stone-300);
479
886
  --color-text-on-primary: var(--color-stone-950);
480
887
  --color-bg-canvas: var(--color-stone-950);
481
888
  --color-bg-surface: var(--color-stone-800);
482
889
  --color-bg-elevated: var(--color-stone-700);
483
890
  --color-bg-muted: var(--color-stone-900);
484
891
  --color-border-subtle: var(--color-stone-700);
485
- --color-border-default: var(--color-stone-600);
486
- --color-border-strong: var(--color-stone-500);
892
+ --color-border-default: var(--color-stone-400);
487
893
  --color-state-info: var(--color-ocean-300);
488
894
  --color-state-success: var(--color-green-300);
489
895
  --color-state-warning: var(--color-amber-300);
@@ -539,7 +945,7 @@
539
945
  --color-brand-primary-active: var(--color-stone-800);
540
946
  --color-brand-accent: var(--color-orange-700);
541
947
  --color-brand-accent-hover: var(--color-orange-800);
542
- --color-brand-accent-active: var(--color-orange-600);
948
+ --color-brand-accent-active: var(--color-orange-900);
543
949
  --color-brand-on-accent: var(--color-stone-0);
544
950
  --color-text-primary: var(--color-stone-950);
545
951
  --color-text-secondary: var(--color-stone-800);
@@ -550,9 +956,11 @@
550
956
  --color-bg-surface: var(--color-stone-0);
551
957
  --color-bg-elevated: var(--color-stone-0);
552
958
  --color-bg-muted: var(--color-stone-50);
959
+ --color-bg-subtle: var(--color-bg-surface);
553
960
  --color-border-subtle: var(--color-stone-400);
554
961
  --color-border-default: var(--color-stone-700);
555
962
  --color-border-strong: var(--color-stone-950);
963
+ --color-border-muted: var(--color-border-subtle);
556
964
  --color-state-info: var(--color-ocean-800);
557
965
  --color-state-success: var(--color-green-700);
558
966
  --color-state-warning: var(--color-amber-700);
@@ -597,5 +1005,101 @@
597
1005
  --color-chart-series-7: var(--color-red-700);
598
1006
  --color-chart-series-8: var(--color-stone-800);
599
1007
  --theme-color-scheme: light;
1008
+ --font-family-heading: var(--font-family-brand);
1009
+ --font-family-body: var(--font-family-text);
1010
+ --font-family-code: var(--font-family-mono);
1011
+ --type-display-font-family: var(--font-family-heading);
1012
+ --type-display-font-size: var(--font-size-6xl);
1013
+ --type-display-line-height: var(--line-height-6xl);
1014
+ --type-display-font-weight: var(--font-weight-extrabold);
1015
+ --type-display-letter-spacing: var(--letter-spacing-tight);
1016
+ --type-h1-font-family: var(--font-family-heading);
1017
+ --type-h1-font-size: var(--font-size-5xl);
1018
+ --type-h1-line-height: var(--line-height-5xl);
1019
+ --type-h1-font-weight: var(--font-weight-bold);
1020
+ --type-h1-letter-spacing: var(--letter-spacing-tight);
1021
+ --type-h2-font-family: var(--font-family-heading);
1022
+ --type-h2-font-size: var(--font-size-4xl);
1023
+ --type-h2-line-height: var(--line-height-4xl);
1024
+ --type-h2-font-weight: var(--font-weight-semibold);
1025
+ --type-h2-letter-spacing: var(--letter-spacing-normal);
1026
+ --type-h3-font-family: var(--font-family-heading);
1027
+ --type-h3-font-size: var(--font-size-3xl);
1028
+ --type-h3-line-height: var(--line-height-3xl);
1029
+ --type-h3-font-weight: var(--font-weight-semibold);
1030
+ --type-h3-letter-spacing: var(--letter-spacing-normal);
1031
+ --type-h4-font-family: var(--font-family-heading);
1032
+ --type-h4-font-size: var(--font-size-2xl);
1033
+ --type-h4-line-height: var(--line-height-2xl);
1034
+ --type-h4-font-weight: var(--font-weight-semibold);
1035
+ --type-h4-letter-spacing: var(--letter-spacing-normal);
1036
+ --type-body-font-family: var(--font-family-body);
1037
+ --type-body-font-size: var(--font-size-md);
1038
+ --type-body-line-height: var(--line-height-md);
1039
+ --type-body-font-weight: var(--font-weight-regular);
1040
+ --type-body-letter-spacing: var(--letter-spacing-normal);
1041
+ --type-body-sm-font-family: var(--font-family-body);
1042
+ --type-body-sm-font-size: var(--font-size-sm);
1043
+ --type-body-sm-line-height: var(--line-height-sm);
1044
+ --type-body-sm-font-weight: var(--font-weight-regular);
1045
+ --type-body-sm-letter-spacing: var(--letter-spacing-normal);
1046
+ --type-label-font-family: var(--font-family-body);
1047
+ --type-label-font-size: var(--font-size-sm);
1048
+ --type-label-line-height: var(--line-height-sm);
1049
+ --type-label-font-weight: var(--font-weight-semibold);
1050
+ --type-label-letter-spacing: var(--letter-spacing-wide);
1051
+ --type-caption-font-family: var(--font-family-body);
1052
+ --type-caption-font-size: var(--font-size-xs);
1053
+ --type-caption-line-height: var(--line-height-xs);
1054
+ --type-caption-font-weight: var(--font-weight-regular);
1055
+ --type-caption-letter-spacing: var(--letter-spacing-normal);
1056
+ --radius-control: var(--radius-md);
1057
+ --radius-card: var(--radius-lg);
1058
+ --radius-modal: var(--radius-xl);
1059
+ --radius-pill: var(--radius-round);
1060
+ --shadow-card: var(--shadow-sm);
1061
+ --shadow-dropdown: var(--shadow-md);
1062
+ --shadow-modal: var(--shadow-lg);
1063
+ /* Component (high-contrast (system)) */
1064
+ --component-button-background: var(--color-brand-primary);
1065
+ --component-button-background-hover: var(--color-brand-primary-hover);
1066
+ --component-button-background-active: var(--color-brand-primary-active);
1067
+ --component-button-border: var(--color-brand-primary);
1068
+ --component-button-color: var(--color-text-on-primary);
1069
+ --component-button-height: var(--control-height-md);
1070
+ --component-button-padding-x: var(--space-6);
1071
+ --component-button-font-size: var(--font-size-sm);
1072
+ --component-button-line-height: var(--line-height-sm);
1073
+ --component-button-font-weight: var(--font-weight-semibold);
1074
+ --component-button-radius: var(--radius-control);
1075
+ --component-button-gap: var(--space-3);
1076
+ --component-button-loading-spinner-size: var(--icon-md);
1077
+ --component-control-background: var(--color-bg-elevated);
1078
+ --component-control-background-hover: var(--color-bg-surface);
1079
+ --component-control-background-disabled: var(--color-bg-muted);
1080
+ --component-control-border: var(--color-border-default);
1081
+ --component-control-border-hover: var(--color-border-strong);
1082
+ --component-control-border-focus: var(--color-focus-ring);
1083
+ --component-control-text: var(--color-text-primary);
1084
+ --component-control-placeholder: var(--color-text-muted);
1085
+ --component-control-radius: var(--radius-control);
1086
+ --component-card-background: var(--color-bg-elevated);
1087
+ --component-card-border: var(--color-border-subtle);
1088
+ --component-card-radius: var(--radius-card);
1089
+ --component-card-padding: var(--space-6);
1090
+ --component-card-shadow: var(--shadow-card);
1091
+ --component-card-shadow-hover: var(--shadow-dropdown);
1092
+ --component-status-gap: var(--space-2);
1093
+ --component-status-font-size: var(--font-size-sm);
1094
+ --component-status-icon-size: var(--icon-sm);
1095
+ --component-metric-background: var(--color-bg-elevated);
1096
+ --component-metric-border: var(--color-border-subtle);
1097
+ --component-metric-radius: var(--radius-card);
1098
+ --component-metric-padding: var(--space-6);
1099
+ --component-metric-value-font-size: var(--font-size-2xl);
1100
+ --component-metric-label-font-size: var(--font-size-sm);
1101
+ --component-meter-height: var(--space-3);
1102
+ --component-meter-radius: var(--radius-pill);
1103
+ --component-meter-track: var(--color-bg-muted);
600
1104
  }
601
1105
  }