@neuravision/construct 2.0.3 → 2.1.2

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 (138) hide show
  1. package/CHANGELOG.md +318 -0
  2. package/README.md +158 -149
  3. package/behaviors/combobox.js +486 -0
  4. package/behaviors/drawer.js +18 -0
  5. package/behaviors/dropdown.js +310 -0
  6. package/behaviors/index.d.ts +335 -0
  7. package/behaviors/index.js +9 -0
  8. package/behaviors/internal/dialog-controller.js +421 -0
  9. package/behaviors/internal/dom.js +408 -0
  10. package/behaviors/internal/overlay.js +241 -0
  11. package/behaviors/internal/popup-layer.js +190 -0
  12. package/behaviors/modal.js +17 -0
  13. package/behaviors/popover.js +278 -0
  14. package/behaviors/select-menu.js +344 -0
  15. package/behaviors/tabs.js +241 -0
  16. package/behaviors/toggle-group.js +266 -0
  17. package/behaviors/tooltip.js +257 -0
  18. package/components/README.md +319 -83
  19. package/components/_shared.css +22 -10
  20. package/components/_shell-shared.css +20 -4
  21. package/components/accordion.css +8 -0
  22. package/components/app-shell-v2.css +28 -14
  23. package/components/app-shell.css +30 -14
  24. package/components/badge.css +15 -0
  25. package/components/banner.css +32 -1
  26. package/components/button.css +103 -15
  27. package/components/card.css +67 -8
  28. package/components/chart.css +26 -0
  29. package/components/checkbox.css +35 -2
  30. package/components/chip.css +30 -2
  31. package/components/combobox.css +21 -0
  32. package/components/datepicker.css +58 -9
  33. package/components/datum.css +277 -0
  34. package/components/dropdown.css +23 -3
  35. package/components/field.css +6 -4
  36. package/components/file-upload.css +1 -1
  37. package/components/index.css +5 -0
  38. package/components/list.css +28 -2
  39. package/components/meter.css +182 -0
  40. package/components/navbar.css +102 -4
  41. package/components/pagination.css +18 -0
  42. package/components/progress-bar.css +22 -1
  43. package/components/select-menu.css +8 -0
  44. package/components/select.css +8 -0
  45. package/components/sidebar.css +15 -2
  46. package/components/skip-link.css +6 -2
  47. package/components/slider.css +7 -1
  48. package/components/status.css +107 -0
  49. package/components/switch.css +66 -5
  50. package/components/table.css +53 -4
  51. package/components/tabs.css +55 -3
  52. package/components/toast.css +10 -1
  53. package/components/toggle-group.css +16 -5
  54. package/components/toolbar.css +17 -1
  55. package/components/tooltip.css +4 -0
  56. package/components/tree.css +30 -0
  57. package/docs/architecture.md +79 -0
  58. package/docs/behaviors.md +122 -0
  59. package/docs/fonts.md +70 -0
  60. package/docs/governance.md +85 -0
  61. package/docs/guidelines.md +72 -25
  62. package/examples/react/README.md +20 -0
  63. package/examples/react/SettingsModal.jsx +66 -0
  64. package/examples/react/construct.css +5 -0
  65. package/fonts.css +10 -0
  66. package/foundations.css +14 -1
  67. package/package.json +76 -21
  68. package/schemas/components.schema.json +122 -0
  69. package/schemas/examples/theme.example.json +27 -0
  70. package/schemas/primitives.schema.json +135 -0
  71. package/schemas/semantic.schema.json +224 -0
  72. package/schemas/theme.schema.json +63 -0
  73. package/scripts/build-tokens.mjs +1499 -0
  74. package/scripts/construct-theme.mjs +43 -0
  75. package/scripts/validate-tokens.mjs +25 -0
  76. package/standalone/accordion.css +3 -0
  77. package/standalone/alert.css +3 -0
  78. package/standalone/app-shell-v2.css +4 -0
  79. package/standalone/app-shell.css +4 -0
  80. package/standalone/avatar.css +3 -0
  81. package/standalone/badge.css +3 -0
  82. package/standalone/banner.css +3 -0
  83. package/standalone/breadcrumbs.css +3 -0
  84. package/standalone/button.css +3 -0
  85. package/standalone/card.css +3 -0
  86. package/standalone/chart.css +3 -0
  87. package/standalone/checkbox.css +3 -0
  88. package/standalone/chip.css +3 -0
  89. package/standalone/combobox.css +3 -0
  90. package/standalone/core.css +4 -0
  91. package/standalone/data-table.css +3 -0
  92. package/standalone/datepicker.css +3 -0
  93. package/standalone/datum.css +3 -0
  94. package/standalone/divider.css +3 -0
  95. package/standalone/drawer.css +3 -0
  96. package/standalone/dropdown.css +3 -0
  97. package/standalone/empty-state.css +3 -0
  98. package/standalone/field.css +3 -0
  99. package/standalone/file-upload.css +3 -0
  100. package/standalone/icon.css +3 -0
  101. package/standalone/input.css +3 -0
  102. package/standalone/list.css +3 -0
  103. package/standalone/meter.css +3 -0
  104. package/standalone/modal.css +3 -0
  105. package/standalone/navbar.css +3 -0
  106. package/standalone/pagination.css +3 -0
  107. package/standalone/popover.css +3 -0
  108. package/standalone/progress-bar.css +3 -0
  109. package/standalone/select-menu.css +3 -0
  110. package/standalone/select.css +3 -0
  111. package/standalone/sidebar.css +3 -0
  112. package/standalone/skeleton.css +3 -0
  113. package/standalone/skip-link.css +3 -0
  114. package/standalone/slider.css +3 -0
  115. package/standalone/spinner.css +3 -0
  116. package/standalone/status.css +3 -0
  117. package/standalone/switch.css +3 -0
  118. package/standalone/table.css +3 -0
  119. package/standalone/tabs.css +3 -0
  120. package/standalone/textarea.css +3 -0
  121. package/standalone/toast.css +3 -0
  122. package/standalone/toggle-group.css +3 -0
  123. package/standalone/toolbar.css +3 -0
  124. package/standalone/tooltip.css +3 -0
  125. package/standalone/tree.css +3 -0
  126. package/themes/README.md +37 -0
  127. package/themes/walnut.theme.json +106 -0
  128. package/tokens/README.md +135 -123
  129. package/tokens/components.json +64 -0
  130. package/tokens/primitives.json +268 -0
  131. package/tokens/semantic.dark.json +94 -0
  132. package/tokens/semantic.high-contrast-dark.json +94 -0
  133. package/tokens/semantic.high-contrast.json +94 -0
  134. package/tokens/semantic.light.json +179 -0
  135. package/tokens/tokens.css +960 -58
  136. package/tokens/tokens.js +729 -120
  137. package/tokens/tokens.json +1158 -116
  138. package/tokens/tokens.ts +729 -120
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,30 +102,32 @@
102
102
  --font-weight-semibold: 600;
103
103
  --font-weight-bold: 700;
104
104
  --font-weight-extrabold: 800;
