@db-vincent/tokens 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1140 @@
1
+ /* GENERATED FILE - do not edit.
2
+ Source of truth: internal/scripts/build-tokens.py
3
+ Regenerate: python3 internal/scripts/build-tokens.py
4
+
5
+ Minerva Blue Metallic #1383DA is primitive blue/500. The palette is authored
6
+ in OKLCH and emitted as hex for WCAG math, legacy consumers and readability.
7
+ Three layers: primitive -> semantic -> component. Components read only
8
+ component tokens; component tokens only alias semantic roles or geometry.
9
+
10
+ scale 50 100 200 300 400 500 600 700 800 900 950
11
+ blue ... ... ... ... ... #1383DA ... ... ... ... ...
12
+ neutral ... ... ... ... ... ... ... ... ... ... ...
13
+ green ... ... ... ... ... ... ... ... ... ... ...
14
+ amber ... ... ... ... ... ... ... ... ... ... ...
15
+ red ... ... ... ... ... ... ... ... ... ... ...
16
+
17
+ Type is a minor third (1.200) from 16px. Spacing is a 4px base. Motion goes
18
+ to 0ms under prefers-reduced-motion. */
19
+
20
+ @layer reset, tokens, base, components, motion, utilities;
21
+
22
+ @layer tokens {
23
+ :root {
24
+ color-scheme: light;
25
+
26
+ /* layer 1 - primitives */
27
+
28
+ --blue-50: #EEF7FF; /* oklch(0.9720 0.0160 249.00) */
29
+ --blue-100: #DAEEFF; /* oklch(0.9400 0.0350 249.00) */
30
+ --blue-200: #B6D8FB; /* oklch(0.8700 0.0600 249.00) */
31
+ --blue-300: #8DC0F2; /* oklch(0.7900 0.0900 249.00) */
32
+ --blue-400: #55A1E8; /* oklch(0.6900 0.1300 249.00) */
33
+ --blue-500: #1383DA; /* oklch(0.5982 0.1603 249.36) */
34
+ --blue-600: #006FBD; /* oklch(0.5300 0.1500 249.00) */
35
+ --blue-700: #005CA1; /* oklch(0.4650 0.1350 249.00) */
36
+ --blue-800: #024679; /* oklch(0.3850 0.1050 249.00) */
37
+ --blue-900: #053256; /* oklch(0.3100 0.0800 249.00) */
38
+ --blue-950: #041E35; /* oklch(0.2300 0.0550 249.00) */
39
+
40
+ --neutral-0: #FFFFFF; /* oklch(1.0000 0.0000 249.00) */
41
+ --neutral-50: #F7F9FC; /* oklch(0.9820 0.0040 249.00) */
42
+ --neutral-100: #EDF1F5; /* oklch(0.9550 0.0070 249.00) */
43
+ --neutral-200: #DCE2E8; /* oklch(0.9100 0.0110 249.00) */
44
+ --neutral-300: #C5CDD6; /* oklch(0.8450 0.0150 249.00) */
45
+ --neutral-400: #9CA6B0; /* oklch(0.7200 0.0190 249.00) */
46
+ --neutral-500: #7C8893; /* oklch(0.6200 0.0220 249.00) */
47
+ --neutral-600: #616C77; /* oklch(0.5250 0.0220 249.00) */
48
+ --neutral-700: #424B55; /* oklch(0.4100 0.0200 249.00) */
49
+ --neutral-800: #2C343C; /* oklch(0.3200 0.0180 249.00) */
50
+ --neutral-900: #232A31; /* oklch(0.2800 0.0160 249.00) */
51
+ --neutral-950: #1A1F24; /* oklch(0.2350 0.0120 249.00) */
52
+ --neutral-1000: #101419; /* oklch(0.1900 0.0110 249.00) */
53
+ --neutral-1050: #080C0F; /* oklch(0.1500 0.0090 249.00) */
54
+ --neutral-1100: #040608; /* oklch(0.1200 0.0080 249.00) */
55
+
56
+ --green-50: #EAFAEC; /* oklch(0.9700 0.0250 150.00) */
57
+ --green-100: #D1F2D7; /* oklch(0.9300 0.0500 150.00) */
58
+ --green-200: #A6DEB1; /* oklch(0.8500 0.0850 150.00) */
59
+ --green-300: #73C385; /* oklch(0.7500 0.1200 150.00) */
60
+ --green-400: #3AA85B; /* oklch(0.6500 0.1500 150.00) */
61
+ --green-500: #0E8C41; /* oklch(0.5600 0.1500 150.00) */
62
+ --green-600: #007531; /* oklch(0.4900 0.1400 150.00) */
63
+ --green-700: #005B23; /* oklch(0.4100 0.1200 150.00) */
64
+ --green-800: #004218; /* oklch(0.3300 0.0950 150.00) */
65
+ --green-900: #002D0E; /* oklch(0.2600 0.0750 150.00) */
66
+ --green-950: #011A07; /* oklch(0.1900 0.0500 150.00) */
67
+
68
+ --amber-50: #FFF5E1; /* oklch(0.9750 0.0300 80.00) */
69
+ --amber-100: #FFE7BB; /* oklch(0.9400 0.0650 80.00) */
70
+ --amber-200: #FED081; /* oklch(0.8800 0.1100 80.00) */
71
+ --amber-300: #F7B83D; /* oklch(0.8200 0.1500 80.00) */
72
+ --amber-400: #E9A200; /* oklch(0.7600 0.1700 80.00) */
73
+ --amber-500: #D58F00; /* oklch(0.7000 0.1700 80.00) */
74
+ --amber-600: #B17600; /* oklch(0.6100 0.1500 80.00) */
75
+ --amber-700: #895C00; /* oklch(0.5100 0.1200 80.00) */
76
+ --amber-800: #644400; /* oklch(0.4100 0.0900 80.00) */
77
+ --amber-900: #452E00; /* oklch(0.3200 0.0700 80.00) */
78
+ --amber-950: #291A00; /* oklch(0.2300 0.0500 80.00) */
79
+
80
+ --red-50: #FFF0EE; /* oklch(0.9700 0.0200 25.00) */
81
+ --red-100: #FFDCD7; /* oklch(0.9300 0.0500 25.00) */
82
+ --red-200: #FFBEB6; /* oklch(0.8700 0.0900 25.00) */
83
+ --red-300: #FF9890; /* oklch(0.7900 0.1300 25.00) */
84
+ --red-400: #F66D67; /* oklch(0.7000 0.1700 25.00) */
85
+ --red-500: #DB4241; /* oklch(0.6000 0.1900 25.00) */
86
+ --red-600: #BA2B2E; /* oklch(0.5200 0.1800 25.00) */
87
+ --red-700: #971A20; /* oklch(0.4400 0.1600 25.00) */
88
+ --red-800: #721216; /* oklch(0.3600 0.1300 25.00) */
89
+ --red-900: #4F0A0D; /* oklch(0.2800 0.1000 25.00) */
90
+ --red-950: #2F0405; /* oklch(0.2000 0.0700 25.00) */
91
+
92
+
93
+ --font-body: "Inter Variable", Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
94
+ --font-mono: "JetBrains Mono Variable", "JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;
95
+
96
+ --weight-regular: 400;
97
+ --weight-medium: 500;
98
+ --weight-semibold: 600;
99
+ --weight-bold: 700;
100
+
101
+ --space-0: 0;
102
+ --space-px: 1px;
103
+ --space-0-5: 0.125rem;
104
+ --space-1: 0.25rem;
105
+ --space-1-5: 0.375rem;
106
+ --space-2: 0.5rem;
107
+ --space-2-5: 0.625rem;
108
+ --space-3: 0.75rem;
109
+ --space-4: 1rem;
110
+ --space-5: 1.25rem;
111
+ --space-6: 1.5rem;
112
+ --space-7: 1.75rem;
113
+ --space-8: 2rem;
114
+ --space-10: 2.5rem;
115
+ --space-12: 3rem;
116
+ --space-16: 4rem;
117
+ --space-20: 5rem;
118
+ --space-24: 6rem;
119
+
120
+ --radius-none: 0;
121
+ --radius-xs: 0.25rem;
122
+ --radius-sm: 0.375rem;
123
+ --radius-md: 0.5rem;
124
+ --radius-lg: 0.75rem;
125
+ --radius-xl: 1rem;
126
+ --radius-2xl: 1.5rem;
127
+ --radius-full: 9999px;
128
+
129
+ --duration-instant: 0ms;
130
+ --duration-fast: 100ms;
131
+ --duration-base: 180ms;
132
+ --duration-slow: 280ms;
133
+ --duration-slower: 420ms;
134
+
135
+ --ease-standard: cubic-bezier(0.2, 0, 0, 1);
136
+ --ease-enter: cubic-bezier(0, 0, 0, 1);
137
+ --ease-exit: cubic-bezier(0.3, 0, 1, 1);
138
+ --ease-spring: cubic-bezier(0.2, 1.25, 0.4, 1);
139
+
140
+ --shadow-sm: 0 1px 2px rgb(5 8 11 / 0.06), 0 1px 3px rgb(5 8 11 / 0.08);
141
+ --shadow-md: 0 4px 12px rgb(5 8 11 / 0.08), 0 1px 3px rgb(5 8 11 / 0.06);
142
+ --shadow-lg: 0 16px 40px rgb(5 8 11 / 0.16), 0 3px 8px rgb(5 8 11 / 0.08);
143
+
144
+ --bp-sm: 640px;
145
+ --bp-md: 768px;
146
+ --bp-lg: 1024px;
147
+ --bp-xl: 1280px;
148
+ --bp-2xl: 1536px;
149
+
150
+ --z-base: 0;
151
+ --z-dropdown: 1000;
152
+ --z-sticky: 1100;
153
+ --z-overlay: 1200;
154
+ --z-modal: 1300;
155
+ --z-popover: 1400;
156
+ --z-toast: 1500;
157
+ --z-tooltip: 1600;
158
+
159
+ --layout-container: 80rem;
160
+ --layout-prose: 68ch;
161
+ --layout-sidebar: 16rem;
162
+ --layout-sidebar-wide: 18.5rem;
163
+ --layout-header: 4rem;
164
+
165
+ /* type scale - minor third 1.200 */
166
+ --text-2xs: 0.579rem;
167
+ --leading-2xs: 1.000rem;
168
+ --text-xs: 0.694rem;
169
+ --leading-xs: 1.125rem;
170
+ --text-sm: 0.833rem;
171
+ --leading-sm: 1.375rem;
172
+ --text-base: 1.000rem;
173
+ --leading-base: 1.625rem;
174
+ --text-lg: 1.200rem;
175
+ --leading-lg: 1.750rem;
176
+ --text-xl: 1.440rem;
177
+ --leading-xl: 1.875rem;
178
+ --text-2xl: 1.728rem;
179
+ --leading-2xl: 2.125rem;
180
+ --text-3xl: 2.074rem;
181
+ --leading-3xl: 2.375rem;
182
+ --text-4xl: 2.488rem;
183
+ --leading-4xl: 2.750rem;
184
+ --text-5xl: 2.986rem;
185
+ --leading-5xl: 3.250rem;
186
+ --text-6xl: 3.583rem;
187
+ --leading-6xl: 3.750rem;
188
+
189
+ --type-display-size: var(--text-5xl);
190
+ --type-display-leading: var(--leading-5xl);
191
+ --type-display-weight: var(--weight-semibold);
192
+ --type-display-tracking: -0.03em;
193
+ --type-title-lg-size: var(--text-3xl);
194
+ --type-title-lg-leading: var(--leading-3xl);
195
+ --type-title-lg-weight: var(--weight-semibold);
196
+ --type-title-lg-tracking: -0.02em;
197
+ --type-title-md-size: var(--text-2xl);
198
+ --type-title-md-leading: var(--leading-2xl);
199
+ --type-title-md-weight: var(--weight-semibold);
200
+ --type-title-md-tracking: -0.015em;
201
+ --type-title-sm-size: var(--text-xl);
202
+ --type-title-sm-leading: var(--leading-xl);
203
+ --type-title-sm-weight: var(--weight-semibold);
204
+ --type-title-sm-tracking: -0.01em;
205
+ --type-heading-size: var(--text-lg);
206
+ --type-heading-leading: var(--leading-lg);
207
+ --type-heading-weight: var(--weight-semibold);
208
+ --type-heading-tracking: -0.005em;
209
+ --type-body-size: var(--text-base);
210
+ --type-body-leading: var(--leading-base);
211
+ --type-body-weight: var(--weight-regular);
212
+ --type-body-tracking: 0.0em;
213
+ --type-body-sm-size: var(--text-sm);
214
+ --type-body-sm-leading: var(--leading-sm);
215
+ --type-body-sm-weight: var(--weight-regular);
216
+ --type-body-sm-tracking: 0.0em;
217
+ --type-label-size: var(--text-sm);
218
+ --type-label-leading: var(--leading-sm);
219
+ --type-label-weight: var(--weight-medium);
220
+ --type-label-tracking: 0.0em;
221
+ --type-caption-size: var(--text-xs);
222
+ --type-caption-leading: var(--leading-xs);
223
+ --type-caption-weight: var(--weight-regular);
224
+ --type-caption-tracking: 0.005em;
225
+ --type-overline-size: var(--text-xs);
226
+ --type-overline-leading: var(--leading-xs);
227
+ --type-overline-weight: var(--weight-semibold);
228
+ --type-overline-tracking: 0.06em;
229
+
230
+ /* layer 2 - semantic color roles, both themes written explicitly */
231
+ --color-canvas-light: #F7F9FC;
232
+ --color-canvas-dark: #080C0F;
233
+ --color-canvas: var(--color-canvas-light);
234
+ --color-surface-light: #FFFFFF;
235
+ --color-surface-dark: #101419;
236
+ --color-surface: var(--color-surface-light);
237
+ --color-surface-raised-light: #FFFFFF;
238
+ --color-surface-raised-dark: #1A1F24;
239
+ --color-surface-raised: var(--color-surface-raised-light);
240
+ --color-surface-sunken-light: #EDF1F5;
241
+ --color-surface-sunken-dark: #040608;
242
+ --color-surface-sunken: var(--color-surface-sunken-light);
243
+ --color-overlay-light: #FFFFFF;
244
+ --color-overlay-dark: #1A1F24;
245
+ --color-overlay: var(--color-overlay-light);
246
+ --color-text-primary-light: #1A1F24;
247
+ --color-text-primary-dark: #F7F9FC;
248
+ --color-text-primary: var(--color-text-primary-light);
249
+ --color-text-secondary-light: #424B55;
250
+ --color-text-secondary-dark: #C5CDD6;
251
+ --color-text-secondary: var(--color-text-secondary-light);
252
+ --color-text-tertiary-light: #616C77;
253
+ --color-text-tertiary-dark: #7C8893;
254
+ --color-text-tertiary: var(--color-text-tertiary-light);
255
+ --color-text-inverse-light: #F7F9FC;
256
+ --color-text-inverse-dark: #101419;
257
+ --color-text-inverse: var(--color-text-inverse-light);
258
+ --color-link-light: #005CA1;
259
+ --color-link-dark: #8DC0F2;
260
+ --color-link: var(--color-link-light);
261
+ --color-link-hover-light: #024679;
262
+ --color-link-hover-dark: #B6D8FB;
263
+ --color-link-hover: var(--color-link-hover-light);
264
+ --color-accent-light: #1383DA;
265
+ --color-accent-dark: #1383DA;
266
+ --color-accent: var(--color-accent-light);
267
+ --color-accent-hover-light: #55A1E8;
268
+ --color-accent-hover-dark: #55A1E8;
269
+ --color-accent-hover: var(--color-accent-hover-light);
270
+ --color-accent-active-light: #006FBD;
271
+ --color-accent-active-dark: #006FBD;
272
+ --color-accent-active: var(--color-accent-active-light);
273
+ --color-accent-on-light: #FFFFFF;
274
+ --color-accent-on-dark: #FFFFFF;
275
+ --color-accent-on: var(--color-accent-on-light);
276
+ --color-accent-strong-light: #005CA1;
277
+ --color-accent-strong-dark: #005CA1;
278
+ --color-accent-strong: var(--color-accent-strong-light);
279
+ --color-accent-strong-hover-light: #024679;
280
+ --color-accent-strong-hover-dark: #006FBD;
281
+ --color-accent-strong-hover: var(--color-accent-strong-hover-light);
282
+ --color-accent-strong-active-light: #053256;
283
+ --color-accent-strong-active-dark: #024679;
284
+ --color-accent-strong-active: var(--color-accent-strong-active-light);
285
+ --color-accent-strong-fg-light: #FFFFFF;
286
+ --color-accent-strong-fg-dark: #FFFFFF;
287
+ --color-accent-strong-fg: var(--color-accent-strong-fg-light);
288
+ --color-accent-subtle-light: #EEF7FF;
289
+ --color-accent-subtle-dark: #041E35;
290
+ --color-accent-subtle: var(--color-accent-subtle-light);
291
+ --color-accent-subtle-hover-light: #DAEEFF;
292
+ --color-accent-subtle-hover-dark: #053256;
293
+ --color-accent-subtle-hover: var(--color-accent-subtle-hover-light);
294
+ --color-accent-subtle-fg-light: #005CA1;
295
+ --color-accent-subtle-fg-dark: #8DC0F2;
296
+ --color-accent-subtle-fg: var(--color-accent-subtle-fg-light);
297
+ --color-success-light: #005B23;
298
+ --color-success-dark: #73C385;
299
+ --color-success: var(--color-success-light);
300
+ --color-success-bg-light: #EAFAEC;
301
+ --color-success-bg-dark: #011A07;
302
+ --color-success-bg: var(--color-success-bg-light);
303
+ --color-success-bg-hover-light: #D1F2D7;
304
+ --color-success-bg-hover-dark: #002D0E;
305
+ --color-success-bg-hover: var(--color-success-bg-hover-light);
306
+ --color-success-fg-light: #004218;
307
+ --color-success-fg-dark: #A6DEB1;
308
+ --color-success-fg: var(--color-success-fg-light);
309
+ --color-warning-light: #895C00;
310
+ --color-warning-dark: #F7B83D;
311
+ --color-warning: var(--color-warning-light);
312
+ --color-warning-bg-light: #FFF5E1;
313
+ --color-warning-bg-dark: #291A00;
314
+ --color-warning-bg: var(--color-warning-bg-light);
315
+ --color-warning-bg-hover-light: #FFE7BB;
316
+ --color-warning-bg-hover-dark: #452E00;
317
+ --color-warning-bg-hover: var(--color-warning-bg-hover-light);
318
+ --color-warning-fg-light: #644400;
319
+ --color-warning-fg-dark: #FED081;
320
+ --color-warning-fg: var(--color-warning-fg-light);
321
+ --color-danger-light: #BA2B2E;
322
+ --color-danger-dark: #FF9890;
323
+ --color-danger: var(--color-danger-light);
324
+ --color-danger-bg-light: #FFF0EE;
325
+ --color-danger-bg-dark: #2F0405;
326
+ --color-danger-bg: var(--color-danger-bg-light);
327
+ --color-danger-bg-hover-light: #FFDCD7;
328
+ --color-danger-bg-hover-dark: #4F0A0D;
329
+ --color-danger-bg-hover: var(--color-danger-bg-hover-light);
330
+ --color-danger-fg-light: #971A20;
331
+ --color-danger-fg-dark: #FFBEB6;
332
+ --color-danger-fg: var(--color-danger-fg-light);
333
+ --color-danger-strong-light: #BA2B2E;
334
+ --color-danger-strong-dark: #BA2B2E;
335
+ --color-danger-strong: var(--color-danger-strong-light);
336
+ --color-danger-strong-hover-light: #971A20;
337
+ --color-danger-strong-hover-dark: #971A20;
338
+ --color-danger-strong-hover: var(--color-danger-strong-hover-light);
339
+ --color-danger-strong-fg-light: #FFFFFF;
340
+ --color-danger-strong-fg-dark: #FFFFFF;
341
+ --color-danger-strong-fg: var(--color-danger-strong-fg-light);
342
+ --color-border-subtle-light: #DCE2E8;
343
+ --color-border-subtle-dark: #2C343C;
344
+ --color-border-subtle: var(--color-border-subtle-light);
345
+ --color-border-default-light: #C5CDD6;
346
+ --color-border-default-dark: #424B55;
347
+ --color-border-default: var(--color-border-default-light);
348
+ --color-border-control-light: #7C8893;
349
+ --color-border-control-dark: #616C77;
350
+ --color-border-control: var(--color-border-control-light);
351
+ --color-border-control-hover-light: #616C77;
352
+ --color-border-control-hover-dark: #7C8893;
353
+ --color-border-control-hover: var(--color-border-control-hover-light);
354
+ --color-border-strong-light: #7C8893;
355
+ --color-border-strong-dark: #7C8893;
356
+ --color-border-strong: var(--color-border-strong-light);
357
+ --color-focus-light: #006FBD;
358
+ --color-focus-dark: #8DC0F2;
359
+ --color-focus: var(--color-focus-light);
360
+ --color-focus-offset-light: #FFFFFF;
361
+ --color-focus-offset-dark: #040608;
362
+ --color-focus-offset: var(--color-focus-offset-light);
363
+ --color-selection-light: #DAEEFF;
364
+ --color-selection-dark: #024679;
365
+ --color-selection: var(--color-selection-light);
366
+
367
+ /* focus contract - every focusable control uses this ring */
368
+ --focus-ring-width: 2px;
369
+ --focus-ring-offset: 2px;
370
+ --focus-ring-color: var(--color-focus);
371
+ --focus-ring-offset-color: var(--color-focus-offset);
372
+
373
+ /* layer 3 - component tokens (aliases only) */
374
+
375
+ /* button */
376
+ --button-font: var(--font-body);
377
+ --button-font-weight: var(--weight-medium);
378
+ --button-radius: var(--radius-md);
379
+ --button-gap: var(--space-2);
380
+ --button-height-sm: var(--space-8);
381
+ --button-height-md: var(--space-10);
382
+ --button-height-lg: var(--space-12);
383
+ --button-padding-x-sm: var(--space-3);
384
+ --button-padding-x-md: var(--space-4);
385
+ --button-padding-x-lg: var(--space-5);
386
+ --button-font-sm: var(--text-sm);
387
+ --button-font-md: var(--text-sm);
388
+ --button-font-lg: var(--text-base);
389
+ --button-primary-bg: var(--color-accent-strong);
390
+ --button-primary-bg-hover: var(--color-accent-strong-hover);
391
+ --button-primary-bg-active: var(--color-accent-strong-active);
392
+ --button-primary-fg: var(--color-accent-strong-fg);
393
+ --button-primary-border: var(--color-accent-strong);
394
+ --button-primary-border-hover: var(--color-accent-strong-hover);
395
+ --button-secondary-bg: var(--color-surface);
396
+ --button-secondary-bg-hover: var(--color-surface-sunken);
397
+ --button-secondary-bg-active: var(--color-surface-sunken);
398
+ --button-secondary-fg: var(--color-text-primary);
399
+ --button-secondary-border: var(--color-border-control);
400
+ --button-secondary-border-hover: var(--color-border-control-hover);
401
+ --button-ghost-bg: transparent;
402
+ --button-ghost-bg-hover: var(--color-surface-sunken);
403
+ --button-ghost-bg-active: var(--color-surface-sunken);
404
+ --button-ghost-fg: var(--color-text-secondary);
405
+ --button-ghost-fg-hover: var(--color-text-primary);
406
+ --button-ghost-border: transparent;
407
+ --button-danger-bg: var(--color-danger-strong);
408
+ --button-danger-bg-hover: var(--color-danger-strong-hover);
409
+ --button-danger-fg: var(--color-danger-strong-fg);
410
+ --button-danger-border: transparent;
411
+ --button-disabled-bg: var(--color-surface-sunken);
412
+ --button-disabled-fg: var(--color-text-tertiary);
413
+ --button-disabled-border: var(--color-border-subtle);
414
+ --button-focus-color: var(--focus-ring-color);
415
+ --button-focus-offset: var(--focus-ring-offset);
416
+ --button-focus-width: var(--focus-ring-width);
417
+ --button-icon-size-sm: var(--space-4);
418
+ --button-icon-size-md: var(--space-4);
419
+ --button-icon-size-lg: var(--space-5);
420
+
421
+ /* input */
422
+ --input-font: var(--font-body);
423
+ --input-font-size: var(--text-sm);
424
+ --input-radius: var(--radius-md);
425
+ --input-height-sm: var(--space-8);
426
+ --input-height-md: var(--space-10);
427
+ --input-height-lg: var(--space-12);
428
+ --input-padding-x: var(--space-3);
429
+ --input-padding-y: var(--space-2);
430
+ --input-bg: var(--color-surface);
431
+ --input-bg-hover: var(--color-surface);
432
+ --input-bg-disabled: var(--color-surface-sunken);
433
+ --input-fg: var(--color-text-primary);
434
+ --input-fg-disabled: var(--color-text-tertiary);
435
+ --input-placeholder: var(--color-text-tertiary);
436
+ --input-border: var(--color-border-control);
437
+ --input-border-hover: var(--color-border-control-hover);
438
+ --input-border-focus: var(--color-focus);
439
+ --input-border-invalid: var(--color-danger);
440
+ --input-border-valid: var(--color-success);
441
+ --input-ring-focus: var(--color-focus);
442
+ --input-ring-invalid: var(--color-danger);
443
+ --input-label-fg: var(--color-text-primary);
444
+ --input-hint-fg: var(--color-text-secondary);
445
+ --input-count-fg: var(--color-text-tertiary);
446
+ --input-error-fg: var(--color-danger-fg);
447
+ --input-required-fg: var(--color-danger);
448
+ --input-reveal-fg: var(--color-text-secondary);
449
+ --input-reveal-fg-hover: var(--color-text-primary);
450
+ --input-reveal-bg-hover: var(--color-surface-sunken);
451
+ --input-focus-width: var(--focus-ring-width);
452
+ --input-focus-offset: var(--focus-ring-offset);
453
+
454
+ /* checkbox */
455
+ --checkbox-size: 1.125rem;
456
+ --checkbox-radius: var(--radius-xs);
457
+ --checkbox-gap: var(--space-2-5);
458
+ --checkbox-bg: var(--color-surface);
459
+ --checkbox-bg-hover: var(--color-surface-sunken);
460
+ --checkbox-bg-checked: var(--color-accent);
461
+ --checkbox-bg-disabled: var(--color-surface-sunken);
462
+ --checkbox-border: var(--color-border-strong);
463
+ --checkbox-border-checked: var(--color-accent);
464
+ --checkbox-fg-check: var(--color-accent-on);
465
+ --checkbox-fg-disabled: var(--color-text-tertiary);
466
+ --checkbox-label-fg: var(--color-text-primary);
467
+ --checkbox-label-fg-disabled: var(--color-text-tertiary);
468
+ --checkbox-focus-color: var(--color-focus);
469
+ --checkbox-focus-offset: var(--focus-ring-offset);
470
+ --checkbox-focus-width: var(--focus-ring-width);
471
+
472
+ /* radio */
473
+ --radio-bg-checked: var(--color-accent);
474
+ --radio-bg-disabled: var(--color-surface-sunken);
475
+ --radio-border-checked: var(--color-accent);
476
+ --radio-dot: var(--color-accent-on);
477
+ --radio-dot-size: 0.4375rem;
478
+
479
+ /* badge */
480
+ --badge-radius: var(--radius-full);
481
+ --badge-height: var(--space-5);
482
+ --badge-padding-x: var(--space-2);
483
+ --badge-font: var(--font-body);
484
+ --badge-font-size: var(--text-xs);
485
+ --badge-font-weight: var(--weight-medium);
486
+ --badge-neutral-bg: var(--color-surface-sunken);
487
+ --badge-neutral-fg: var(--color-text-secondary);
488
+ --badge-accent-bg: var(--color-accent-subtle);
489
+ --badge-accent-fg: var(--color-accent-subtle-fg);
490
+ --badge-success-bg: var(--color-success-bg);
491
+ --badge-success-fg: var(--color-success-fg);
492
+ --badge-warning-bg: var(--color-warning-bg);
493
+ --badge-warning-fg: var(--color-warning-fg);
494
+ --badge-danger-bg: var(--color-danger-bg);
495
+ --badge-danger-fg: var(--color-danger-fg);
496
+ --badge-dot-size: 0.375rem;
497
+
498
+ /* select */
499
+ --select-bg: var(--color-surface);
500
+ --select-bg-disabled: var(--color-surface-sunken);
501
+ --select-fg: var(--color-text-primary);
502
+ --select-fg-disabled: var(--color-text-tertiary);
503
+ --select-placeholder: var(--color-text-tertiary);
504
+ --select-border: var(--color-border-control);
505
+ --select-border-hover: var(--color-border-control-hover);
506
+ --select-border-focus: var(--color-focus);
507
+ --select-border-invalid: var(--color-danger);
508
+ --select-radius: var(--radius-md);
509
+ --select-height: var(--space-10);
510
+ --select-height-sm: var(--space-8);
511
+ --select-height-lg: var(--space-12);
512
+ --select-padding-x: var(--space-3);
513
+ --select-chevron: var(--color-text-secondary);
514
+ --select-focus-width: var(--focus-ring-width);
515
+ --select-focus-offset: var(--focus-ring-offset);
516
+ --select-focus-offset-color: var(--focus-ring-offset-color);
517
+ --select-popup-bg: var(--color-surface-raised);
518
+ --select-popup-border: var(--color-border-control);
519
+ --select-popup-radius: var(--radius-md);
520
+ --select-popup-shadow: var(--shadow-lg);
521
+ --select-popup-padding: var(--space-1);
522
+ --select-popup-gap: var(--space-1);
523
+ --select-popup-max-height: 18rem;
524
+ --select-popup-z: var(--z-dropdown);
525
+ --select-option-fg: var(--color-text-primary);
526
+ --select-option-fg-muted: var(--color-text-tertiary);
527
+ --select-option-description: var(--color-text-tertiary);
528
+ --select-popup-footer-border: var(--color-border-subtle);
529
+ --select-option-bg-hover: var(--color-surface-sunken);
530
+ --select-option-bg-selected: var(--color-accent-subtle);
531
+ --select-option-fg-selected: var(--color-accent-subtle-fg);
532
+ --select-option-radius: var(--radius-sm);
533
+ --select-option-padding-x: var(--space-3);
534
+ --select-option-padding-y: var(--space-2);
535
+ --select-indicator-bg: var(--color-accent);
536
+ --select-indicator-fg: var(--color-accent-on);
537
+ --select-indicator-size: var(--space-4);
538
+
539
+ /* chip */
540
+ --chip-bg: var(--color-surface);
541
+ --chip-bg-hover: var(--color-surface-sunken);
542
+ --chip-bg-selected: var(--color-accent-subtle);
543
+ --chip-fg: var(--color-text-secondary);
544
+ --chip-fg-hover: var(--color-text-primary);
545
+ --chip-fg-selected: var(--color-accent-subtle-fg);
546
+ --chip-fg-disabled: var(--color-text-tertiary);
547
+ --chip-remove-bg-hover: var(--color-border-default);
548
+ --chip-border: var(--color-border-control);
549
+ --chip-border-hover: var(--color-border-control-hover);
550
+ --chip-border-selected: var(--color-accent);
551
+ --chip-radius: var(--radius-full);
552
+ --chip-height: var(--space-8);
553
+ --chip-height-sm: var(--space-6);
554
+ --chip-padding-x: var(--space-3);
555
+ --chip-font-size: var(--text-sm);
556
+ --chip-focus-color: var(--color-focus);
557
+ --chip-focus-offset: var(--focus-ring-offset);
558
+ --chip-focus-width: var(--focus-ring-width);
559
+
560
+ /* accordion */
561
+ --accordion-item-radius: var(--radius-md);
562
+ --accordion-item-bg: var(--color-surface);
563
+ --accordion-item-border: var(--color-border-subtle);
564
+ --accordion-gap: var(--space-2);
565
+ --accordion-trigger-fg: var(--color-text-primary);
566
+ --accordion-trigger-bg-hover: var(--color-surface-sunken);
567
+ --accordion-trigger-bg-open: var(--color-surface-sunken);
568
+ --accordion-trigger-padding-x: var(--space-4);
569
+ --accordion-trigger-padding-y: var(--space-4);
570
+ --accordion-font-size: var(--text-sm);
571
+ --accordion-icon: var(--color-text-tertiary);
572
+ --accordion-panel-fg: var(--color-text-secondary);
573
+ --accordion-panel-bg: var(--color-surface);
574
+ --accordion-panel-border: var(--color-border-subtle);
575
+ --accordion-panel-padding: var(--space-4);
576
+ --accordion-focus-color: var(--color-focus);
577
+ --accordion-focus-offset: calc(-1 * var(--focus-ring-offset));
578
+ --accordion-focus-width: var(--focus-ring-width);
579
+ --accordion-max-width: var(--layout-prose);
580
+
581
+ /* card */
582
+ --card-radius: var(--radius-lg);
583
+ --card-padding: var(--space-6);
584
+ --card-bg: var(--color-surface);
585
+ --card-border: var(--color-border-subtle);
586
+ --card-fg: var(--color-text-primary);
587
+ --card-body-fg: var(--color-text-secondary);
588
+ --card-header-gap: var(--space-1);
589
+ --card-footer-bg: transparent;
590
+ --card-footer-border: var(--color-border-subtle);
591
+ --card-accent-bg: var(--color-surface);
592
+ --card-accent-border: var(--color-warning);
593
+ --card-raised-bg: var(--color-surface-raised);
594
+ --card-raised-border: var(--color-border-subtle);
595
+ --card-raised-shadow: var(--shadow-md);
596
+ --card-flat-bg: var(--color-surface-sunken);
597
+ --card-flat-border: transparent;
598
+ --card-hover-border: var(--color-border-control);
599
+ --card-title-fg: var(--color-text-primary);
600
+ --card-meta-fg: var(--color-text-tertiary);
601
+
602
+ /* modal */
603
+ --modal-backdrop: rgb(3 6 10 / 0.62);
604
+ --modal-footer-bg: var(--color-surface-sunken);
605
+ --modal-bg: var(--color-overlay);
606
+ --modal-fg: var(--color-text-primary);
607
+ --modal-border: var(--color-border-subtle);
608
+ --modal-radius: var(--radius-xl);
609
+ --modal-shadow: var(--shadow-lg);
610
+ --modal-padding: var(--space-6);
611
+ --modal-gap: var(--space-4);
612
+ --modal-max-width-sm: 24rem;
613
+ --modal-max-width-md: 32rem;
614
+ --modal-max-width-lg: 44rem;
615
+ --modal-title-fg: var(--color-text-primary);
616
+ --modal-body-fg: var(--color-text-secondary);
617
+ --modal-close-bg-hover: var(--color-surface-sunken);
618
+ --modal-close-fg: var(--color-text-secondary);
619
+ --modal-focus-color: var(--color-focus);
620
+ --modal-focus-offset: var(--focus-ring-offset);
621
+ --modal-focus-width: var(--focus-ring-width);
622
+
623
+ /* nav */
624
+ --nav-bg: var(--color-surface);
625
+ --nav-border: var(--color-border-subtle);
626
+ --nav-width: var(--layout-sidebar);
627
+ --nav-item-fg: var(--color-text-secondary);
628
+ --nav-item-fg-hover: var(--color-text-primary);
629
+ --nav-item-fg-active: var(--color-text-primary);
630
+ --nav-item-bg-hover: var(--color-surface-sunken);
631
+ --nav-item-bg-active: var(--color-accent-subtle);
632
+ --nav-item-indicator: var(--color-accent);
633
+ --nav-item-radius: var(--radius-md);
634
+ --nav-item-height: var(--space-10);
635
+ --nav-item-padding-x: var(--space-3);
636
+ --nav-item-gap: var(--space-2-5);
637
+ --nav-group-label-fg: var(--color-text-tertiary);
638
+ --nav-group-label-size: var(--text-xs);
639
+ --nav-brand-fg: var(--color-text-primary);
640
+ --nav-brand-size: var(--text-sm);
641
+ --nav-brand-mark-bg: var(--color-accent);
642
+ --nav-brand-mark-fg: var(--color-accent-on);
643
+ --nav-icon: var(--color-text-tertiary);
644
+ --nav-mobilebar-bg: var(--color-surface);
645
+ --nav-toggle-bg: transparent;
646
+ --nav-toggle-fg: var(--color-text-secondary);
647
+ --nav-toggle-border: var(--color-border-control);
648
+ --nav-focus-color: var(--color-focus);
649
+ --nav-focus-offset: var(--focus-ring-offset);
650
+ --nav-focus-width: var(--focus-ring-width);
651
+ --nav-mobile-backdrop: rgb(3 6 10 / 0.62);
652
+ --nav-scrollbar: var(--color-border-default);
653
+
654
+ /* navbar */
655
+ --navbar-bg: var(--color-canvas);
656
+ --navbar-tint: 72%;
657
+ --navbar-blur: 12px;
658
+ --navbar-height: var(--layout-header);
659
+ --navbar-padding-x: var(--space-6);
660
+ --navbar-gap: var(--space-4);
661
+ --navbar-brand-fg: var(--color-text-primary);
662
+ --navbar-brand-size: var(--text-sm);
663
+ --navbar-brand-mark-bg: var(--color-accent);
664
+ --navbar-brand-mark-fg: var(--color-accent-on);
665
+ --navbar-link-fg: var(--color-text-secondary);
666
+ --navbar-link-fg-hover: var(--color-text-primary);
667
+ --navbar-link-fg-current: var(--color-text-primary);
668
+ --navbar-link-bg-hover: var(--color-surface-sunken);
669
+ --navbar-link-bg-open: var(--color-surface-sunken);
670
+ --navbar-link-bg-current: var(--color-accent-subtle);
671
+ --navbar-link-bg-current-hover: var(--color-accent-subtle-hover);
672
+ --navbar-current-icon-fg: var(--color-accent);
673
+ --navbar-link-radius: var(--radius-md);
674
+ --navbar-link-height: var(--space-8);
675
+ --navbar-link-padding-x: var(--space-3);
676
+ --navbar-link-gap: var(--space-1-5);
677
+ --navbar-link-size: var(--text-sm);
678
+ --navbar-viewport-bg: var(--color-overlay);
679
+ --navbar-viewport-border: var(--color-border-default);
680
+ --navbar-viewport-shadow: var(--shadow-lg);
681
+ --navbar-viewport-radius: var(--radius-lg);
682
+ --navbar-viewport-offset: var(--space-2);
683
+ --navbar-panel-padding: var(--space-2);
684
+ --navbar-panel-gap: var(--space-1);
685
+ --navbar-panel-width-list: 20rem;
686
+ --navbar-panel-width-grid: 34rem;
687
+ --navbar-panel-width-group: 15rem;
688
+ --navbar-row-fg: var(--color-text-primary);
689
+ --navbar-row-desc-fg: var(--color-text-secondary);
690
+ --navbar-row-icon-fg: var(--color-text-tertiary);
691
+ --navbar-row-bg-hover: var(--color-surface-sunken);
692
+ --navbar-row-bg-current: var(--color-accent-subtle);
693
+ --navbar-row-radius: var(--radius-md);
694
+ --navbar-row-padding: var(--space-2-5) var(--space-3);
695
+ --navbar-feature-bg: var(--color-surface-sunken);
696
+ --navbar-feature-bg-hover: var(--color-accent-subtle);
697
+ --navbar-feature-icon-bg: var(--color-accent);
698
+ --navbar-feature-icon-fg: var(--color-accent-on);
699
+ --navbar-feature-min-height: 12rem;
700
+ --navbar-eyebrow-fg: var(--color-text-tertiary);
701
+ --navbar-toggle-fg: var(--color-text-primary);
702
+ --navbar-toggle-bg-hover: var(--color-surface-sunken);
703
+ --navbar-sheet-bg: var(--color-overlay);
704
+ --navbar-sheet-border: var(--color-border-subtle);
705
+ --navbar-sheet-backdrop: rgb(3 6 10 / 0.32);
706
+ --navbar-sheet-radius: var(--radius-xl);
707
+ --navbar-sheet-inset: var(--space-2);
708
+ --navbar-sheet-max-width: 26rem;
709
+ --navbar-sheet-padding: var(--space-6);
710
+ --navbar-sheet-row-height: var(--space-10);
711
+ --navbar-sheet-row-size: var(--text-base);
712
+ --navbar-sheet-meta-fg: var(--color-text-secondary);
713
+ --navbar-focus-color: var(--color-focus);
714
+ --navbar-focus-offset: var(--focus-ring-offset);
715
+ --navbar-focus-width: var(--focus-ring-width);
716
+
717
+ /* topbar */
718
+ --topbar-bg: var(--color-canvas);
719
+ --topbar-border: var(--color-border-subtle);
720
+ --topbar-height: var(--space-8);
721
+ --topbar-padding-x: var(--space-6);
722
+ --topbar-gap: var(--space-4);
723
+
724
+ /* page-header */
725
+ --page-header-title-fg: var(--color-text-primary);
726
+ --page-header-title-size: var(--text-4xl);
727
+ --page-header-title-leading: var(--leading-4xl);
728
+ --page-header-title-tracking: -0.025em;
729
+ --page-header-title-max: var(--layout-prose);
730
+ --page-header-lede-fg: var(--color-text-secondary);
731
+ --page-header-lede-size: var(--text-lg);
732
+ --page-header-lede-leading: var(--leading-lg);
733
+ --page-header-lede-max: var(--layout-prose);
734
+ --page-header-gap: var(--space-4);
735
+ --page-header-meta-gap: var(--space-2);
736
+ --page-header-actions-gap: var(--space-3);
737
+ --page-header-actions-margin: var(--space-2);
738
+ --page-header-display-size: var(--text-5xl);
739
+ --page-header-display-leading: var(--leading-5xl);
740
+ --page-header-display-tracking: -0.03em;
741
+ --page-header-emphasis-fg: var(--color-text-secondary);
742
+
743
+ /* section */
744
+ --section-border: var(--color-border-subtle);
745
+ --section-margin-top: var(--space-12);
746
+ --section-padding-top: var(--space-6);
747
+ --section-head-gap: var(--space-4);
748
+ --section-title-size: var(--text-xl);
749
+ --section-title-leading: var(--leading-xl);
750
+ --section-title-margin: var(--space-4);
751
+ --section-index-fg: var(--color-text-tertiary);
752
+ --section-index-size: var(--text-sm);
753
+ --section-intro-fg: var(--color-text-secondary);
754
+ --section-intro-size: var(--text-base);
755
+ --section-intro-max: var(--layout-prose);
756
+ --section-intro-margin: var(--space-5);
757
+
758
+ /* example */
759
+ --example-bg: var(--color-surface-sunken);
760
+ --example-border: transparent;
761
+ --example-radius: var(--radius-lg);
762
+ --example-padding: var(--space-6);
763
+ --example-gap: var(--space-3);
764
+ --example-label-fg: var(--color-text-tertiary);
765
+ --example-label-size: var(--text-xs);
766
+ --example-description-fg: var(--color-text-tertiary);
767
+ --example-preview-min: var(--space-16);
768
+
769
+ /* code */
770
+ --code-bg: var(--color-surface);
771
+ --code-fg: var(--color-text-primary);
772
+ --code-border: var(--color-border-subtle);
773
+ --code-radius: var(--radius-md);
774
+ --code-padding: var(--space-4);
775
+ --code-font-size: var(--text-sm);
776
+ --code-line-height: 1.6;
777
+ --code-label-fg: var(--color-text-tertiary);
778
+ --code-label-size: var(--text-xs);
779
+ --code-label-margin: var(--space-2);
780
+ --code-scrollbar: var(--color-border-default);
781
+
782
+ /* grid */
783
+ --grid-gap: var(--space-6);
784
+ --grid-gap-sm: var(--space-4);
785
+ --grid-gap-lg: var(--space-8);
786
+ --grid-container: var(--layout-container);
787
+ --grid-gutter: var(--space-4);
788
+
789
+ /* breadcrumbs */
790
+ --breadcrumbs-link-fg: var(--color-text-secondary);
791
+ --breadcrumbs-link-fg-hover: var(--color-text-primary);
792
+ --breadcrumbs-current-fg: var(--color-text-primary);
793
+ --breadcrumbs-separator-fg: var(--color-text-tertiary);
794
+ --breadcrumbs-font-size: var(--text-sm);
795
+ --breadcrumbs-gap: var(--space-2);
796
+ --breadcrumbs-focus-color: var(--color-focus);
797
+ --breadcrumbs-focus-offset: var(--focus-ring-offset);
798
+ --breadcrumbs-focus-width: var(--focus-ring-width);
799
+
800
+ /* pagination */
801
+ --pagination-item-size: var(--space-10);
802
+ --pagination-radius: var(--radius-md);
803
+ --pagination-bg: transparent;
804
+ --pagination-bg-hover: var(--color-surface-sunken);
805
+ --pagination-bg-current: var(--color-accent-strong);
806
+ --pagination-fg: var(--color-text-secondary);
807
+ --pagination-fg-hover: var(--color-text-primary);
808
+ --pagination-fg-current: var(--color-accent-strong-fg);
809
+ --pagination-fg-disabled: var(--color-text-tertiary);
810
+ --pagination-font-size: var(--text-sm);
811
+ --pagination-gap: var(--space-1);
812
+ --pagination-focus-color: var(--color-focus);
813
+ --pagination-focus-offset: var(--focus-ring-offset);
814
+ --pagination-focus-width: var(--focus-ring-width);
815
+
816
+ /* table */
817
+ --table-bg: var(--color-surface);
818
+ --table-header-bg: var(--color-surface-sunken);
819
+ --table-header-fg: var(--color-text-secondary);
820
+ --table-header-size: var(--text-xs);
821
+ --table-cell-fg: var(--color-text-primary);
822
+ --table-cell-fg-muted: var(--color-text-secondary);
823
+ --table-cell-size: var(--text-sm);
824
+ --table-min-width: 36rem;
825
+ --table-row-border: var(--color-border-subtle);
826
+ --table-row-hover: var(--color-surface-sunken);
827
+ --table-row-selected: var(--color-accent-subtle);
828
+ --table-cell-padding-x: var(--space-4);
829
+ --table-cell-padding-y: var(--space-3);
830
+ --table-caption-fg: var(--color-text-tertiary);
831
+ --table-caption-size: var(--text-xs);
832
+ --table-radius: var(--radius-lg);
833
+ --table-border: var(--color-border-subtle);
834
+ --table-numeric-font: var(--font-mono);
835
+ --table-sort-hover: var(--color-text-primary);
836
+ --table-focus-color: var(--color-focus);
837
+ --table-focus-offset: calc(-1 * var(--focus-ring-offset));
838
+ --table-focus-width: var(--focus-ring-width);
839
+ --table-toolbar-gap: var(--space-3);
840
+ --table-toolbar-padding: var(--space-3);
841
+ --table-toolbar-bg: var(--color-surface);
842
+ --table-filter-width: 18rem;
843
+
844
+ /* toast */
845
+ --toast-bg: var(--color-overlay);
846
+ --toast-border: var(--color-border-default);
847
+ --toast-fg: var(--color-text-primary);
848
+ --toast-shadow: var(--shadow-lg);
849
+ --toast-radius: var(--radius-xl);
850
+ --toast-padding: var(--space-4);
851
+ --toast-gap: var(--space-3);
852
+ --toast-width: 24rem;
853
+ --toast-title-size: var(--text-sm);
854
+ --toast-title-weight: var(--weight-medium);
855
+ --toast-body-size: var(--text-sm);
856
+ --toast-body-fg: var(--color-text-secondary);
857
+ --toast-body-gap: var(--space-1);
858
+ --toast-icon-fg: var(--color-text-primary);
859
+ --toast-info-icon: var(--color-accent);
860
+ --toast-success-icon: var(--color-success);
861
+ --toast-warning-icon: var(--color-warning);
862
+ --toast-danger-icon: var(--color-danger);
863
+ --toast-loading-icon: var(--color-text-secondary);
864
+ --toast-close-fg: var(--color-text-tertiary);
865
+ --toast-close-fg-hover: var(--color-text-primary);
866
+ --toast-close-bg-hover: var(--color-surface-sunken);
867
+ --toast-action-bg: transparent;
868
+ --toast-action-bg-hover: var(--color-surface-sunken);
869
+ --toast-action-border: var(--color-border-default);
870
+ --toast-action-fg: var(--color-text-primary);
871
+ --toast-action-radius: var(--radius-md);
872
+ --toast-action-height: var(--space-8);
873
+ --toast-action-padding-x: var(--space-3);
874
+ --toast-action-font-size: var(--text-sm);
875
+ --toast-action-font-weight: var(--weight-medium);
876
+ --toast-viewport-gap: var(--space-3);
877
+ --toast-stack-peek: 0.75rem;
878
+ --toast-stack-scale-step: 0.08;
879
+ --toast-focus-color: var(--color-focus);
880
+ --toast-focus-offset: var(--focus-ring-offset);
881
+ --toast-focus-width: var(--focus-ring-width);
882
+
883
+ /* alert */
884
+ --alert-radius: var(--radius-md);
885
+ --alert-padding: var(--space-4);
886
+ --alert-gap: var(--space-3);
887
+ --alert-title-size: var(--text-sm);
888
+ --alert-body-size: var(--text-sm);
889
+ --alert-body-fg: var(--color-text-secondary);
890
+ --alert-info-bg: var(--color-accent-subtle);
891
+ --alert-info-border: var(--color-accent);
892
+ --alert-info-fg: var(--color-accent-subtle-fg);
893
+ --alert-success-bg: var(--color-success-bg);
894
+ --alert-success-border: var(--color-success);
895
+ --alert-success-fg: var(--color-success-fg);
896
+ --alert-warning-bg: var(--color-warning-bg);
897
+ --alert-warning-border: var(--color-warning);
898
+ --alert-warning-fg: var(--color-warning-fg);
899
+ --alert-danger-bg: var(--color-danger-bg);
900
+ --alert-danger-border: var(--color-danger);
901
+ --alert-danger-fg: var(--color-danger-fg);
902
+ --alert-info-close-fg: var(--color-accent-subtle-fg);
903
+ --alert-info-close-bg-hover: var(--color-accent-subtle-hover);
904
+ --alert-success-close-fg: var(--color-success-fg);
905
+ --alert-success-close-bg-hover: var(--color-success-bg-hover);
906
+ --alert-warning-close-fg: var(--color-warning-fg);
907
+ --alert-warning-close-bg-hover: var(--color-warning-bg-hover);
908
+ --alert-danger-close-fg: var(--color-danger-fg);
909
+ --alert-danger-close-bg-hover: var(--color-danger-bg-hover);
910
+ --alert-focus-color: var(--color-focus);
911
+ --alert-focus-offset: var(--focus-ring-offset);
912
+ --alert-focus-width: var(--focus-ring-width);
913
+
914
+ /* skeleton */
915
+ --skeleton-bg: var(--color-surface-sunken);
916
+ --skeleton-highlight: var(--color-border-subtle);
917
+ --skeleton-radius: var(--radius-sm);
918
+ --skeleton-heading-height: var(--space-4);
919
+ --skeleton-text-height: var(--space-3);
920
+ --skeleton-text-gap: var(--space-2);
921
+ --skeleton-image-radius: var(--radius-md);
922
+ --skeleton-duration: 1.6s;
923
+
924
+ /* spinner */
925
+ --spinner-size-sm: var(--space-4);
926
+ --spinner-size-md: var(--space-5);
927
+ --spinner-size-lg: var(--space-8);
928
+ --spinner-track: var(--color-border-default);
929
+ --spinner-indicator: var(--color-accent);
930
+ --spinner-duration: 700ms;
931
+ --spinner-stroke: 2px;
932
+
933
+ /* empty */
934
+ --empty-padding: var(--space-16) var(--space-6);
935
+ --empty-icon-size: var(--space-12);
936
+ --empty-icon-bg: var(--color-surface-sunken);
937
+ --empty-icon-fg: var(--color-text-tertiary);
938
+ --empty-title-fg: var(--color-text-primary);
939
+ --empty-title-size: var(--text-lg);
940
+ --empty-body-fg: var(--color-text-secondary);
941
+ --empty-body-size: var(--text-sm);
942
+ --empty-gap: var(--space-3);
943
+ --empty-max-width: 26rem;
944
+ --empty-dashed-border: var(--color-border-strong);
945
+ --empty-radius: var(--radius-lg);
946
+ --empty-skeleton-gap: var(--space-4);
947
+ --empty-skeleton-width: 24rem;
948
+
949
+ /* motion */
950
+ --motion-lift-y: -2px;
951
+ --motion-lift-shadow: var(--shadow-md);
952
+ --motion-underline-thickness: 1px;
953
+ --motion-underline-offset: 0.2em;
954
+ --motion-nudge: 3px;
955
+ --motion-row-nudge: 4px;
956
+ --motion-duration: var(--duration-base);
957
+ --motion-duration-fast: var(--duration-fast);
958
+ --motion-duration-slow: var(--duration-slow);
959
+ --motion-delay-none: 0ms;
960
+ --motion-delay-short: var(--duration-fast);
961
+ --motion-delay-long: var(--duration-slow);
962
+ --motion-ease: var(--ease-standard);
963
+ }
964
+
965
+ /* default follows the OS; an explicit [data-theme] pin wins below */
966
+ @media (prefers-color-scheme: dark) {
967
+ :root:not([data-theme="light"]) {
968
+ --color-canvas: var(--color-canvas-dark);
969
+ --color-surface: var(--color-surface-dark);
970
+ --color-surface-raised: var(--color-surface-raised-dark);
971
+ --color-surface-sunken: var(--color-surface-sunken-dark);
972
+ --color-overlay: var(--color-overlay-dark);
973
+ --color-text-primary: var(--color-text-primary-dark);
974
+ --color-text-secondary: var(--color-text-secondary-dark);
975
+ --color-text-tertiary: var(--color-text-tertiary-dark);
976
+ --color-text-inverse: var(--color-text-inverse-dark);
977
+ --color-link: var(--color-link-dark);
978
+ --color-link-hover: var(--color-link-hover-dark);
979
+ --color-accent: var(--color-accent-dark);
980
+ --color-accent-hover: var(--color-accent-hover-dark);
981
+ --color-accent-active: var(--color-accent-active-dark);
982
+ --color-accent-on: var(--color-accent-on-dark);
983
+ --color-accent-strong: var(--color-accent-strong-dark);
984
+ --color-accent-strong-hover: var(--color-accent-strong-hover-dark);
985
+ --color-accent-strong-active: var(--color-accent-strong-active-dark);
986
+ --color-accent-strong-fg: var(--color-accent-strong-fg-dark);
987
+ --color-accent-subtle: var(--color-accent-subtle-dark);
988
+ --color-accent-subtle-hover: var(--color-accent-subtle-hover-dark);
989
+ --color-accent-subtle-fg: var(--color-accent-subtle-fg-dark);
990
+ --color-success: var(--color-success-dark);
991
+ --color-success-bg: var(--color-success-bg-dark);
992
+ --color-success-bg-hover: var(--color-success-bg-hover-dark);
993
+ --color-success-fg: var(--color-success-fg-dark);
994
+ --color-warning: var(--color-warning-dark);
995
+ --color-warning-bg: var(--color-warning-bg-dark);
996
+ --color-warning-bg-hover: var(--color-warning-bg-hover-dark);
997
+ --color-warning-fg: var(--color-warning-fg-dark);
998
+ --color-danger: var(--color-danger-dark);
999
+ --color-danger-bg: var(--color-danger-bg-dark);
1000
+ --color-danger-bg-hover: var(--color-danger-bg-hover-dark);
1001
+ --color-danger-fg: var(--color-danger-fg-dark);
1002
+ --color-danger-strong: var(--color-danger-strong-dark);
1003
+ --color-danger-strong-hover: var(--color-danger-strong-hover-dark);
1004
+ --color-danger-strong-fg: var(--color-danger-strong-fg-dark);
1005
+ --color-border-subtle: var(--color-border-subtle-dark);
1006
+ --color-border-default: var(--color-border-default-dark);
1007
+ --color-border-control: var(--color-border-control-dark);
1008
+ --color-border-control-hover: var(--color-border-control-hover-dark);
1009
+ --color-border-strong: var(--color-border-strong-dark);
1010
+ --color-focus: var(--color-focus-dark);
1011
+ --color-focus-offset: var(--color-focus-offset-dark);
1012
+ --color-selection: var(--color-selection-dark);
1013
+ --shadow-sm: 0 1px 2px rgb(0 0 0 / 0.40), 0 1px 3px rgb(0 0 0 / 0.30);
1014
+ --shadow-md: 0 4px 12px rgb(0 0 0 / 0.45), 0 1px 3px rgb(0 0 0 / 0.35);
1015
+ --shadow-lg: 0 16px 40px rgb(0 0 0 / 0.55), 0 3px 8px rgb(0 0 0 / 0.40);
1016
+ color-scheme: dark;
1017
+ }
1018
+ }
1019
+
1020
+ /* reduced motion zeroes the duration scale; components only read it */
1021
+ @media (prefers-reduced-motion: reduce) {
1022
+ :root {
1023
+ --duration-instant: 0ms;
1024
+ --duration-fast: 0ms;
1025
+ --duration-base: 0ms;
1026
+ --duration-slow: 0ms;
1027
+ --duration-slower: 0ms;
1028
+ }
1029
+ }
1030
+
1031
+ [data-theme="dark"] {
1032
+ --color-canvas: var(--color-canvas-dark);
1033
+ --color-surface: var(--color-surface-dark);
1034
+ --color-surface-raised: var(--color-surface-raised-dark);
1035
+ --color-surface-sunken: var(--color-surface-sunken-dark);
1036
+ --color-overlay: var(--color-overlay-dark);
1037
+ --color-text-primary: var(--color-text-primary-dark);
1038
+ --color-text-secondary: var(--color-text-secondary-dark);
1039
+ --color-text-tertiary: var(--color-text-tertiary-dark);
1040
+ --color-text-inverse: var(--color-text-inverse-dark);
1041
+ --color-link: var(--color-link-dark);
1042
+ --color-link-hover: var(--color-link-hover-dark);
1043
+ --color-accent: var(--color-accent-dark);
1044
+ --color-accent-hover: var(--color-accent-hover-dark);
1045
+ --color-accent-active: var(--color-accent-active-dark);
1046
+ --color-accent-on: var(--color-accent-on-dark);
1047
+ --color-accent-strong: var(--color-accent-strong-dark);
1048
+ --color-accent-strong-hover: var(--color-accent-strong-hover-dark);
1049
+ --color-accent-strong-active: var(--color-accent-strong-active-dark);
1050
+ --color-accent-strong-fg: var(--color-accent-strong-fg-dark);
1051
+ --color-accent-subtle: var(--color-accent-subtle-dark);
1052
+ --color-accent-subtle-hover: var(--color-accent-subtle-hover-dark);
1053
+ --color-accent-subtle-fg: var(--color-accent-subtle-fg-dark);
1054
+ --color-success: var(--color-success-dark);
1055
+ --color-success-bg: var(--color-success-bg-dark);
1056
+ --color-success-bg-hover: var(--color-success-bg-hover-dark);
1057
+ --color-success-fg: var(--color-success-fg-dark);
1058
+ --color-warning: var(--color-warning-dark);
1059
+ --color-warning-bg: var(--color-warning-bg-dark);
1060
+ --color-warning-bg-hover: var(--color-warning-bg-hover-dark);
1061
+ --color-warning-fg: var(--color-warning-fg-dark);
1062
+ --color-danger: var(--color-danger-dark);
1063
+ --color-danger-bg: var(--color-danger-bg-dark);
1064
+ --color-danger-bg-hover: var(--color-danger-bg-hover-dark);
1065
+ --color-danger-fg: var(--color-danger-fg-dark);
1066
+ --color-danger-strong: var(--color-danger-strong-dark);
1067
+ --color-danger-strong-hover: var(--color-danger-strong-hover-dark);
1068
+ --color-danger-strong-fg: var(--color-danger-strong-fg-dark);
1069
+ --color-border-subtle: var(--color-border-subtle-dark);
1070
+ --color-border-default: var(--color-border-default-dark);
1071
+ --color-border-control: var(--color-border-control-dark);
1072
+ --color-border-control-hover: var(--color-border-control-hover-dark);
1073
+ --color-border-strong: var(--color-border-strong-dark);
1074
+ --color-focus: var(--color-focus-dark);
1075
+ --color-focus-offset: var(--color-focus-offset-dark);
1076
+ --color-selection: var(--color-selection-dark);
1077
+ --shadow-sm: 0 1px 2px rgb(0 0 0 / 0.40), 0 1px 3px rgb(0 0 0 / 0.30);
1078
+ --shadow-md: 0 4px 12px rgb(0 0 0 / 0.45), 0 1px 3px rgb(0 0 0 / 0.35);
1079
+ --shadow-lg: 0 16px 40px rgb(0 0 0 / 0.55), 0 3px 8px rgb(0 0 0 / 0.40);
1080
+ color-scheme: dark;
1081
+ }
1082
+
1083
+ [data-theme="light"] { color-scheme: light; }
1084
+
1085
+ /* Enhancement: light-dark() keeps the split roles in sync with the
1086
+ resolved color-scheme. Order is load bearing: last in the layer,
1087
+ only :root:not([data-theme]), only when the OS is light. */
1088
+ @supports (color: light-dark(#000, #fff)) {
1089
+ @media (prefers-color-scheme: light) {
1090
+ :root:not([data-theme]) {
1091
+ --color-canvas: light-dark(var(--color-canvas-light), var(--color-canvas-dark));
1092
+ --color-surface: light-dark(var(--color-surface-light), var(--color-surface-dark));
1093
+ --color-surface-raised: light-dark(var(--color-surface-raised-light), var(--color-surface-raised-dark));
1094
+ --color-surface-sunken: light-dark(var(--color-surface-sunken-light), var(--color-surface-sunken-dark));
1095
+ --color-overlay: light-dark(var(--color-overlay-light), var(--color-overlay-dark));
1096
+ --color-text-primary: light-dark(var(--color-text-primary-light), var(--color-text-primary-dark));
1097
+ --color-text-secondary: light-dark(var(--color-text-secondary-light), var(--color-text-secondary-dark));
1098
+ --color-text-tertiary: light-dark(var(--color-text-tertiary-light), var(--color-text-tertiary-dark));
1099
+ --color-text-inverse: light-dark(var(--color-text-inverse-light), var(--color-text-inverse-dark));
1100
+ --color-link: light-dark(var(--color-link-light), var(--color-link-dark));
1101
+ --color-link-hover: light-dark(var(--color-link-hover-light), var(--color-link-hover-dark));
1102
+ --color-accent: light-dark(var(--color-accent-light), var(--color-accent-dark));
1103
+ --color-accent-hover: light-dark(var(--color-accent-hover-light), var(--color-accent-hover-dark));
1104
+ --color-accent-active: light-dark(var(--color-accent-active-light), var(--color-accent-active-dark));
1105
+ --color-accent-on: light-dark(var(--color-accent-on-light), var(--color-accent-on-dark));
1106
+ --color-accent-strong: light-dark(var(--color-accent-strong-light), var(--color-accent-strong-dark));
1107
+ --color-accent-strong-hover: light-dark(var(--color-accent-strong-hover-light), var(--color-accent-strong-hover-dark));
1108
+ --color-accent-strong-active: light-dark(var(--color-accent-strong-active-light), var(--color-accent-strong-active-dark));
1109
+ --color-accent-strong-fg: light-dark(var(--color-accent-strong-fg-light), var(--color-accent-strong-fg-dark));
1110
+ --color-accent-subtle: light-dark(var(--color-accent-subtle-light), var(--color-accent-subtle-dark));
1111
+ --color-accent-subtle-hover: light-dark(var(--color-accent-subtle-hover-light), var(--color-accent-subtle-hover-dark));
1112
+ --color-accent-subtle-fg: light-dark(var(--color-accent-subtle-fg-light), var(--color-accent-subtle-fg-dark));
1113
+ --color-success: light-dark(var(--color-success-light), var(--color-success-dark));
1114
+ --color-success-bg: light-dark(var(--color-success-bg-light), var(--color-success-bg-dark));
1115
+ --color-success-bg-hover: light-dark(var(--color-success-bg-hover-light), var(--color-success-bg-hover-dark));
1116
+ --color-success-fg: light-dark(var(--color-success-fg-light), var(--color-success-fg-dark));
1117
+ --color-warning: light-dark(var(--color-warning-light), var(--color-warning-dark));
1118
+ --color-warning-bg: light-dark(var(--color-warning-bg-light), var(--color-warning-bg-dark));
1119
+ --color-warning-bg-hover: light-dark(var(--color-warning-bg-hover-light), var(--color-warning-bg-hover-dark));
1120
+ --color-warning-fg: light-dark(var(--color-warning-fg-light), var(--color-warning-fg-dark));
1121
+ --color-danger: light-dark(var(--color-danger-light), var(--color-danger-dark));
1122
+ --color-danger-bg: light-dark(var(--color-danger-bg-light), var(--color-danger-bg-dark));
1123
+ --color-danger-bg-hover: light-dark(var(--color-danger-bg-hover-light), var(--color-danger-bg-hover-dark));
1124
+ --color-danger-fg: light-dark(var(--color-danger-fg-light), var(--color-danger-fg-dark));
1125
+ --color-danger-strong: light-dark(var(--color-danger-strong-light), var(--color-danger-strong-dark));
1126
+ --color-danger-strong-hover: light-dark(var(--color-danger-strong-hover-light), var(--color-danger-strong-hover-dark));
1127
+ --color-danger-strong-fg: light-dark(var(--color-danger-strong-fg-light), var(--color-danger-strong-fg-dark));
1128
+ --color-border-subtle: light-dark(var(--color-border-subtle-light), var(--color-border-subtle-dark));
1129
+ --color-border-default: light-dark(var(--color-border-default-light), var(--color-border-default-dark));
1130
+ --color-border-control: light-dark(var(--color-border-control-light), var(--color-border-control-dark));
1131
+ --color-border-control-hover: light-dark(var(--color-border-control-hover-light), var(--color-border-control-hover-dark));
1132
+ --color-border-strong: light-dark(var(--color-border-strong-light), var(--color-border-strong-dark));
1133
+ --color-focus: light-dark(var(--color-focus-light), var(--color-focus-dark));
1134
+ --color-focus-offset: light-dark(var(--color-focus-offset-light), var(--color-focus-offset-dark));
1135
+ --color-selection: light-dark(var(--color-selection-light), var(--color-selection-dark));
1136
+ color-scheme: light dark;
1137
+ }
1138
+ }
1139
+ }
1140
+ }