105
- --font-size-xs: 12px;
106
- --font-size-sm: 14px;
107
- --font-size-md: 16px;
108
- --font-size-lg: 18px;
109
- --font-size-xl: 20px;
110
- --font-size-2xl: 24px;
111
- --font-size-3xl: 28px;
112
- --font-size-4xl: 32px;
113
- --font-size-5xl: 40px;
114
- --font-size-6xl: 48px;
115
- --line-height-xs: 16px;
116
- --line-height-sm: 20px;
117
- --line-height-md: 24px;
118
- --line-height-lg: 28px;
119
- --line-height-xl: 32px;
120
- --line-height-2xl: 36px;
121
- --line-height-3xl: 40px;
122
- --line-height-4xl: 44px;
123
- --line-height-5xl: 52px;
124
- --line-height-6xl: 60px;
105
+ --font-size-2xs: 0.625rem;
106
+ --font-size-xs: 0.75rem;
107
+ --font-size-sm: 0.875rem;
108
+ --font-size-md: 1rem;
109
+ --font-size-lg: 1.125rem;
110
+ --font-size-xl: 1.25rem;
111
+ --font-size-2xl: 1.5rem;
112
+ --font-size-3xl: 1.75rem;
113
+ --font-size-4xl: 2rem;
114
+ --font-size-5xl: 2.5rem;
115
+ --font-size-6xl: 3rem;
116
+ --line-height-2xs: 0.875rem;
117
+ --line-height-xs: 1rem;
118
+ --line-height-sm: 1.25rem;
119
+ --line-height-md: 1.5rem;
120
+ --line-height-lg: 1.75rem;
121
+ --line-height-xl: 2rem;
122
+ --line-height-2xl: 2.25rem;
123
+ --line-height-3xl: 2.5rem;
124
+ --line-height-4xl: 2.75rem;
125
+ --line-height-5xl: 3.25rem;
126
+ --line-height-6xl: 3.75rem;
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,150 @@
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-accent-strong: var(--color-orange-600);
265
+ --color-brand-on-accent: var(--color-stone-950);
266
+ --color-text-primary: var(--color-stone-950);
267
+ --color-text-secondary: var(--color-stone-700);
268
+ --color-text-muted: var(--color-stone-600);
269
+ --color-text-inverse: var(--color-stone-0);
270
+ --color-text-on-primary: var(--color-stone-0);
271
+ --color-bg-canvas: var(--color-stone-50);
272
+ --color-bg-surface: var(--color-stone-100);
273
+ --color-bg-elevated: var(--color-stone-0);
274
+ --color-bg-muted: var(--color-stone-200);
275
+ --color-bg-subtle: var(--color-bg-surface);
276
+ --color-border-subtle: var(--color-stone-200);
277
+ --color-border-default: var(--color-stone-500);
278
+ --color-border-strong: var(--color-stone-600);
279
+ --color-border-muted: var(--color-border-subtle);
280
+ --color-state-info: var(--color-ocean-600);
281
+ --color-state-success: var(--color-green-700);
282
+ --color-state-warning: var(--color-amber-700);
283
+ --color-state-danger: var(--color-red-500);
284
+ --color-state-on-solid: var(--color-stone-0);
285
+ --color-state-info-surface: var(--color-ocean-50);
286
+ --color-state-success-surface: var(--color-green-50);
287
+ --color-state-warning-surface: var(--color-amber-50);
288
+ --color-state-danger-surface: var(--color-red-50);
289
+ --color-state-info-border: var(--color-ocean-200);
290
+ --color-state-success-border: var(--color-green-200);
291
+ --color-state-warning-border: var(--color-amber-200);
292
+ --color-state-danger-border: var(--color-red-200);
293
+ --color-state-info-text: var(--color-ocean-700);
294
+ --color-state-success-text: var(--color-green-700);
295
+ --color-state-warning-text: var(--color-amber-700);
296
+ --color-state-danger-text: var(--color-red-700);
297
+ --color-overlay-scrim: rgba(22, 19, 15, 0.58);
298
+ --color-focus-ring: var(--color-orange-600);
299
+ --color-avatar-seed-1-bg: var(--color-ocean-100);
300
+ --color-avatar-seed-1-fg: var(--color-ocean-800);
301
+ --color-avatar-seed-2-bg: var(--color-teal-100);
302
+ --color-avatar-seed-2-fg: var(--color-teal-800);
303
+ --color-avatar-seed-3-bg: var(--color-amber-100);
304
+ --color-avatar-seed-3-fg: var(--color-amber-800);
305
+ --color-avatar-seed-4-bg: var(--color-red-100);
306
+ --color-avatar-seed-4-fg: var(--color-red-800);
307
+ --color-avatar-seed-5-bg: var(--color-green-100);
308
+ --color-avatar-seed-5-fg: var(--color-green-800);
309
+ --color-avatar-seed-6-bg: var(--color-purple-100);
310
+ --color-avatar-seed-6-fg: var(--color-purple-800);
311
+ --color-avatar-seed-7-bg: var(--color-pink-100);
312
+ --color-avatar-seed-7-fg: var(--color-pink-800);
313
+ --color-avatar-seed-8-bg: var(--color-stone-200);
314
+ --color-avatar-seed-8-fg: var(--color-stone-800);
315
+ --color-chart-series-1: var(--color-ocean-600);
316
+ --color-chart-series-2: var(--color-amber-600);
317
+ --color-chart-series-3: var(--color-green-600);
318
+ --color-chart-series-4: var(--color-purple-500);
319
+ --color-chart-series-5: var(--color-pink-500);
320
+ --color-chart-series-6: var(--color-teal-600);
321
+ --color-chart-series-7: var(--color-red-500);
322
+ --color-chart-series-8: var(--color-stone-600);
323
+ --theme-color-scheme: light;
324
+ --font-family-heading: var(--font-family-brand);
325
+ --font-family-body: var(--font-family-text);
326
+ --font-family-code: var(--font-family-mono);
327
+ --radius-control: var(--radius-md);
328
+ --radius-card: var(--radius-lg);
329
+ --radius-modal: var(--radius-xl);
330
+ --radius-pill: var(--radius-round);
331
+ --shadow-card: var(--shadow-sm);
332
+ --shadow-dropdown: var(--shadow-md);
333
+ --shadow-modal: var(--shadow-lg);
334
+ /* Component: defaults */
335
+ --component-button-background: var(--color-brand-primary);
336
+ --component-button-background-hover: var(--color-brand-primary-hover);
337
+ --component-button-background-active: var(--color-brand-primary-active);
338
+ --component-button-border: var(--color-brand-primary);
339
+ --component-button-color: var(--color-text-on-primary);
340
+ --component-button-height: var(--control-height-md);
341
+ --component-button-padding-x: var(--space-6);
342
+ --component-button-font-size: var(--font-size-sm);
343
+ --component-button-line-height: var(--line-height-sm);
344
+ --component-button-font-weight: var(--font-weight-semibold);
345
+ --component-button-radius: var(--radius-control);
346
+ --component-button-gap: var(--space-3);
347
+ --component-button-loading-spinner-size: var(--icon-md);
348
+ --component-control-background: var(--color-bg-elevated);
349
+ --component-control-background-hover: var(--color-bg-surface);
350
+ --component-control-background-disabled: var(--color-bg-muted);
351
+ --component-control-border: var(--color-border-default);
352
+ --component-control-border-hover: var(--color-border-strong);
353
+ --component-control-border-focus: var(--color-focus-ring);
354
+ --component-control-text: var(--color-text-primary);
355
+ --component-control-placeholder: var(--color-text-muted);
356
+ --component-control-radius: var(--radius-control);
357
+ --component-card-background: var(--color-bg-elevated);
358
+ --component-card-border: var(--color-border-subtle);
359
+ --component-card-radius: var(--radius-card);
360
+ --component-card-padding: var(--space-6);
361
+ --component-card-shadow: var(--shadow-card);
362
+ --component-card-shadow-hover: var(--shadow-dropdown);
363
+ --component-status-gap: var(--space-2);
364
+ --component-status-font-size: var(--font-size-sm);
365
+ --component-status-icon-size: var(--icon-sm);
366
+ --component-metric-background: var(--color-bg-elevated);
367
+ --component-metric-border: var(--color-border-subtle);
368
+ --component-metric-radius: var(--radius-card);
369
+ --component-metric-padding: var(--space-6);
370
+ --component-metric-value-font-size: var(--font-size-2xl);
371
+ --component-metric-label-font-size: var(--font-size-sm);
372
+ --component-meter-height: var(--space-3);
373
+ --component-meter-radius: var(--radius-pill);
374
+ --component-meter-track: var(--color-bg-muted);
375
+ --component-datum-edge-width: var(--border-thick);
376
+ --component-datum-tick-width: 24px;
377
+ --component-datum-tick-height: 3px;
378
+ --component-datum-origin-length: 48px;
379
+ --component-datum-mark-size: 18px;
380
+ --component-datum-scale-height: 9px;
381
+ --component-datum-scale-minor-step: 12px;
382
+ --component-datum-scale-major-step: 60px;
383
+ }
384
+
385
+ [data-theme="light"] {
386
+ color-scheme: var(--theme-color-scheme);
255
387
  /* Semantic (light) */
256
388
  --color-brand-primary: var(--color-stone-950);
257
389
  --color-brand-primary-hover: var(--color-stone-800);
258
390
  --color-brand-primary-active: var(--color-stone-900);
259
391
  --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);
392
+ --color-brand-accent-hover: var(--color-orange-400);
393
+ --color-brand-accent-active: var(--color-orange-300);
394
+ --color-brand-accent-strong: var(--color-orange-600);
262
395
  --color-brand-on-accent: var(--color-stone-950);
263
396
  --color-text-primary: var(--color-stone-950);
264
397
  --color-text-secondary: var(--color-stone-700);
@@ -269,12 +402,14 @@
269
402
  --color-bg-surface: var(--color-stone-100);
270
403
  --color-bg-elevated: var(--color-stone-0);
271
404
  --color-bg-muted: var(--color-stone-200);
405
+ --color-bg-subtle: var(--color-bg-surface);
272
406
  --color-border-subtle: var(--color-stone-200);
273
- --color-border-default: var(--color-stone-300);
274
- --color-border-strong: var(--color-stone-500);
407
+ --color-border-default: var(--color-stone-500);
408
+ --color-border-strong: var(--color-stone-600);
409
+ --color-border-muted: var(--color-border-subtle);
275
410
  --color-state-info: var(--color-ocean-600);
276
- --color-state-success: var(--color-green-500);
277
- --color-state-warning: var(--color-amber-400);
411
+ --color-state-success: var(--color-green-700);
412
+ --color-state-warning: var(--color-amber-700);
278
413
  --color-state-danger: var(--color-red-500);
279
414
  --color-state-on-solid: var(--color-stone-0);
280
415
  --color-state-info-surface: var(--color-ocean-50);
@@ -319,6 +454,51 @@
319
454
  --font-family-heading: var(--font-family-brand);
320
455
  --font-family-body: var(--font-family-text);
321
456
  --font-family-code: var(--font-family-mono);
457
+ --type-display-font-family: var(--font-family-heading);
458
+ --type-display-font-size: var(--font-size-6xl);
459
+ --type-display-line-height: var(--line-height-6xl);
460
+ --type-display-font-weight: var(--font-weight-extrabold);
461
+ --type-display-letter-spacing: var(--letter-spacing-tight);
462
+ --type-h1-font-family: var(--font-family-heading);
463
+ --type-h1-font-size: var(--font-size-5xl);
464
+ --type-h1-line-height: var(--line-height-5xl);
465
+ --type-h1-font-weight: var(--font-weight-bold);
466
+ --type-h1-letter-spacing: var(--letter-spacing-tight);
467
+ --type-h2-font-family: var(--font-family-heading);
468
+ --type-h2-font-size: var(--font-size-4xl);
469
+ --type-h2-line-height: var(--line-height-4xl);
470
+ --type-h2-font-weight: var(--font-weight-semibold);
471
+ --type-h2-letter-spacing: var(--letter-spacing-normal);
472
+ --type-h3-font-family: var(--font-family-heading);
473
+ --type-h3-font-size: var(--font-size-3xl);
474
+ --type-h3-line-height: var(--line-height-3xl);
475
+ --type-h3-font-weight: var(--font-weight-semibold);
476
+ --type-h3-letter-spacing: var(--letter-spacing-normal);
477
+ --type-h4-font-family: var(--font-family-heading);
478
+ --type-h4-font-size: var(--font-size-2xl);
479
+ --type-h4-line-height: var(--line-height-2xl);
480
+ --type-h4-font-weight: var(--font-weight-semibold);
481
+ --type-h4-letter-spacing: var(--letter-spacing-normal);
482
+ --type-body-font-family: var(--font-family-body);
483
+ --type-body-font-size: var(--font-size-md);
484
+ --type-body-line-height: var(--line-height-md);
485
+ --type-body-font-weight: var(--font-weight-regular);
486
+ --type-body-letter-spacing: var(--letter-spacing-normal);
487
+ --type-body-sm-font-family: var(--font-family-body);
488
+ --type-body-sm-font-size: var(--font-size-sm);
489
+ --type-body-sm-line-height: var(--line-height-sm);
490
+ --type-body-sm-font-weight: var(--font-weight-regular);
491
+ --type-body-sm-letter-spacing: var(--letter-spacing-normal);
492
+ --type-label-font-family: var(--font-family-body);
493
+ --type-label-font-size: var(--font-size-sm);
494
+ --type-label-line-height: var(--line-height-sm);
495
+ --type-label-font-weight: var(--font-weight-semibold);
496
+ --type-label-letter-spacing: var(--letter-spacing-wide);
497
+ --type-caption-font-family: var(--font-family-body);
498
+ --type-caption-font-size: var(--font-size-xs);
499
+ --type-caption-line-height: var(--line-height-xs);
500
+ --type-caption-font-weight: var(--font-weight-regular);
501
+ --type-caption-letter-spacing: var(--letter-spacing-normal);
322
502
  --radius-control: var(--radius-md);
323
503
  --radius-card: var(--radius-lg);
324
504
  --radius-modal: var(--radius-xl);
@@ -326,9 +506,59 @@
326
506
  --shadow-card: var(--shadow-sm);
327
507
  --shadow-dropdown: var(--shadow-md);
328
508
  --shadow-modal: var(--shadow-lg);
509
+ /* Component (light) */
510
+ --component-button-background: var(--color-brand-primary);
511
+ --component-button-background-hover: var(--color-brand-primary-hover);
512
+ --component-button-background-active: var(--color-brand-primary-active);
513
+ --component-button-border: var(--color-brand-primary);
514
+ --component-button-color: var(--color-text-on-primary);
515
+ --component-button-height: var(--control-height-md);
516
+ --component-button-padding-x: var(--space-6);
517
+ --component-button-font-size: var(--font-size-sm);
518
+ --component-button-line-height: var(--line-height-sm);
519
+ --component-button-font-weight: var(--font-weight-semibold);
520
+ --component-button-radius: var(--radius-control);
521
+ --component-button-gap: var(--space-3);
522
+ --component-button-loading-spinner-size: var(--icon-md);
523
+ --component-control-background: var(--color-bg-elevated);
524
+ --component-control-background-hover: var(--color-bg-surface);
525
+ --component-control-background-disabled: var(--color-bg-muted);
526
+ --component-control-border: var(--color-border-default);
527
+ --component-control-border-hover: var(--color-border-strong);
528
+ --component-control-border-focus: var(--color-focus-ring);
529
+ --component-control-text: var(--color-text-primary);
530
+ --component-control-placeholder: var(--color-text-muted);
531
+ --component-control-radius: var(--radius-control);
532
+ --component-card-background: var(--color-bg-elevated);
533
+ --component-card-border: var(--color-border-subtle);
534
+ --component-card-radius: var(--radius-card);
535
+ --component-card-padding: var(--space-6);
536
+ --component-card-shadow: var(--shadow-card);
537
+ --component-card-shadow-hover: var(--shadow-dropdown);
538
+ --component-status-gap: var(--space-2);
539
+ --component-status-font-size: var(--font-size-sm);
540
+ --component-status-icon-size: var(--icon-sm);
541
+ --component-metric-background: var(--color-bg-elevated);
542
+ --component-metric-border: var(--color-border-subtle);
543
+ --component-metric-radius: var(--radius-card);
544
+ --component-metric-padding: var(--space-6);
545
+ --component-metric-value-font-size: var(--font-size-2xl);
546
+ --component-metric-label-font-size: var(--font-size-sm);
547
+ --component-meter-height: var(--space-3);
548
+ --component-meter-radius: var(--radius-pill);
549
+ --component-meter-track: var(--color-bg-muted);
550
+ --component-datum-edge-width: var(--border-thick);
551
+ --component-datum-tick-width: 24px;
552
+ --component-datum-tick-height: 3px;
553
+ --component-datum-origin-length: 48px;
554
+ --component-datum-mark-size: 18px;
555
+ --component-datum-scale-height: 9px;
556
+ --component-datum-scale-minor-step: 12px;
557
+ --component-datum-scale-major-step: 60px;
329
558
  }
330
559
 
331
560
  [data-theme="dark"] {
561
+ color-scheme: var(--theme-color-scheme);
332
562
  /* Semantic (dark) */
333
563
  --color-brand-primary: var(--color-stone-100);
334
564
  --color-brand-primary-hover: var(--color-stone-0);
@@ -336,19 +566,22 @@
336
566
  --color-brand-accent: var(--color-orange-400);
337
567
  --color-brand-accent-hover: var(--color-orange-300);
338
568
  --color-brand-accent-active: var(--color-orange-500);
569
+ --color-brand-accent-strong: var(--color-orange-400);
339
570
  --color-brand-on-accent: var(--color-stone-950);
340
571
  --color-text-primary: var(--color-stone-0);
341
572
  --color-text-secondary: var(--color-stone-200);
342
- --color-text-muted: var(--color-stone-400);
573
+ --color-text-muted: var(--color-stone-300);
343
574
  --color-text-inverse: var(--color-stone-0);
344
575
  --color-text-on-primary: var(--color-stone-950);
345
576
  --color-bg-canvas: var(--color-stone-950);
346
577
  --color-bg-surface: var(--color-stone-800);
347
578
  --color-bg-elevated: var(--color-stone-700);
348
579
  --color-bg-muted: var(--color-stone-900);
349
- --color-border-subtle: var(--color-stone-700);
350
- --color-border-default: var(--color-stone-600);
351
- --color-border-strong: var(--color-stone-500);
580
+ --color-bg-subtle: var(--color-bg-surface);
581
+ --color-border-subtle: var(--color-stone-600);
582
+ --color-border-default: var(--color-stone-400);
583
+ --color-border-strong: var(--color-stone-300);
584
+ --color-border-muted: var(--color-border-subtle);
352
585
  --color-state-info: var(--color-ocean-300);
353
586
  --color-state-success: var(--color-green-300);
354
587
  --color-state-warning: var(--color-amber-300);
@@ -365,7 +598,7 @@
365
598
  --color-state-info-text: var(--color-ocean-200);
366
599
  --color-state-success-text: var(--color-green-200);
367
600
  --color-state-warning-text: var(--color-amber-200);
368
- --color-state-danger-text: var(--color-red-200);
601
+ --color-state-danger-text: var(--color-red-100);
369
602
  --color-overlay-scrim: rgba(8, 6, 4, 0.72);
370
603
  --color-focus-ring: var(--color-orange-400);
371
604
  --color-avatar-seed-1-bg: var(--color-ocean-800);
@@ -393,16 +626,122 @@
393
626
  --color-chart-series-7: var(--color-red-300);
394
627
  --color-chart-series-8: var(--color-stone-300);
395
628
  --theme-color-scheme: dark;
629
+ --font-family-heading: var(--font-family-brand);
630
+ --font-family-body: var(--font-family-text);
631
+ --font-family-code: var(--font-family-mono);
632
+ --type-display-font-family: var(--font-family-heading);
633
+ --type-display-font-size: var(--font-size-6xl);
634
+ --type-display-line-height: var(--line-height-6xl);
635
+ --type-display-font-weight: var(--font-weight-extrabold);
636
+ --type-display-letter-spacing: var(--letter-spacing-tight);
637
+ --type-h1-font-family: var(--font-family-heading);
638
+ --type-h1-font-size: var(--font-size-5xl);
639
+ --type-h1-line-height: var(--line-height-5xl);
640
+ --type-h1-font-weight: var(--font-weight-bold);
641
+ --type-h1-letter-spacing: var(--letter-spacing-tight);
642
+ --type-h2-font-family: var(--font-family-heading);
643
+ --type-h2-font-size: var(--font-size-4xl);
644
+ --type-h2-line-height: var(--line-height-4xl);
645
+ --type-h2-font-weight: var(--font-weight-semibold);
646
+ --type-h2-letter-spacing: var(--letter-spacing-normal);
647
+ --type-h3-font-family: var(--font-family-heading);
648
+ --type-h3-font-size: var(--font-size-3xl);
649
+ --type-h3-line-height: var(--line-height-3xl);
650
+ --type-h3-font-weight: var(--font-weight-semibold);
651
+ --type-h3-letter-spacing: var(--letter-spacing-normal);
652
+ --type-h4-font-family: var(--font-family-heading);
653
+ --type-h4-font-size: var(--font-size-2xl);
654
+ --type-h4-line-height: var(--line-height-2xl);
655
+ --type-h4-font-weight: var(--font-weight-semibold);
656
+ --type-h4-letter-spacing: var(--letter-spacing-normal);
657
+ --type-body-font-family: var(--font-family-body);
658
+ --type-body-font-size: var(--font-size-md);
659
+ --type-body-line-height: var(--line-height-md);
660
+ --type-body-font-weight: var(--font-weight-regular);
661
+ --type-body-letter-spacing: var(--letter-spacing-normal);
662
+ --type-body-sm-font-family: var(--font-family-body);
663
+ --type-body-sm-font-size: var(--font-size-sm);
664
+ --type-body-sm-line-height: var(--line-height-sm);
665
+ --type-body-sm-font-weight: var(--font-weight-regular);
666
+ --type-body-sm-letter-spacing: var(--letter-spacing-normal);
667
+ --type-label-font-family: var(--font-family-body);
668
+ --type-label-font-size: var(--font-size-sm);
669
+ --type-label-line-height: var(--line-height-sm);
670
+ --type-label-font-weight: var(--font-weight-semibold);
671
+ --type-label-letter-spacing: var(--letter-spacing-wide);
672
+ --type-caption-font-family: var(--font-family-body);
673
+ --type-caption-font-size: var(--font-size-xs);
674
+ --type-caption-line-height: var(--line-height-xs);
675
+ --type-caption-font-weight: var(--font-weight-regular);
676
+ --type-caption-letter-spacing: var(--letter-spacing-normal);
677
+ --radius-control: var(--radius-md);
678
+ --radius-card: var(--radius-lg);
679
+ --radius-modal: var(--radius-xl);
680
+ --radius-pill: var(--radius-round);
681
+ --shadow-card: var(--shadow-sm);
682
+ --shadow-dropdown: var(--shadow-md);
683
+ --shadow-modal: var(--shadow-lg);
684
+ /* Component (dark) */
685
+ --component-button-background: var(--color-brand-primary);
686
+ --component-button-background-hover: var(--color-brand-primary-hover);
687
+ --component-button-background-active: var(--color-brand-primary-active);
688
+ --component-button-border: var(--color-brand-primary);
689
+ --component-button-color: var(--color-text-on-primary);
690
+ --component-button-height: var(--control-height-md);
691
+ --component-button-padding-x: var(--space-6);
692
+ --component-button-font-size: var(--font-size-sm);
693
+ --component-button-line-height: var(--line-height-sm);
694
+ --component-button-font-weight: var(--font-weight-semibold);
695
+ --component-button-radius: var(--radius-control);
696
+ --component-button-gap: var(--space-3);
697
+ --component-button-loading-spinner-size: var(--icon-md);
698
+ --component-control-background: var(--color-bg-elevated);
699
+ --component-control-background-hover: var(--color-bg-surface);
700
+ --component-control-background-disabled: var(--color-bg-muted);
701
+ --component-control-border: var(--color-border-default);
702
+ --component-control-border-hover: var(--color-border-strong);
703
+ --component-control-border-focus: var(--color-focus-ring);
704
+ --component-control-text: var(--color-text-primary);
705
+ --component-control-placeholder: var(--color-text-muted);
706
+ --component-control-radius: var(--radius-control);
707
+ --component-card-background: var(--color-bg-elevated);
708
+ --component-card-border: var(--color-border-subtle);
709
+ --component-card-radius: var(--radius-card);
710
+ --component-card-padding: var(--space-6);
711
+ --component-card-shadow: var(--shadow-card);
712
+ --component-card-shadow-hover: var(--shadow-dropdown);
713
+ --component-status-gap: var(--space-2);
714
+ --component-status-font-size: var(--font-size-sm);
715
+ --component-status-icon-size: var(--icon-sm);
716
+ --component-metric-background: var(--color-bg-elevated);
717
+ --component-metric-border: var(--color-border-subtle);
718
+ --component-metric-radius: var(--radius-card);
719
+ --component-metric-padding: var(--space-6);
720
+ --component-metric-value-font-size: var(--font-size-2xl);
721
+ --component-metric-label-font-size: var(--font-size-sm);
722
+ --component-meter-height: var(--space-3);
723
+ --component-meter-radius: var(--radius-pill);
724
+ --component-meter-track: var(--color-bg-muted);
725
+ --component-datum-edge-width: var(--border-thick);
726
+ --component-datum-tick-width: 24px;
727
+ --component-datum-tick-height: 3px;
728
+ --component-datum-origin-length: 48px;
729
+ --component-datum-mark-size: 18px;
730
+ --component-datum-scale-height: 9px;
731
+ --component-datum-scale-minor-step: 12px;
732
+ --component-datum-scale-major-step: 60px;
396
733
  }
397
734
 
398
735
  [data-theme="high-contrast"] {
736
+ color-scheme: var(--theme-color-scheme);
399
737
  /* Semantic (high-contrast) */
400
738
  --color-brand-primary: var(--color-stone-950);
401
739
  --color-brand-primary-hover: var(--color-stone-900);
402
740
  --color-brand-primary-active: var(--color-stone-800);
403
741
  --color-brand-accent: var(--color-orange-700);
404
742
  --color-brand-accent-hover: var(--color-orange-800);
405
- --color-brand-accent-active: var(--color-orange-600);
743
+ --color-brand-accent-active: var(--color-orange-900);
744
+ --color-brand-accent-strong: var(--color-orange-800);
406
745
  --color-brand-on-accent: var(--color-stone-0);
407
746
  --color-text-primary: var(--color-stone-950);
408
747
  --color-text-secondary: var(--color-stone-800);
@@ -412,10 +751,12 @@
412
751
  --color-bg-canvas: var(--color-stone-0);
413
752
  --color-bg-surface: var(--color-stone-0);
414
753
  --color-bg-elevated: var(--color-stone-0);
415
- --color-bg-muted: var(--color-stone-50);
416
- --color-border-subtle: var(--color-stone-400);
754
+ --color-bg-muted: var(--color-stone-200);
755
+ --color-bg-subtle: var(--color-bg-surface);
756
+ --color-border-subtle: var(--color-stone-500);
417
757
  --color-border-default: var(--color-stone-700);
418
758
  --color-border-strong: var(--color-stone-950);
759
+ --color-border-muted: var(--color-border-subtle);
419
760
  --color-state-info: var(--color-ocean-800);
420
761
  --color-state-success: var(--color-green-700);
421
762
  --color-state-warning: var(--color-amber-700);
@@ -460,6 +801,285 @@
460
801
  --color-chart-series-7: var(--color-red-700);
461
802
  --color-chart-series-8: var(--color-stone-800);
462
803
  --theme-color-scheme: light;
804
+ --font-family-heading: var(--font-family-brand);
805
+ --font-family-body: var(--font-family-text);
806
+ --font-family-code: var(--font-family-mono);
807
+ --type-display-font-family: var(--font-family-heading);
808
+ --type-display-font-size: var(--font-size-6xl);
809
+ --type-display-line-height: var(--line-height-6xl);
810
+ --type-display-font-weight: var(--font-weight-extrabold);
811
+ --type-display-letter-spacing: var(--letter-spacing-tight);
812
+ --type-h1-font-family: var(--font-family-heading);
813
+ --type-h1-font-size: var(--font-size-5xl);
814
+ --type-h1-line-height: var(--line-height-5xl);
815
+ --type-h1-font-weight: var(--font-weight-bold);
816
+ --type-h1-letter-spacing: var(--letter-spacing-tight);
817
+ --type-h2-font-family: var(--font-family-heading);
818
+ --type-h2-font-size: var(--font-size-4xl);
819
+ --type-h2-line-height: var(--line-height-4xl);
820
+ --type-h2-font-weight: var(--font-weight-semibold);
821
+ --type-h2-letter-spacing: var(--letter-spacing-normal);
822
+ --type-h3-font-family: var(--font-family-heading);
823
+ --type-h3-font-size: var(--font-size-3xl);
824
+ --type-h3-line-height: var(--line-height-3xl);
825
+ --type-h3-font-weight: var(--font-weight-semibold);
826
+ --type-h3-letter-spacing: var(--letter-spacing-normal);
827
+ --type-h4-font-family: var(--font-family-heading);
828
+ --type-h4-font-size: var(--font-size-2xl);
829
+ --type-h4-line-height: var(--line-height-2xl);
830
+ --type-h4-font-weight: var(--font-weight-semibold);
831
+ --type-h4-letter-spacing: var(--letter-spacing-normal);
832
+ --type-body-font-family: var(--font-family-body);
833
+ --type-body-font-size: var(--font-size-md);
834
+ --type-body-line-height: var(--line-height-md);
835
+ --type-body-font-weight: var(--font-weight-regular);
836
+ --type-body-letter-spacing: var(--letter-spacing-normal);
837
+ --type-body-sm-font-family: var(--font-family-body);
838
+ --type-body-sm-font-size: var(--font-size-sm);
839
+ --type-body-sm-line-height: var(--line-height-sm);
840
+ --type-body-sm-font-weight: var(--font-weight-regular);
841
+ --type-body-sm-letter-spacing: var(--letter-spacing-normal);
842
+ --type-label-font-family: var(--font-family-body);
843
+ --type-label-font-size: var(--font-size-sm);
844
+ --type-label-line-height: var(--line-height-sm);
845
+ --type-label-font-weight: var(--font-weight-semibold);
846
+ --type-label-letter-spacing: var(--letter-spacing-wide);
847
+ --type-caption-font-family: var(--font-family-body);
848
+ --type-caption-font-size: var(--font-size-xs);
849
+ --type-caption-line-height: var(--line-height-xs);
850
+ --type-caption-font-weight: var(--font-weight-regular);
851
+ --type-caption-letter-spacing: var(--letter-spacing-normal);
852
+ --radius-control: var(--radius-md);
853
+ --radius-card: var(--radius-lg);
854
+ --radius-modal: var(--radius-xl);
855
+ --radius-pill: var(--radius-round);
856
+ --shadow-card: var(--shadow-sm);
857
+ --shadow-dropdown: var(--shadow-md);
858
+ --shadow-modal: var(--shadow-lg);
859
+ /* Component (high-contrast) */
860
+ --component-button-background: var(--color-brand-primary);
861
+ --component-button-background-hover: var(--color-brand-primary-hover);
862
+ --component-button-background-active: var(--color-brand-primary-active);
863
+ --component-button-border: var(--color-brand-primary);
864
+ --component-button-color: var(--color-text-on-primary);
865
+ --component-button-height: var(--control-height-md);
866
+ --component-button-padding-x: var(--space-6);
867
+ --component-button-font-size: var(--font-size-sm);
868
+ --component-button-line-height: var(--line-height-sm);
869
+ --component-button-font-weight: var(--font-weight-semibold);
870
+ --component-button-radius: var(--radius-control);
871
+ --component-button-gap: var(--space-3);
872
+ --component-button-loading-spinner-size: var(--icon-md);
873
+ --component-control-background: var(--color-bg-elevated);
874
+ --component-control-background-hover: var(--color-bg-surface);
875
+ --component-control-background-disabled: var(--color-bg-muted);
876
+ --component-control-border: var(--color-border-default);
877
+ --component-control-border-hover: var(--color-border-strong);
878
+ --component-control-border-focus: var(--color-focus-ring);
879
+ --component-control-text: var(--color-text-primary);
880
+ --component-control-placeholder: var(--color-text-muted);
881
+ --component-control-radius: var(--radius-control);
882
+ --component-card-background: var(--color-bg-elevated);
883
+ --component-card-border: var(--color-border-subtle);
884
+ --component-card-radius: var(--radius-card);
885
+ --component-card-padding: var(--space-6);
886
+ --component-card-shadow: var(--shadow-card);
887
+ --component-card-shadow-hover: var(--shadow-dropdown);
888
+ --component-status-gap: var(--space-2);
889
+ --component-status-font-size: var(--font-size-sm);
890
+ --component-status-icon-size: var(--icon-sm);
891
+ --component-metric-background: var(--color-bg-elevated);
892
+ --component-metric-border: var(--color-border-subtle);
893
+ --component-metric-radius: var(--radius-card);
894
+ --component-metric-padding: var(--space-6);
895
+ --component-metric-value-font-size: var(--font-size-2xl);
896
+ --component-metric-label-font-size: var(--font-size-sm);
897
+ --component-meter-height: var(--space-3);
898
+ --component-meter-radius: var(--radius-pill);
899
+ --component-meter-track: var(--color-bg-muted);
900
+ --component-datum-edge-width: var(--border-thick);
901
+ --component-datum-tick-width: 24px;
902
+ --component-datum-tick-height: 3px;
903
+ --component-datum-origin-length: 48px;
904
+ --component-datum-mark-size: 18px;
905
+ --component-datum-scale-height: 9px;
906
+ --component-datum-scale-minor-step: 12px;
907
+ --component-datum-scale-major-step: 60px;
908
+ }
909
+
910
+ [data-theme="high-contrast-dark"] {
911
+ color-scheme: var(--theme-color-scheme);
912
+ /* Semantic (high-contrast-dark) */
913
+ --color-brand-primary: var(--color-stone-0);
914
+ --color-brand-primary-hover: var(--color-stone-100);
915
+ --color-brand-primary-active: var(--color-stone-200);
916
+ --color-brand-accent: var(--color-orange-300);
917
+ --color-brand-accent-hover: var(--color-orange-200);
918
+ --color-brand-accent-active: var(--color-orange-400);
919
+ --color-brand-accent-strong: var(--color-orange-300);
920
+ --color-brand-on-accent: var(--color-stone-950);
921
+ --color-text-primary: var(--color-stone-0);
922
+ --color-text-secondary: var(--color-stone-100);
923
+ --color-text-muted: var(--color-stone-200);
924
+ --color-text-inverse: var(--color-stone-950);
925
+ --color-text-on-primary: var(--color-stone-950);
926
+ --color-bg-canvas: var(--color-stone-950);
927
+ --color-bg-surface: var(--color-stone-950);
928
+ --color-bg-elevated: var(--color-stone-900);
929
+ --color-bg-muted: var(--color-stone-800);
930
+ --color-bg-subtle: var(--color-bg-surface);
931
+ --color-border-subtle: var(--color-stone-500);
932
+ --color-border-default: var(--color-stone-300);
933
+ --color-border-strong: var(--color-stone-0);
934
+ --color-border-muted: var(--color-border-subtle);
935
+ --color-state-info: var(--color-ocean-200);
936
+ --color-state-success: var(--color-green-200);
937
+ --color-state-warning: var(--color-amber-200);
938
+ --color-state-danger: var(--color-red-200);
939
+ --color-state-on-solid: var(--color-stone-950);
940
+ --color-state-info-surface: var(--color-ocean-900);
941
+ --color-state-success-surface: var(--color-green-900);
942
+ --color-state-warning-surface: var(--color-amber-900);
943
+ --color-state-danger-surface: var(--color-red-900);
944
+ --color-state-info-border: var(--color-ocean-300);
945
+ --color-state-success-border: var(--color-green-300);
946
+ --color-state-warning-border: var(--color-amber-300);
947
+ --color-state-danger-border: var(--color-red-300);
948
+ --color-state-info-text: var(--color-ocean-100);
949
+ --color-state-success-text: var(--color-green-100);
950
+ --color-state-warning-text: var(--color-amber-100);
951
+ --color-state-danger-text: var(--color-red-100);
952
+ --color-overlay-scrim: rgba(0, 0, 0, 0.82);
953
+ --color-focus-ring: var(--color-orange-300);
954
+ --color-avatar-seed-1-bg: var(--color-ocean-900);
955
+ --color-avatar-seed-1-fg: var(--color-ocean-100);
956
+ --color-avatar-seed-2-bg: var(--color-teal-900);
957
+ --color-avatar-seed-2-fg: var(--color-teal-100);
958
+ --color-avatar-seed-3-bg: var(--color-amber-900);
959
+ --color-avatar-seed-3-fg: var(--color-amber-100);
960
+ --color-avatar-seed-4-bg: var(--color-red-900);
961
+ --color-avatar-seed-4-fg: var(--color-red-100);
962
+ --color-avatar-seed-5-bg: var(--color-green-900);
963
+ --color-avatar-seed-5-fg: var(--color-green-100);
964
+ --color-avatar-seed-6-bg: var(--color-purple-900);
965
+ --color-avatar-seed-6-fg: var(--color-purple-100);
966
+ --color-avatar-seed-7-bg: var(--color-pink-900);
967
+ --color-avatar-seed-7-fg: var(--color-pink-100);
968
+ --color-avatar-seed-8-bg: var(--color-stone-800);
969
+ --color-avatar-seed-8-fg: var(--color-stone-100);
970
+ --color-chart-series-1: var(--color-ocean-200);
971
+ --color-chart-series-2: var(--color-amber-200);
972
+ --color-chart-series-3: var(--color-green-200);
973
+ --color-chart-series-4: var(--color-purple-200);
974
+ --color-chart-series-5: var(--color-pink-200);
975
+ --color-chart-series-6: var(--color-teal-200);
976
+ --color-chart-series-7: var(--color-red-200);
977
+ --color-chart-series-8: var(--color-stone-200);
978
+ --theme-color-scheme: dark;
979
+ --font-family-heading: var(--font-family-brand);
980
+ --font-family-body: var(--font-family-text);
981
+ --font-family-code: var(--font-family-mono);
982
+ --type-display-font-family: var(--font-family-heading);
983
+ --type-display-font-size: var(--font-size-6xl);
984
+ --type-display-line-height: var(--line-height-6xl);
985
+ --type-display-font-weight: var(--font-weight-extrabold);
986
+ --type-display-letter-spacing: var(--letter-spacing-tight);
987
+ --type-h1-font-family: var(--font-family-heading);
988
+ --type-h1-font-size: var(--font-size-5xl);
989
+ --type-h1-line-height: var(--line-height-5xl);
990
+ --type-h1-font-weight: var(--font-weight-bold);
991
+ --type-h1-letter-spacing: var(--letter-spacing-tight);
992
+ --type-h2-font-family: var(--font-family-heading);
993
+ --type-h2-font-size: var(--font-size-4xl);
994
+ --type-h2-line-height: var(--line-height-4xl);
995
+ --type-h2-font-weight: var(--font-weight-semibold);
996
+ --type-h2-letter-spacing: var(--letter-spacing-normal);
997
+ --type-h3-font-family: var(--font-family-heading);
998
+ --type-h3-font-size: var(--font-size-3xl);
999
+ --type-h3-line-height: var(--line-height-3xl);
1000
+ --type-h3-font-weight: var(--font-weight-semibold);
1001
+ --type-h3-letter-spacing: var(--letter-spacing-normal);
1002
+ --type-h4-font-family: var(--font-family-heading);
1003
+ --type-h4-font-size: var(--font-size-2xl);
1004
+ --type-h4-line-height: var(--line-height-2xl);
1005
+ --type-h4-font-weight: var(--font-weight-semibold);
1006
+ --type-h4-letter-spacing: var(--letter-spacing-normal);
1007
+ --type-body-font-family: var(--font-family-body);
1008
+ --type-body-font-size: var(--font-size-md);
1009
+ --type-body-line-height: var(--line-height-md);
1010
+ --type-body-font-weight: var(--font-weight-regular);
1011
+ --type-body-letter-spacing: var(--letter-spacing-normal);
1012
+ --type-body-sm-font-family: var(--font-family-body);
1013
+ --type-body-sm-font-size: var(--font-size-sm);
1014
+ --type-body-sm-line-height: var(--line-height-sm);
1015
+ --type-body-sm-font-weight: var(--font-weight-regular);
1016
+ --type-body-sm-letter-spacing: var(--letter-spacing-normal);
1017
+ --type-label-font-family: var(--font-family-body);
1018
+ --type-label-font-size: var(--font-size-sm);
1019
+ --type-label-line-height: var(--line-height-sm);
1020
+ --type-label-font-weight: var(--font-weight-semibold);
1021
+ --type-label-letter-spacing: var(--letter-spacing-wide);
1022
+ --type-caption-font-family: var(--font-family-body);
1023
+ --type-caption-font-size: var(--font-size-xs);
1024
+ --type-caption-line-height: var(--line-height-xs);
1025
+ --type-caption-font-weight: var(--font-weight-regular);
1026
+ --type-caption-letter-spacing: var(--letter-spacing-normal);
1027
+ --radius-control: var(--radius-md);
1028
+ --radius-card: var(--radius-lg);
1029
+ --radius-modal: var(--radius-xl);
1030
+ --radius-pill: var(--radius-round);
1031
+ --shadow-card: var(--shadow-sm);
1032
+ --shadow-dropdown: var(--shadow-md);
1033
+ --shadow-modal: var(--shadow-lg);
1034
+ /* Component (high-contrast-dark) */
1035
+ --component-button-background: var(--color-brand-primary);
1036
+ --component-button-background-hover: var(--color-brand-primary-hover);
1037
+ --component-button-background-active: var(--color-brand-primary-active);
1038
+ --component-button-border: var(--color-brand-primary);
1039
+ --component-button-color: var(--color-text-on-primary);
1040
+ --component-button-height: var(--control-height-md);
1041
+ --component-button-padding-x: var(--space-6);
1042
+ --component-button-font-size: var(--font-size-sm);
1043
+ --component-button-line-height: var(--line-height-sm);
1044
+ --component-button-font-weight: var(--font-weight-semibold);
1045
+ --component-button-radius: var(--radius-control);
1046
+ --component-button-gap: var(--space-3);
1047
+ --component-button-loading-spinner-size: var(--icon-md);
1048
+ --component-control-background: var(--color-bg-elevated);
1049
+ --component-control-background-hover: var(--color-bg-surface);
1050
+ --component-control-background-disabled: var(--color-bg-muted);
1051
+ --component-control-border: var(--color-border-default);
1052
+ --component-control-border-hover: var(--color-border-strong);
1053
+ --component-control-border-focus: var(--color-focus-ring);
1054
+ --component-control-text: var(--color-text-primary);
1055
+ --component-control-placeholder: var(--color-text-muted);
1056
+ --component-control-radius: var(--radius-control);
1057
+ --component-card-background: var(--color-bg-elevated);
1058
+ --component-card-border: var(--color-border-subtle);
1059
+ --component-card-radius: var(--radius-card);
1060
+ --component-card-padding: var(--space-6);
1061
+ --component-card-shadow: var(--shadow-card);
1062
+ --component-card-shadow-hover: var(--shadow-dropdown);
1063
+ --component-status-gap: var(--space-2);
1064
+ --component-status-font-size: var(--font-size-sm);
1065
+ --component-status-icon-size: var(--icon-sm);
1066
+ --component-metric-background: var(--color-bg-elevated);
1067
+ --component-metric-border: var(--color-border-subtle);
1068
+ --component-metric-radius: var(--radius-card);
1069
+ --component-metric-padding: var(--space-6);
1070
+ --component-metric-value-font-size: var(--font-size-2xl);
1071
+ --component-metric-label-font-size: var(--font-size-sm);
1072
+ --component-meter-height: var(--space-3);
1073
+ --component-meter-radius: var(--radius-pill);
1074
+ --component-meter-track: var(--color-bg-muted);
1075
+ --component-datum-edge-width: var(--border-thick);
1076
+ --component-datum-tick-width: 24px;
1077
+ --component-datum-tick-height: 3px;
1078
+ --component-datum-origin-length: 48px;
1079
+ --component-datum-mark-size: 18px;
1080
+ --component-datum-scale-height: 9px;
1081
+ --component-datum-scale-minor-step: 12px;
1082
+ --component-datum-scale-major-step: 60px;
463
1083
  }
464
1084
 
465
1085
  @media (prefers-color-scheme: dark) {
@@ -471,19 +1091,18 @@
471
1091
  --color-brand-accent: var(--color-orange-400);
472
1092
  --color-brand-accent-hover: var(--color-orange-300);
473
1093
  --color-brand-accent-active: var(--color-orange-500);
474
- --color-brand-on-accent: var(--color-stone-950);
1094
+ --color-brand-accent-strong: var(--color-orange-400);
475
1095
  --color-text-primary: var(--color-stone-0);
476
1096
  --color-text-secondary: var(--color-stone-200);
477
- --color-text-muted: var(--color-stone-400);
478
- --color-text-inverse: var(--color-stone-0);
1097
+ --color-text-muted: var(--color-stone-300);
479
1098
  --color-text-on-primary: var(--color-stone-950);
480
1099
  --color-bg-canvas: var(--color-stone-950);
481
1100
  --color-bg-surface: var(--color-stone-800);
482
1101
  --color-bg-elevated: var(--color-stone-700);
483
1102
  --color-bg-muted: var(--color-stone-900);
484
- --color-border-subtle: var(--color-stone-700);
485
- --color-border-default: var(--color-stone-600);
486
- --color-border-strong: var(--color-stone-500);
1103
+ --color-border-subtle: var(--color-stone-600);
1104
+ --color-border-default: var(--color-stone-400);
1105
+ --color-border-strong: var(--color-stone-300);
487
1106
  --color-state-info: var(--color-ocean-300);
488
1107
  --color-state-success: var(--color-green-300);
489
1108
  --color-state-warning: var(--color-amber-300);
@@ -500,7 +1119,7 @@
500
1119
  --color-state-info-text: var(--color-ocean-200);
501
1120
  --color-state-success-text: var(--color-green-200);
502
1121
  --color-state-warning-text: var(--color-amber-200);
503
- --color-state-danger-text: var(--color-red-200);
1122
+ --color-state-danger-text: var(--color-red-100);
504
1123
  --color-overlay-scrim: rgba(8, 6, 4, 0.72);
505
1124
  --color-focus-ring: var(--color-orange-400);
506
1125
  --color-avatar-seed-1-bg: var(--color-ocean-800);
@@ -539,7 +1158,8 @@
539
1158
  --color-brand-primary-active: var(--color-stone-800);
540
1159
  --color-brand-accent: var(--color-orange-700);
541
1160
  --color-brand-accent-hover: var(--color-orange-800);
542
- --color-brand-accent-active: var(--color-orange-600);
1161
+ --color-brand-accent-active: var(--color-orange-900);
1162
+ --color-brand-accent-strong: var(--color-orange-800);
543
1163
  --color-brand-on-accent: var(--color-stone-0);
544
1164
  --color-text-primary: var(--color-stone-950);
545
1165
  --color-text-secondary: var(--color-stone-800);
@@ -549,10 +1169,12 @@
549
1169
  --color-bg-canvas: var(--color-stone-0);
550
1170
  --color-bg-surface: var(--color-stone-0);
551
1171
  --color-bg-elevated: var(--color-stone-0);
552
- --color-bg-muted: var(--color-stone-50);
553
- --color-border-subtle: var(--color-stone-400);
1172
+ --color-bg-muted: var(--color-stone-200);
1173
+ --color-bg-subtle: var(--color-bg-surface);
1174
+ --color-border-subtle: var(--color-stone-500);
554
1175
  --color-border-default: var(--color-stone-700);
555
1176
  --color-border-strong: var(--color-stone-950);
1177
+ --color-border-muted: var(--color-border-subtle);
556
1178
  --color-state-info: var(--color-ocean-800);
557
1179
  --color-state-success: var(--color-green-700);
558
1180
  --color-state-warning: var(--color-amber-700);
@@ -597,5 +1219,285 @@
597
1219
  --color-chart-series-7: var(--color-red-700);
598
1220
  --color-chart-series-8: var(--color-stone-800);
599
1221
  --theme-color-scheme: light;
1222
+ --font-family-heading: var(--font-family-brand);
1223
+ --font-family-body: var(--font-family-text);
1224
+ --font-family-code: var(--font-family-mono);
1225
+ --type-display-font-family: var(--font-family-heading);
1226
+ --type-display-font-size: var(--font-size-6xl);
1227
+ --type-display-line-height: var(--line-height-6xl);
1228
+ --type-display-font-weight: var(--font-weight-extrabold);
1229
+ --type-display-letter-spacing: var(--letter-spacing-tight);
1230
+ --type-h1-font-family: var(--font-family-heading);
1231
+ --type-h1-font-size: var(--font-size-5xl);
1232
+ --type-h1-line-height: var(--line-height-5xl);
1233
+ --type-h1-font-weight: var(--font-weight-bold);
1234
+ --type-h1-letter-spacing: var(--letter-spacing-tight);
1235
+ --type-h2-font-family: var(--font-family-heading);
1236
+ --type-h2-font-size: var(--font-size-4xl);
1237
+ --type-h2-line-height: var(--line-height-4xl);
1238
+ --type-h2-font-weight: var(--font-weight-semibold);
1239
+ --type-h2-letter-spacing: var(--letter-spacing-normal);
1240
+ --type-h3-font-family: var(--font-family-heading);
1241
+ --type-h3-font-size: var(--font-size-3xl);
1242
+ --type-h3-line-height: var(--line-height-3xl);
1243
+ --type-h3-font-weight: var(--font-weight-semibold);
1244
+ --type-h3-letter-spacing: var(--letter-spacing-normal);
1245
+ --type-h4-font-family: var(--font-family-heading);
1246
+ --type-h4-font-size: var(--font-size-2xl);
1247
+ --type-h4-line-height: var(--line-height-2xl);
1248
+ --type-h4-font-weight: var(--font-weight-semibold);
1249
+ --type-h4-letter-spacing: var(--letter-spacing-normal);
1250
+ --type-body-font-family: var(--font-family-body);
1251
+ --type-body-font-size: var(--font-size-md);
1252
+ --type-body-line-height: var(--line-height-md);
1253
+ --type-body-font-weight: var(--font-weight-regular);
1254
+ --type-body-letter-spacing: var(--letter-spacing-normal);
1255
+ --type-body-sm-font-family: var(--font-family-body);
1256
+ --type-body-sm-font-size: var(--font-size-sm);
1257
+ --type-body-sm-line-height: var(--line-height-sm);
1258
+ --type-body-sm-font-weight: var(--font-weight-regular);
1259
+ --type-body-sm-letter-spacing: var(--letter-spacing-normal);
1260
+ --type-label-font-family: var(--font-family-body);
1261
+ --type-label-font-size: var(--font-size-sm);
1262
+ --type-label-line-height: var(--line-height-sm);
1263
+ --type-label-font-weight: var(--font-weight-semibold);
1264
+ --type-label-letter-spacing: var(--letter-spacing-wide);
1265
+ --type-caption-font-family: var(--font-family-body);
1266
+ --type-caption-font-size: var(--font-size-xs);
1267
+ --type-caption-line-height: var(--line-height-xs);
1268
+ --type-caption-font-weight: var(--font-weight-regular);
1269
+ --type-caption-letter-spacing: var(--letter-spacing-normal);
1270
+ --radius-control: var(--radius-md);
1271
+ --radius-card: var(--radius-lg);
1272
+ --radius-modal: var(--radius-xl);
1273
+ --radius-pill: var(--radius-round);
1274
+ --shadow-card: var(--shadow-sm);
1275
+ --shadow-dropdown: var(--shadow-md);
1276
+ --shadow-modal: var(--shadow-lg);
1277
+ /* Component (high-contrast (system)) */
1278
+ --component-button-background: var(--color-brand-primary);
1279
+ --component-button-background-hover: var(--color-brand-primary-hover);
1280
+ --component-button-background-active: var(--color-brand-primary-active);
1281
+ --component-button-border: var(--color-brand-primary);
1282
+ --component-button-color: var(--color-text-on-primary);
1283
+ --component-button-height: var(--control-height-md);
1284
+ --component-button-padding-x: var(--space-6);
1285
+ --component-button-font-size: var(--font-size-sm);
1286
+ --component-button-line-height: var(--line-height-sm);
1287
+ --component-button-font-weight: var(--font-weight-semibold);
1288
+ --component-button-radius: var(--radius-control);
1289
+ --component-button-gap: var(--space-3);
1290
+ --component-button-loading-spinner-size: var(--icon-md);
1291
+ --component-control-background: var(--color-bg-elevated);
1292
+ --component-control-background-hover: var(--color-bg-surface);
1293
+ --component-control-background-disabled: var(--color-bg-muted);
1294
+ --component-control-border: var(--color-border-default);
1295
+ --component-control-border-hover: var(--color-border-strong);
1296
+ --component-control-border-focus: var(--color-focus-ring);
1297
+ --component-control-text: var(--color-text-primary);
1298
+ --component-control-placeholder: var(--color-text-muted);
1299
+ --component-control-radius: var(--radius-control);
1300
+ --component-card-background: var(--color-bg-elevated);
1301
+ --component-card-border: var(--color-border-subtle);
1302
+ --component-card-radius: var(--radius-card);
1303
+ --component-card-padding: var(--space-6);
1304
+ --component-card-shadow: var(--shadow-card);
1305
+ --component-card-shadow-hover: var(--shadow-dropdown);
1306
+ --component-status-gap: var(--space-2);
1307
+ --component-status-font-size: var(--font-size-sm);
1308
+ --component-status-icon-size: var(--icon-sm);
1309
+ --component-metric-background: var(--color-bg-elevated);
1310
+ --component-metric-border: var(--color-border-subtle);
1311
+ --component-metric-radius: var(--radius-card);
1312
+ --component-metric-padding: var(--space-6);
1313
+ --component-metric-value-font-size: var(--font-size-2xl);
1314
+ --component-metric-label-font-size: var(--font-size-sm);
1315
+ --component-meter-height: var(--space-3);
1316
+ --component-meter-radius: var(--radius-pill);
1317
+ --component-meter-track: var(--color-bg-muted);
1318
+ --component-datum-edge-width: var(--border-thick);
1319
+ --component-datum-tick-width: 24px;
1320
+ --component-datum-tick-height: 3px;
1321
+ --component-datum-origin-length: 48px;
1322
+ --component-datum-mark-size: 18px;
1323
+ --component-datum-scale-height: 9px;
1324
+ --component-datum-scale-minor-step: 12px;
1325
+ --component-datum-scale-major-step: 60px;
1326
+ }
1327
+ }
1328
+
1329
+ @media (prefers-contrast: more) and (prefers-color-scheme: dark) {
1330
+ :root:not([data-theme]) {
1331
+ /* Semantic (high-contrast-dark (system)) */
1332
+ --color-brand-primary: var(--color-stone-0);
1333
+ --color-brand-primary-hover: var(--color-stone-100);
1334
+ --color-brand-primary-active: var(--color-stone-200);
1335
+ --color-brand-accent: var(--color-orange-300);
1336
+ --color-brand-accent-hover: var(--color-orange-200);
1337
+ --color-brand-accent-active: var(--color-orange-400);
1338
+ --color-brand-accent-strong: var(--color-orange-300);
1339
+ --color-brand-on-accent: var(--color-stone-950);
1340
+ --color-text-primary: var(--color-stone-0);
1341
+ --color-text-secondary: var(--color-stone-100);
1342
+ --color-text-muted: var(--color-stone-200);
1343
+ --color-text-inverse: var(--color-stone-950);
1344
+ --color-text-on-primary: var(--color-stone-950);
1345
+ --color-bg-canvas: var(--color-stone-950);
1346
+ --color-bg-surface: var(--color-stone-950);
1347
+ --color-bg-elevated: var(--color-stone-900);
1348
+ --color-bg-muted: var(--color-stone-800);
1349
+ --color-bg-subtle: var(--color-bg-surface);
1350
+ --color-border-subtle: var(--color-stone-500);
1351
+ --color-border-default: var(--color-stone-300);
1352
+ --color-border-strong: var(--color-stone-0);
1353
+ --color-border-muted: var(--color-border-subtle);
1354
+ --color-state-info: var(--color-ocean-200);
1355
+ --color-state-success: var(--color-green-200);
1356
+ --color-state-warning: var(--color-amber-200);
1357
+ --color-state-danger: var(--color-red-200);
1358
+ --color-state-on-solid: var(--color-stone-950);
1359
+ --color-state-info-surface: var(--color-ocean-900);
1360
+ --color-state-success-surface: var(--color-green-900);
1361
+ --color-state-warning-surface: var(--color-amber-900);
1362
+ --color-state-danger-surface: var(--color-red-900);
1363
+ --color-state-info-border: var(--color-ocean-300);
1364
+ --color-state-success-border: var(--color-green-300);
1365
+ --color-state-warning-border: var(--color-amber-300);
1366
+ --color-state-danger-border: var(--color-red-300);
1367
+ --color-state-info-text: var(--color-ocean-100);
1368
+ --color-state-success-text: var(--color-green-100);
1369
+ --color-state-warning-text: var(--color-amber-100);
1370
+ --color-state-danger-text: var(--color-red-100);
1371
+ --color-overlay-scrim: rgba(0, 0, 0, 0.82);
1372
+ --color-focus-ring: var(--color-orange-300);
1373
+ --color-avatar-seed-1-bg: var(--color-ocean-900);
1374
+ --color-avatar-seed-1-fg: var(--color-ocean-100);
1375
+ --color-avatar-seed-2-bg: var(--color-teal-900);
1376
+ --color-avatar-seed-2-fg: var(--color-teal-100);
1377
+ --color-avatar-seed-3-bg: var(--color-amber-900);
1378
+ --color-avatar-seed-3-fg: var(--color-amber-100);
1379
+ --color-avatar-seed-4-bg: var(--color-red-900);
1380
+ --color-avatar-seed-4-fg: var(--color-red-100);
1381
+ --color-avatar-seed-5-bg: var(--color-green-900);
1382
+ --color-avatar-seed-5-fg: var(--color-green-100);
1383
+ --color-avatar-seed-6-bg: var(--color-purple-900);
1384
+ --color-avatar-seed-6-fg: var(--color-purple-100);
1385
+ --color-avatar-seed-7-bg: var(--color-pink-900);
1386
+ --color-avatar-seed-7-fg: var(--color-pink-100);
1387
+ --color-avatar-seed-8-bg: var(--color-stone-800);
1388
+ --color-avatar-seed-8-fg: var(--color-stone-100);
1389
+ --color-chart-series-1: var(--color-ocean-200);
1390
+ --color-chart-series-2: var(--color-amber-200);
1391
+ --color-chart-series-3: var(--color-green-200);
1392
+ --color-chart-series-4: var(--color-purple-200);
1393
+ --color-chart-series-5: var(--color-pink-200);
1394
+ --color-chart-series-6: var(--color-teal-200);
1395
+ --color-chart-series-7: var(--color-red-200);
1396
+ --color-chart-series-8: var(--color-stone-200);
1397
+ --theme-color-scheme: dark;
1398
+ --font-family-heading: var(--font-family-brand);
1399
+ --font-family-body: var(--font-family-text);
1400
+ --font-family-code: var(--font-family-mono);
1401
+ --type-display-font-family: var(--font-family-heading);
1402
+ --type-display-font-size: var(--font-size-6xl);
1403
+ --type-display-line-height: var(--line-height-6xl);
1404
+ --type-display-font-weight: var(--font-weight-extrabold);
1405
+ --type-display-letter-spacing: var(--letter-spacing-tight);
1406
+ --type-h1-font-family: var(--font-family-heading);
1407
+ --type-h1-font-size: var(--font-size-5xl);
1408
+ --type-h1-line-height: var(--line-height-5xl);
1409
+ --type-h1-font-weight: var(--font-weight-bold);
1410
+ --type-h1-letter-spacing: var(--letter-spacing-tight);
1411
+ --type-h2-font-family: var(--font-family-heading);
1412
+ --type-h2-font-size: var(--font-size-4xl);
1413
+ --type-h2-line-height: var(--line-height-4xl);
1414
+ --type-h2-font-weight: var(--font-weight-semibold);
1415
+ --type-h2-letter-spacing: var(--letter-spacing-normal);
1416
+ --type-h3-font-family: var(--font-family-heading);
1417
+ --type-h3-font-size: var(--font-size-3xl);
1418
+ --type-h3-line-height: var(--line-height-3xl);
1419
+ --type-h3-font-weight: var(--font-weight-semibold);
1420
+ --type-h3-letter-spacing: var(--letter-spacing-normal);
1421
+ --type-h4-font-family: var(--font-family-heading);
1422
+ --type-h4-font-size: var(--font-size-2xl);
1423
+ --type-h4-line-height: var(--line-height-2xl);
1424
+ --type-h4-font-weight: var(--font-weight-semibold);
1425
+ --type-h4-letter-spacing: var(--letter-spacing-normal);
1426
+ --type-body-font-family: var(--font-family-body);
1427
+ --type-body-font-size: var(--font-size-md);
1428
+ --type-body-line-height: var(--line-height-md);
1429
+ --type-body-font-weight: var(--font-weight-regular);
1430
+ --type-body-letter-spacing: var(--letter-spacing-normal);
1431
+ --type-body-sm-font-family: var(--font-family-body);
1432
+ --type-body-sm-font-size: var(--font-size-sm);
1433
+ --type-body-sm-line-height: var(--line-height-sm);
1434
+ --type-body-sm-font-weight: var(--font-weight-regular);
1435
+ --type-body-sm-letter-spacing: var(--letter-spacing-normal);
1436
+ --type-label-font-family: var(--font-family-body);
1437
+ --type-label-font-size: var(--font-size-sm);
1438
+ --type-label-line-height: var(--line-height-sm);
1439
+ --type-label-font-weight: var(--font-weight-semibold);
1440
+ --type-label-letter-spacing: var(--letter-spacing-wide);
1441
+ --type-caption-font-family: var(--font-family-body);
1442
+ --type-caption-font-size: var(--font-size-xs);
1443
+ --type-caption-line-height: var(--line-height-xs);
1444
+ --type-caption-font-weight: var(--font-weight-regular);
1445
+ --type-caption-letter-spacing: var(--letter-spacing-normal);
1446
+ --radius-control: var(--radius-md);
1447
+ --radius-card: var(--radius-lg);
1448
+ --radius-modal: var(--radius-xl);
1449
+ --radius-pill: var(--radius-round);
1450
+ --shadow-card: var(--shadow-sm);
1451
+ --shadow-dropdown: var(--shadow-md);
1452
+ --shadow-modal: var(--shadow-lg);
1453
+ /* Component (high-contrast-dark (system)) */
1454
+ --component-button-background: var(--color-brand-primary);
1455
+ --component-button-background-hover: var(--color-brand-primary-hover);
1456
+ --component-button-background-active: var(--color-brand-primary-active);
1457
+ --component-button-border: var(--color-brand-primary);
1458
+ --component-button-color: var(--color-text-on-primary);
1459
+ --component-button-height: var(--control-height-md);
1460
+ --component-button-padding-x: var(--space-6);
1461
+ --component-button-font-size: var(--font-size-sm);
1462
+ --component-button-line-height: var(--line-height-sm);
1463
+ --component-button-font-weight: var(--font-weight-semibold);
1464
+ --component-button-radius: var(--radius-control);
1465
+ --component-button-gap: var(--space-3);
1466
+ --component-button-loading-spinner-size: var(--icon-md);
1467
+ --component-control-background: var(--color-bg-elevated);
1468
+ --component-control-background-hover: var(--color-bg-surface);
1469
+ --component-control-background-disabled: var(--color-bg-muted);
1470
+ --component-control-border: var(--color-border-default);
1471
+ --component-control-border-hover: var(--color-border-strong);
1472
+ --component-control-border-focus: var(--color-focus-ring);
1473
+ --component-control-text: var(--color-text-primary);
1474
+ --component-control-placeholder: var(--color-text-muted);
1475
+ --component-control-radius: var(--radius-control);
1476
+ --component-card-background: var(--color-bg-elevated);
1477
+ --component-card-border: var(--color-border-subtle);
1478
+ --component-card-radius: var(--radius-card);
1479
+ --component-card-padding: var(--space-6);
1480
+ --component-card-shadow: var(--shadow-card);
1481
+ --component-card-shadow-hover: var(--shadow-dropdown);
1482
+ --component-status-gap: var(--space-2);
1483
+ --component-status-font-size: var(--font-size-sm);
1484
+ --component-status-icon-size: var(--icon-sm);
1485
+ --component-metric-background: var(--color-bg-elevated);
1486
+ --component-metric-border: var(--color-border-subtle);
1487
+ --component-metric-radius: var(--radius-card);
1488
+ --component-metric-padding: var(--space-6);
1489
+ --component-metric-value-font-size: var(--font-size-2xl);
1490
+ --component-metric-label-font-size: var(--font-size-sm);
1491
+ --component-meter-height: var(--space-3);
1492
+ --component-meter-radius: var(--radius-pill);
1493
+ --component-meter-track: var(--color-bg-muted);
1494
+ --component-datum-edge-width: var(--border-thick);
1495
+ --component-datum-tick-width: 24px;
1496
+ --component-datum-tick-height: 3px;
1497
+ --component-datum-origin-length: 48px;
1498
+ --component-datum-mark-size: 18px;
1499
+ --component-datum-scale-height: 9px;
1500
+ --component-datum-scale-minor-step: 12px;
1501
+ --component-datum-scale-major-step: 60px;
600
1502
  }
601
1503
  }