@deriv-ds/design-intelligence-layer 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/src/styles.css CHANGED
@@ -2,25 +2,34 @@
2
2
  * Trading Game Design System — Design Tokens
3
3
  *
4
4
  * Usage in consumer apps:
5
- * import "@trading-game/design-intelligence-layer/styles"
5
+ * import "@deriv-ds/design-intelligence-layer/styles"
6
6
  *
7
7
  * Requires Tailwind CSS v4 in your project.
8
- * Add `@import "@trading-game/design-intelligence-layer/styles"` in your CSS
8
+ * Add `@import "@deriv-ds/design-intelligence-layer/styles"` in your CSS
9
9
  * or import it in your JS entry point.
10
10
  */
11
11
 
12
- /* Fonts — Plus Jakarta Sans (all) */
13
- @import url("https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@300;400;500;600;700;800&display=swap");
12
+ /* Fonts — Inter (all) */
13
+ @import url("https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap");
14
14
 
15
15
 
16
16
  /* ── Tailwind theme bridge — maps CSS vars to utility classes ── */
17
17
  @theme inline {
18
- --color-prominent: var(--prominent);
19
- --color-on-prominent: var(--on-prominent);
18
+ /* ── Foundation surface tokens ── */
19
+ --color-primary-surface: var(--background-primary-surface);
20
+ --color-primary-canvas: var(--background-primary-canvas);
21
+ --color-secondary-surface: var(--background-secondary-surface);
22
+ --color-secondary-canvas: var(--background-secondary-canvas);
23
+ /* ── Foundation border tokens ── */
24
+ --color-default: var(--border-default-default);
25
+ --color-selected: var(--border-selected-default);
26
+ /* ── Text tokens (repurposed from bg aliases) ── */
27
+ --color-prominent: var(--text-prominent-default);
28
+ --color-subtle: var(--text-subtle-default);
20
29
  --color-on-prominent-static-inverse: var(--on-prominent-static-inverse);
21
- --font-sans: var(--font-plus-jakarta-sans);
22
- --font-body: var(--font-plus-jakarta-sans);
23
- --font-display: var(--font-plus-jakarta-sans);
30
+ --font-sans: var(--font-inter);
31
+ --font-body: var(--font-inter);
32
+ --font-display: var(--font-inter);
24
33
  --color-sidebar-ring: var(--sidebar-ring);
25
34
  --color-sidebar-border: var(--sidebar-border);
26
35
  --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
@@ -33,20 +42,12 @@
33
42
  --color-input: var(--input);
34
43
  --color-border: var(--border);
35
44
  /* @deprecated — use border-border-subtle or border-border-prominent */
36
- --color-border-subtle: var(--border-subtle);
37
- --color-border-prominent: var(--border-prominent);
38
45
  --color-secondary-hover: var(--secondary-hover);
39
- --color-on-subtle: var(--on-subtle);
40
- --color-subtle: var(--subtle);
41
46
  --color-primary: var(--primary);
42
47
  --color-primary-hover: var(--primary-hover);
43
- --color-popover-foreground: var(--popover-foreground);
44
- --color-popover: var(--popover);
45
- --color-card-foreground: var(--card-foreground);
46
- --color-card: var(--card);
47
- --color-semantic-win: var(--semantic-win);
48
- --color-semantic-loss: var(--semantic-loss);
49
- --color-semantic-warning: var(--semantic-warning);
48
+
49
+ --color-warning: var(--text-warning-default);
50
+ --color-info: var(--text-information-default);
50
51
  --color-alert-info-text: var(--alert-info-text);
51
52
  --color-alert-info-border: var(--alert-info-border);
52
53
  --color-alert-error-text: var(--alert-error-text);
@@ -54,7 +55,6 @@
54
55
 
55
56
  --color-overlay: var(--overlay);
56
57
  --color-slider-range: var(--slider-range);
57
- --color-semantic-info: var(--semantic-info);
58
58
  --color-tabs: var(--tabs);
59
59
  --color-tabs-active: var(--tabs-active);
60
60
  --spacing-layout-gutter: var(--semantic-layout-gutter);
@@ -83,6 +83,255 @@
83
83
  --ease-enter: var(--primitive-ease-enter);
84
84
  --ease-exit: var(--primitive-ease-exit);
85
85
  --ease-linear: var(--primitive-ease-linear);
86
+ /* ── shadcn/ui compatibility ── */
87
+ --color-background: var(--background);
88
+ --color-foreground: var(--foreground);
89
+ --color-primary-foreground: var(--primary-foreground);
90
+ --color-secondary: var(--secondary);
91
+ --color-secondary-foreground: var(--secondary-foreground);
92
+ --color-muted: var(--muted);
93
+ --color-muted-foreground: var(--muted-foreground);
94
+ --color-accent: var(--accent);
95
+ --color-accent-foreground: var(--accent-foreground);
96
+ --color-destructive: var(--destructive);
97
+ --color-destructive-foreground: var(--destructive-foreground);
98
+
99
+ /* ── Search Field ── */
100
+ --color-search-field-text-prominent: var(--search-field-text-prominent);
101
+ --color-search-field-text-subtle: var(--search-field-text-subtle);
102
+ --color-search-field-text-disabled: var(--search-field-text-disabled);
103
+ --color-search-field-icon-prominent: var(--search-field-icon-prominent);
104
+ --color-search-field-icon-subtle: var(--search-field-icon-subtle);
105
+ --color-search-field-outline-bg-default: var(--search-field-outline-bg-default);
106
+ --color-search-field-outline-bg-hover: var(--search-field-outline-bg-hover);
107
+ --color-search-field-outline-bg-focus: var(--search-field-outline-bg-focus);
108
+ --color-search-field-outline-bg-disabled: var(--search-field-outline-bg-disabled);
109
+ --color-search-field-outline-border-default: var(--search-field-outline-border-default);
110
+ --color-search-field-outline-border-focus: var(--search-field-outline-border-focus);
111
+ --color-search-field-outline-border-disabled: var(--search-field-outline-border-disabled);
112
+ --color-search-field-fill-bg-default: var(--search-field-fill-bg-default);
113
+ --color-search-field-fill-bg-hover: var(--search-field-fill-bg-hover);
114
+ --color-search-field-fill-bg-focus: var(--search-field-fill-bg-focus);
115
+ --color-search-field-fill-bg-disabled: var(--search-field-fill-bg-disabled);
116
+ --color-search-field-fill-border-focus: var(--search-field-fill-border-focus);
117
+ /* ── Bottom Sheet colour bridges ── */
118
+ --color-bottom-sheet-bg-handle-bar: var(--bottom-sheet-bg-handle-bar);
119
+ --color-bottom-sheet-bg-handle-default: var(--bottom-sheet-bg-handle-default);
120
+ --color-bottom-sheet-bg-handle-pressed: var(--bottom-sheet-bg-handle-pressed);
121
+ /* ── Button component colour bridges ── */
122
+ --color-button-primary-bg: var(--button-primary-normal-bg-default);
123
+ --color-button-primary-bg-hover: var(--button-primary-normal-bg-hover);
124
+ --color-button-primary-bg-pressed: var(--button-primary-normal-bg-pressed);
125
+ --color-button-primary-text: var(--button-primary-text);
126
+ --color-button-secondary-border: var(--button-secondary-normal-border);
127
+ --color-button-secondary-text: var(--button-secondary-normal-text);
128
+ --color-button-secondary-bg-hover: var(--button-secondary-normal-bg-hover);
129
+ --color-button-secondary-bg-pressed: var(--button-secondary-normal-bg-pressed);
130
+ --color-button-tertiary-bg: var(--button-tertiary-normal-bg-default);
131
+ --color-button-tertiary-text: var(--button-tertiary-normal-text);
132
+ --color-button-tertiary-bg-hover: var(--button-tertiary-normal-bg-hover);
133
+ --color-button-tertiary-bg-pressed: var(--button-tertiary-normal-bg-pressed);
134
+ --color-button-ghost-text: var(--button-ghost-normal-text);
135
+ --color-button-ghost-bg-hover: var(--button-ghost-normal-bg-hover);
136
+ --color-button-ghost-bg-pressed: var(--button-ghost-normal-bg-pressed);
137
+ /* ── Badge component colour bridges ── */
138
+ --color-badge-bg-number: var(--badge-bg-number);
139
+ --color-badge-text: var(--badge-text-default);
140
+ --color-badge-status-green: var(--badge-bg-status-green);
141
+ --color-badge-status-red: var(--badge-bg-status-red);
142
+ --color-badge-status-yellow: var(--badge-bg-status-yellow);
143
+ --color-badge-status-blue: var(--badge-bg-status-blue);
144
+ /* ── Tab component colour bridges ── */
145
+ --color-tab-text: var(--tab-text-default);
146
+ --color-tab-text-selected: var(--tab-text-selected);
147
+ --color-tab-text-disabled: var(--tab-text-disabled);
148
+ --color-tab-bg-hover: var(--tab-bg-hover);
149
+ --color-tab-bg-pressed: var(--tab-bg-pressed);
150
+ --color-tab-border-default: var(--tab-border-default);
151
+ --color-tab-border-focus: var(--tab-border-focus);
152
+ --color-tab-border-selected: var(--tab-border-selected);
153
+ /* ── Segmented Control colour bridges ── */
154
+ --color-segmented-control-text-prominent: var(--segmented-control-text-prominent);
155
+ --color-segmented-control-text-disabled: var(--segmented-control-text-disabled);
156
+ --color-segmented-control-icon-prominent: var(--segmented-control-icon-prominent);
157
+ --color-segmented-control-icon-disabled: var(--segmented-control-icon-disabled);
158
+ --color-segmented-control-container-bg: var(--segmented-control-container-bg);
159
+ --color-segmented-control-segment-bg-selected: var(--segmented-control-segment-bg-selected);
160
+ --color-segmented-control-segment-bg-hover: var(--segmented-control-segment-bg-hover);
161
+ --color-segmented-control-segment-bg-pressed: var(--segmented-control-segment-bg-pressed);
162
+ /* ── Section Message colour bridges ── */
163
+ --color-section-message-fill-bg-default: var(--section-message-fill-bg-default);
164
+ --color-section-message-fill-bg-danger: var(--section-message-fill-bg-danger);
165
+ --color-section-message-fill-bg-information: var(--section-message-fill-bg-information);
166
+ --color-section-message-fill-bg-success: var(--section-message-fill-bg-success);
167
+ --color-section-message-fill-bg-warning: var(--section-message-fill-bg-warning);
168
+ --color-section-message-icon-danger: var(--section-message-icon-danger);
169
+ --color-section-message-icon-warning: var(--section-message-icon-warning);
170
+ --color-section-message-icon-success: var(--section-message-icon-success);
171
+ --color-section-message-icon-information: var(--section-message-icon-information);
172
+ --color-section-message-title: var(--section-message-title);
173
+ --color-section-message-description: var(--section-message-description);
174
+ /* ── Tag colour bridges ── */
175
+ --color-tag-text-neutral: var(--tag-text-neutral);
176
+ --color-tag-text-red: var(--tag-text-red);
177
+ --color-tag-text-yellow: var(--tag-text-yellow);
178
+ --color-tag-text-green: var(--tag-text-green);
179
+ --color-tag-text-blue: var(--tag-text-blue);
180
+ --color-tag-icon-default: var(--tag-icon-default);
181
+ --color-tag-icon-red: var(--tag-icon-red);
182
+ --color-tag-icon-yellow: var(--tag-icon-yellow);
183
+ --color-tag-icon-green: var(--tag-icon-green);
184
+ --color-tag-icon-blue: var(--tag-icon-blue);
185
+ --color-tag-outline-border-neutral: var(--tag-outline-border-neutral);
186
+ --color-tag-outline-border-red: var(--tag-outline-border-red);
187
+ --color-tag-outline-border-yellow: var(--tag-outline-border-yellow);
188
+ --color-tag-outline-border-green: var(--tag-outline-border-green);
189
+ --color-tag-outline-border-blue: var(--tag-outline-border-blue);
190
+ --color-tag-fill-bg-neutral: var(--tag-fill-bg-neutral);
191
+ --color-tag-fill-bg-red: var(--tag-fill-bg-red);
192
+ --color-tag-fill-bg-yellow: var(--tag-fill-bg-yellow);
193
+ --color-tag-fill-bg-green: var(--tag-fill-bg-green);
194
+ --color-tag-fill-bg-blue: var(--tag-fill-bg-blue);
195
+ /* ── Chip colour bridges ── */
196
+ --color-chip-text-prominent: var(--chip-text-prominent);
197
+ --color-chip-text-disabled: var(--chip-text-disabled);
198
+ --color-chip-border-default: var(--chip-border-default);
199
+ --color-chip-border-selected: var(--chip-border-selected);
200
+ --color-chip-border-disabled: var(--chip-border-disabled);
201
+ --color-chip-bg-hover: var(--chip-bg-hover);
202
+ --color-chip-bg-pressed: var(--chip-bg-pressed);
203
+ --color-chip-bg-selected: var(--chip-bg-selected);
204
+ --color-chip-icon-prominent: var(--chip-icon-prominent);
205
+ --color-chip-icon-disabled: var(--chip-icon-disabled);
206
+ /* ── Code Input colour bridges ── */
207
+ --color-code-input-fill-bg-default: var(--code-input-fill-bg-default);
208
+ --color-code-input-fill-bg-hover: var(--code-input-fill-bg-hover);
209
+ --color-code-input-fill-bg-focus: var(--code-input-fill-bg-focus);
210
+ --color-code-input-fill-bg-disabled: var(--code-input-fill-bg-disabled);
211
+ --color-code-input-fill-bg-success: var(--code-input-fill-bg-success);
212
+ --color-code-input-fill-bg-error: var(--code-input-fill-bg-error);
213
+ --color-code-input-fill-border-focus: var(--code-input-fill-border-focus);
214
+ --color-code-input-fill-border-error: var(--code-input-fill-border-error);
215
+ --color-code-input-fill-border-success: var(--code-input-fill-border-success);
216
+ --color-code-input-text-prominent: var(--code-input-text-prominent);
217
+ --color-code-input-text-disabled: var(--code-input-text-disabled);
218
+ --color-code-input-text-success: var(--code-input-text-success);
219
+ --color-code-input-text-error: var(--code-input-text-error);
220
+ /* ── Menu colour bridges ── */
221
+ --color-menu-background: var(--menu-background);
222
+ --color-menu-border: var(--menu-border);
223
+ /* ── Dropdown Field colour bridges ── */
224
+ --color-dropdown-field-text-prominent: var(--dropdown-field-text-prominent);
225
+ --color-dropdown-field-text-subtle: var(--dropdown-field-text-subtle);
226
+ --color-dropdown-field-text-disabled: var(--dropdown-field-text-disabled);
227
+ --color-dropdown-field-text-error: var(--dropdown-field-text-error);
228
+ --color-dropdown-field-outline-bg-default: var(--dropdown-field-outline-bg-default);
229
+ --color-dropdown-field-outline-bg-hover: var(--dropdown-field-outline-bg-hover);
230
+ --color-dropdown-field-outline-bg-focus: var(--dropdown-field-outline-bg-focus);
231
+ --color-dropdown-field-outline-bg-disabled: var(--dropdown-field-outline-bg-disabled);
232
+ --color-dropdown-field-outline-border-default: var(--dropdown-field-outline-border-default);
233
+ --color-dropdown-field-outline-border-focus: var(--dropdown-field-outline-border-focus);
234
+ --color-dropdown-field-outline-border-disabled: var(--dropdown-field-outline-border-disabled);
235
+ --color-dropdown-field-outline-border-error: var(--dropdown-field-outline-border-error);
236
+ --color-dropdown-field-fill-bg-neutral-default: var(--dropdown-field-fill-bg-neutral-default);
237
+ --color-dropdown-field-fill-bg-neutral-hover: var(--dropdown-field-fill-bg-neutral-hover);
238
+ --color-dropdown-field-fill-bg-neutral-focus: var(--dropdown-field-fill-bg-neutral-focus);
239
+ --color-dropdown-field-fill-bg-neutral-disabled: var(--dropdown-field-fill-bg-neutral-disabled);
240
+ --color-dropdown-field-fill-bg-error-default: var(--dropdown-field-fill-bg-error-default);
241
+ --color-dropdown-field-fill-bg-error-hover: var(--dropdown-field-fill-bg-error-hover);
242
+ --color-dropdown-field-fill-bg-error-focus: var(--dropdown-field-fill-bg-error-focus);
243
+ /* ── List Item colour bridges ── */
244
+ --color-list-item-text-prominent: var(--list-item-text-prominent);
245
+ --color-list-item-text-disabled: var(--list-item-text-disabled);
246
+ --color-list-item-border-selected: var(--list-item-border-selected);
247
+ --color-list-item-primary-bg-default: var(--list-item-primary-bg-default);
248
+ --color-list-item-primary-bg-hover: var(--list-item-primary-bg-hover);
249
+ --color-list-item-primary-bg-pressed: var(--list-item-primary-bg-pressed);
250
+ --color-list-item-primary-bg-selected: var(--list-item-primary-bg-selected);
251
+ --color-list-item-primary-bg-disabled: var(--list-item-primary-bg-disabled);
252
+ --color-list-item-secondary-bg-default: var(--list-item-secondary-bg-default);
253
+ --color-list-item-secondary-bg-hover: var(--list-item-secondary-bg-hover);
254
+ --color-list-item-secondary-bg-pressed: var(--list-item-secondary-bg-pressed);
255
+ --color-list-item-secondary-bg-selected: var(--list-item-secondary-bg-selected);
256
+ --color-list-item-secondary-bg-disabled: var(--list-item-secondary-bg-disabled);
257
+ /* ── Field colour bridges ── */
258
+ --color-field-text-prominent: var(--field-text-prominent);
259
+ --color-field-text-subtle: var(--field-text-subtle);
260
+ --color-field-text-disabled: var(--field-text-disabled);
261
+ --color-field-icon-disabled: var(--field-icon-disabled);
262
+ --color-field-text-success: var(--field-text-success);
263
+ --color-field-text-error: var(--field-text-error);
264
+ --color-field-outline-bg-default: var(--field-outline-bg-default);
265
+ --color-field-outline-bg-hover: var(--field-outline-bg-hover);
266
+ --color-field-outline-bg-focus: var(--field-outline-bg-focus);
267
+ --color-field-outline-bg-disabled: var(--field-outline-bg-disabled);
268
+ --color-field-outline-border-default: var(--field-outline-border-default);
269
+ --color-field-outline-border-focus: var(--field-outline-border-focus);
270
+ --color-field-outline-border-disabled: var(--field-outline-border-disabled);
271
+ --color-field-fill-bg-default: var(--field-fill-bg-default);
272
+ --color-field-fill-bg-hover: var(--field-fill-bg-hover);
273
+ --color-field-fill-bg-focus: var(--field-fill-bg-focus);
274
+ --color-field-fill-bg-disabled: var(--field-fill-bg-disabled);
275
+ --color-field-fill-bg-success-default: var(--field-fill-bg-success-default);
276
+ --color-field-fill-bg-success-hover: var(--field-fill-bg-success-hover);
277
+ --color-field-fill-bg-success-focus: var(--field-fill-bg-success-focus);
278
+ --color-field-fill-bg-error-default: var(--field-fill-bg-error-default);
279
+ --color-field-fill-bg-error-hover: var(--field-fill-bg-error-hover);
280
+ --color-field-fill-bg-error-focus: var(--field-fill-bg-error-focus);
281
+ --color-field-outline-border-success: var(--field-outline-border-success);
282
+ --color-field-outline-border-error: var(--field-outline-border-error);
283
+ --color-field-fill-border-focus: var(--field-fill-border-focus);
284
+ --color-field-fill-border-success: var(--field-fill-border-success-focus);
285
+ --color-field-fill-border-error: var(--field-fill-border-error-focus);
286
+ /* ── Snackbar colour bridges ── */
287
+ --color-snackbar-bg-default: var(--snackbar-bg-default);
288
+ --color-snackbar-bg-fail: var(--snackbar-bg-fail);
289
+ --color-snackbar-text: var(--snackbar-text);
290
+ --color-snackbar-text-fail: var(--snackbar-text-fail);
291
+ --color-snackbar-icon: var(--snackbar-icon);
292
+ --color-snackbar-icon-fail: var(--snackbar-icon-fail);
293
+ /* ── Link colour bridges ── */
294
+ --color-link-primary-default: var(--link-primary-default);
295
+ --color-link-primary-disabled: var(--link-primary-disabled);
296
+ --color-link-secondary-normal-default: var(--link-secondary-normal-default);
297
+ --color-link-secondary-normal-disabled: var(--link-secondary-normal-disabled);
298
+ --color-link-secondary-inverse-default: var(--link-secondary-inverse-default);
299
+ --color-link-secondary-inverse-disabled: var(--link-secondary-inverse-disabled);
300
+ --color-link-secondary-static-light-default: var(--link-secondary-static-light-default);
301
+ --color-link-secondary-static-light-disabled: var(--link-secondary-static-light-disabled);
302
+ --color-link-secondary-static-dark-default: var(--link-secondary-static-dark-default);
303
+ --color-link-secondary-static-dark-disabled: var(--link-secondary-static-dark-disabled);
304
+ /* ── Loading Spinner colour bridge ── */
305
+ --color-loading-spinner-bg-default: var(--loading-spinner-bg-default);
306
+ /* ── Notification colour bridges ── */
307
+ --color-notification-bg-banner: var(--notification-bg-banner);
308
+ --color-notification-bg-item-default: var(--notification-bg-item-default);
309
+ --color-notification-bg-item-hover: var(--notification-bg-item-hover);
310
+ --color-notification-bg-button-default: var(--notification-bg-button-default);
311
+ --color-notification-bg-button-press: var(--notification-bg-button-press);
312
+ --color-notification-bg-divider: var(--notification-bg-divider);
313
+ --color-notification-bg-icon-information: var(--notification-bg-icon-information);
314
+ --color-notification-bg-icon-success: var(--notification-bg-icon-success);
315
+ --color-notification-bg-icon-warning: var(--notification-bg-icon-warning);
316
+ --color-notification-bg-icon-danger: var(--notification-bg-icon-danger);
317
+ --color-notification-title-banner: var(--notification-title-banner);
318
+ --color-notification-description-banner: var(--notification-description-banner);
319
+ --color-notification-title-item: var(--notification-title-item);
320
+ --color-notification-description-item-unread: var(--notification-description-item-unread);
321
+ --color-notification-description-item-read: var(--notification-description-item-read);
322
+ --color-notification-date-time-item: var(--notification-date-time-item);
323
+ --color-notification-icon-inverse-information: var(--notification-icon-inverse-information);
324
+ --color-notification-icon-inverse-success: var(--notification-icon-inverse-success);
325
+ --color-notification-icon-inverse-warning: var(--notification-icon-inverse-warning);
326
+ --color-notification-icon-inverse-danger: var(--notification-icon-inverse-danger);
327
+ --color-notification-icon-normal-information: var(--notification-icon-normal-information);
328
+ --color-notification-icon-normal-success: var(--notification-icon-normal-success);
329
+ --color-notification-icon-normal-warning: var(--notification-icon-normal-warning);
330
+ --color-notification-icon-normal-danger: var(--notification-icon-normal-danger);
331
+ --color-notification-icon-read-unread: var(--notification-icon-read-unread);
332
+ --color-notification-text-read-unread: var(--notification-text-read-unread);
333
+ --color-notification-icon-delete: var(--notification-icon-delete);
334
+ --color-notification-text-delete: var(--notification-text-delete);
86
335
  }
87
336
 
88
337
  /* ══════════════════════════════════════════════════════════════
@@ -93,105 +342,288 @@
93
342
  --font-plus-jakarta-sans: "Plus Jakarta Sans", ui-sans-serif, system-ui, sans-serif;
94
343
  --radius: 0.625rem;
95
344
 
96
- /* ── Blue scale ── */
97
- --primitive-blue-50: oklch(0.93 0.05 267);
98
- /* #E6E6FF */
99
- --primitive-blue-100: oklch(0.77 0.14 267);
100
- /* #B8B8FF */
101
- --primitive-blue-200: oklch(0.66 0.21 267);
102
- /* #8A8AFF */
103
- --primitive-blue-300: oklch(0.57 0.26 267);
104
- /* #5C5CFF */
105
- --primitive-blue-400: oklch(0.51 0.285 267);
106
- /* #3939FF */
107
- --primitive-blue-500: oklch(0.476 0.297 267.4);
108
- /* #2323FF brand blue */
109
- --primitive-blue-600: oklch(0.40 0.27 265);
110
- /* #0B0BD2 */
111
- --primitive-blue-700: oklch(0.31 0.21 264);
112
- /* #0000A5 */
113
- --primitive-blue-800: oklch(0.23 0.16 264);
114
- /* #000078 */
115
- --primitive-blue-900: oklch(0.15 0.10 264);
116
- /* #00004C */
117
- --primitive-blue-1000: oklch(0.07 0.05 264);
118
- /* #00001F */
119
-
120
- /* ── Monochrome scale ── */
121
- --primitive-mono-50: oklch(1 0 0);
122
- /* #FFFFFF */
123
- --primitive-mono-100: oklch(0.95 0 0);
124
- /* #EEEEEE */
125
- --primitive-mono-200: oklch(0.90 0 0);
126
- /* #EEEEEE */
127
- --primitive-mono-300: oklch(0.84 0 0);
128
- /* #CCCCCC */
129
- --primitive-mono-400: oklch(0.79 0 0);
130
- /* #BBBBBB */
131
- --primitive-mono-500: oklch(0.74 0 0);
132
- /* #AAAAAA */
133
- --primitive-mono-600: oklch(0.63 0 0);
134
- /* #888888 */
135
- --primitive-mono-700: oklch(0.51 0 0);
136
- /* #666666 */
137
- --primitive-mono-800: oklch(0.39 0 0);
138
- /* #444444 */
139
- --primitive-mono-900: oklch(0.25 0 0);
140
- /* #222222 */
141
- --primitive-mono-1000: oklch(0 0 0);
142
- /* #000000 */
345
+ /* ── Slate ── */
346
+ --primitive-slate-50: oklch(1.000 0.000 263.3); /* #ffffff */
347
+ --primitive-slate-75: oklch(0.976 0.002 248.6); /* #f6f7f8 */
348
+ --primitive-slate-100: oklch(0.943 0.004 271.2); /* #ebecef */
349
+ --primitive-slate-200: oklch(0.858 0.009 271.2); /* #ced0d6 */
350
+ --primitive-slate-300: oklch(0.770 0.012 269.5); /* #b1b4bc */
351
+ --primitive-slate-400: oklch(0.680 0.015 268.4); /* #9498a2 */
352
+ --primitive-slate-500: oklch(0.589 0.018 266.2); /* #787d88 */
353
+ --primitive-slate-600: oklch(0.493 0.020 267.6); /* #5c616d */
354
+ --primitive-slate-700: oklch(0.394 0.021 267.5); /* #414652 */
355
+ --primitive-slate-800: oklch(0.361 0.024 268.6); /* #383d4a */
356
+ --primitive-slate-900: oklch(0.329 0.022 267.4); /* #303541 */
357
+ --primitive-slate-1000: oklch(0.294 0.023 270.5); /* #282c38 */
358
+ --primitive-slate-1100: oklch(0.261 0.022 269.3); /* #20242f */
359
+ --primitive-slate-1200: oklch(0.227 0.019 266.2); /* #181c25 */
360
+ --primitive-slate-1300: oklch(0.191 0.015 266.8); /* #11141b */
361
+ --primitive-slate-1400: oklch(0.000 0.000 0.0); /* #000000 */
362
+
363
+ /* ── Blue ── */
364
+ --primitive-blue-100: oklch(0.962 0.021 236.9); /* #e6f5ff */
365
+ --primitive-blue-200: oklch(0.907 0.053 234.5); /* #bfe7ff */
366
+ --primitive-blue-300: oklch(0.853 0.084 236.3); /* #99d8ff */
367
+ --primitive-blue-400: oklch(0.802 0.113 238.0); /* #73c9ff */
368
+ --primitive-blue-500: oklch(0.755 0.138 241.9); /* #53b9ff */
369
+ --primitive-blue-600: oklch(0.715 0.158 246.4); /* #3daaff */
370
+ --primitive-blue-700: oklch(0.676 0.177 251.1); /* #2c9aff */
371
+ --primitive-blue-800: oklch(0.617 0.162 248.9); /* #1789e1 */
372
+ --primitive-blue-900: oklch(0.556 0.147 248.0); /* #0777c4 */
373
+ --primitive-blue-1000: oklch(0.495 0.129 246.5); /* #0066a6 */
374
+ --primitive-blue-1100: oklch(0.432 0.110 245.5); /* #005488 */
375
+ --primitive-blue-1200: oklch(0.365 0.090 244.1); /* #00426a */
376
+ --primitive-blue-1300: oklch(0.296 0.071 242.4); /* #00304d */
143
377
 
144
378
  /* ── Green ── */
145
- --primitive-green-400: oklch(0.492 0.162 144);
146
- /* #008832 */
379
+ --primitive-green-100: oklch(0.966 0.031 150.0); /* #e6fae9 */
380
+ --primitive-green-200: oklch(0.908 0.072 150.4); /* #bfefc8 */
381
+ --primitive-green-300: oklch(0.850 0.109 150.1); /* #99e2a8 */
382
+ --primitive-green-400: oklch(0.782 0.135 150.0); /* #73d089 */
383
+ --primitive-green-500: oklch(0.711 0.155 149.7); /* #4dbc6b */
384
+ --primitive-green-600: oklch(0.633 0.164 149.0); /* #26a44e */
385
+ --primitive-green-700: oklch(0.546 0.160 147.5); /* #008832 */
386
+ --primitive-green-800: oklch(0.528 0.159 146.5); /* #00822a */
387
+ --primitive-green-900: oklch(0.504 0.156 145.6); /* #007a22 */
388
+ --primitive-green-1000: oklch(0.471 0.148 145.1); /* #006f1b */
389
+ --primitive-green-1100: oklch(0.428 0.136 144.7); /* #006114 */
390
+ --primitive-green-1200: oklch(0.375 0.119 144.7); /* #00500f */
391
+ --primitive-green-1300: oklch(0.313 0.099 145.0); /* #003d0a */
147
392
 
148
- /* ── Sky ── */
149
- --primitive-sky-600: #3DAAFF;
150
- /* #3DAAFF */
393
+ /* ── Emerald ── */
394
+ --primitive-emerald-100: oklch(0.980 0.027 179.9); /* #e6fff9 */
395
+ --primitive-emerald-200: oklch(0.952 0.068 175.6); /* #bfffed */
396
+ --primitive-emerald-300: oklch(0.929 0.106 171.8); /* #99ffdf */
397
+ --primitive-emerald-400: oklch(0.895 0.133 170.0); /* #73f9cf */
398
+ --primitive-emerald-500: oklch(0.849 0.149 168.8); /* #4decbc */
399
+ --primitive-emerald-600: oklch(0.792 0.155 167.5); /* #26daa7 */
400
+ --primitive-emerald-700: oklch(0.725 0.150 166.0); /* #00c390 */
401
+ --primitive-emerald-800: oklch(0.701 0.149 164.3); /* #00bb86 */
402
+ --primitive-emerald-900: oklch(0.664 0.143 163.2); /* #00ae7a */
403
+ --primitive-emerald-1000: oklch(0.618 0.135 162.5); /* #009e6d */
404
+ --primitive-emerald-1100: oklch(0.554 0.121 162.4); /* #00885d */
405
+ --primitive-emerald-1200: oklch(0.465 0.097 165.5); /* #006a4c */
406
+ --primitive-emerald-1300: oklch(0.373 0.075 168.3); /* #004d39 */
407
+
408
+ /* ── Yellow ── */
409
+ --primitive-yellow-100: oklch(0.978 0.024 85.8); /* #fff7e6 */
410
+ --primitive-yellow-200: oklch(0.943 0.060 85.0); /* #ffeabf */
411
+ --primitive-yellow-300: oklch(0.911 0.093 84.1); /* #ffdd99 */
412
+ --primitive-yellow-400: oklch(0.876 0.122 81.5); /* #ffce73 */
413
+ --primitive-yellow-500: oklch(0.842 0.146 78.0); /* #ffbe4d */
414
+ --primitive-yellow-600: oklch(0.810 0.163 73.5); /* #ffae26 */
415
+ --primitive-yellow-700: oklch(0.777 0.171 65.3); /* #ff9c13 */
416
+ --primitive-yellow-800: oklch(0.714 0.156 68.3); /* #e18d00 */
417
+ --primitive-yellow-900: oklch(0.649 0.140 70.2); /* #c47d00 */
418
+ --primitive-yellow-1000: oklch(0.579 0.124 72.4); /* #a66c00 */
419
+ --primitive-yellow-1100: oklch(0.505 0.107 74.6); /* #885a00 */
420
+ --primitive-yellow-1200: oklch(0.429 0.089 77.8); /* #6a4800 */
421
+ --primitive-yellow-1300: oklch(0.348 0.072 80.6); /* #4d3500 */
151
422
 
152
423
  /* ── Red ── */
153
- --primitive-red-600: #F92E26;
154
- /* #F92E26 */
155
- --primitive-red-500: oklch(0.653 0.234 18.5);
156
- /* #FF3355 */
157
-
158
- /* ── Orange ── */
159
- --primitive-orange-600: oklch(0.52 0.168 38);
160
- /* #D45200 */
161
- --primitive-orange-500: oklch(0.62 0.185 38);
162
- /* #FF6600 */
163
- --primitive-orange-400: oklch(0.751 0.179 58.3);
164
- /* #FF8C00 */
165
-
166
- /* ── Violet ── */
167
- --primitive-violet-500: oklch(0.601 0.263 301.6);
168
- /* #A040FF */
169
-
170
- /* ── Mono alpha scale ── */
171
- --primitive-mono-alpha-4: oklch(0 0 0 / 4%);
172
- --primitive-mono-alpha-8: oklch(0 0 0 / 8%);
173
- --primitive-mono-alpha-16: oklch(0 0 0 / 16%);
174
- --primitive-mono-alpha-24: oklch(0 0 0 / 24%);
175
- --primitive-mono-alpha-32: oklch(0 0 0 / 32%);
176
- --primitive-mono-alpha-40: oklch(0 0 0 / 40%);
177
- --primitive-mono-alpha-50: oklch(0 0 0 / 50%);
178
- --primitive-mono-alpha-64: oklch(0 0 0 / 64%);
179
- --primitive-mono-alpha-80: oklch(0 0 0 / 80%);
180
-
181
- /* ── Blue alpha scale ── */
182
- --primitive-blue-alpha-4: oklch(0.476 0.297 267.4 / 4%);
183
- --primitive-blue-alpha-8: oklch(0.476 0.297 267.4 / 8%);
184
- --primitive-blue-alpha-16: oklch(0.476 0.297 267.4 / 16%);
185
- --primitive-blue-alpha-24: oklch(0.476 0.297 267.4 / 24%);
186
- --primitive-blue-alpha-32: oklch(0.476 0.297 267.4 / 32%);
187
- --primitive-blue-alpha-40: oklch(0.476 0.297 267.4 / 40%);
188
- --primitive-blue-alpha-50: oklch(0.476 0.297 267.4 / 50%);
189
- --primitive-blue-alpha-64: oklch(0.476 0.297 267.4 / 64%);
190
- --primitive-blue-alpha-80: oklch(0.476 0.297 267.4 / 80%);
191
-
192
- /* ── Overlay ── */
193
- --primitive-black-50: var(--primitive-mono-alpha-50);
194
- /* @deprecated — use --primitive-mono-alpha-50 */
424
+ --primitive-red-100: oklch(0.945 0.027 17.5); /* #ffe6e6 */
425
+ --primitive-red-200: oklch(0.863 0.074 18.6); /* #ffbfbf */
426
+ --primitive-red-300: oklch(0.788 0.123 20.2); /* #ff9999 */
427
+ --primitive-red-400: oklch(0.724 0.171 22.3); /* #ff7373 */
428
+ --primitive-red-500: oklch(0.673 0.215 25.0); /* #ff4d4d */
429
+ --primitive-red-600: oklch(0.634 0.236 28.6); /* #f92e26 */
430
+ --primitive-red-700: oklch(0.588 0.232 29.5); /* #e6190e */
431
+ --primitive-red-800: oklch(0.562 0.228 29.6); /* #db0800 */
432
+ --primitive-red-900: oklch(0.515 0.211 29.2); /* #c40000 */
433
+ --primitive-red-1000: oklch(0.455 0.187 29.2); /* #a60000 */
434
+ --primitive-red-1100: oklch(0.394 0.161 29.2); /* #880000 */
435
+ --primitive-red-1200: oklch(0.329 0.135 29.2); /* #6a0000 */
436
+ --primitive-red-1300: oklch(0.264 0.108 29.2); /* #4d0000 */
437
+
438
+ /* ── Coral ── */
439
+ --primitive-coral-100: oklch(0.945 0.027 17.5); /* #ffe6e6 */
440
+ --primitive-coral-200: oklch(0.864 0.074 15.5); /* #ffbfc2 */
441
+ --primitive-coral-300: oklch(0.794 0.120 15.0); /* #ff9ba3 */
442
+ --primitive-coral-400: oklch(0.743 0.157 16.8); /* #ff7e88 */
443
+ --primitive-coral-500: oklch(0.707 0.186 19.0); /* #ff6671 */
444
+ --primitive-coral-600: oklch(0.682 0.207 21.1); /* #ff535e */
445
+ --primitive-coral-700: oklch(0.665 0.222 22.7); /* #ff444f */
446
+ --primitive-coral-800: oklch(0.593 0.213 23.7); /* #e12e3a */
447
+ --primitive-coral-900: oklch(0.527 0.199 24.9); /* #c41c28 */
448
+ --primitive-coral-1000: oklch(0.462 0.180 26.0); /* #a60e19 */
449
+ --primitive-coral-1100: oklch(0.396 0.159 26.7); /* #88030d */
450
+ --primitive-coral-1200: oklch(0.330 0.135 27.7); /* #6a0004 */
451
+ --primitive-coral-1300: oklch(0.264 0.108 29.2); /* #4d0000 */
452
+
453
+ /* ── Cherry ── */
454
+ --primitive-cherry-100: oklch(0.945 0.027 14.7); /* #ffe6e7 */
455
+ --primitive-cherry-200: oklch(0.865 0.074 11.4); /* #ffbfc6 */
456
+ --primitive-cherry-300: oklch(0.792 0.123 12.0); /* #ff99a6 */
457
+ --primitive-cherry-400: oklch(0.728 0.171 12.6); /* #ff7389 */
458
+ --primitive-cherry-500: oklch(0.679 0.213 14.4); /* #ff4d6e */
459
+ --primitive-cherry-600: oklch(0.625 0.232 15.8); /* #f32656 */
460
+ --primitive-cherry-700: oklch(0.571 0.229 18.2); /* #de0040 */
461
+ --primitive-cherry-800: oklch(0.550 0.221 21.3); /* #d40032 */
462
+ --primitive-cherry-900: oklch(0.517 0.209 23.5); /* #c40025 */
463
+ --primitive-cherry-1000: oklch(0.457 0.185 24.6); /* #a6001a */
464
+ --primitive-cherry-1100: oklch(0.395 0.160 25.3); /* #880011 */
465
+ --primitive-cherry-1200: oklch(0.330 0.134 25.6); /* #6a000a */
466
+ --primitive-cherry-1300: oklch(0.265 0.107 25.7); /* #4d0005 */
467
+
468
+ /* TBD — confirm opacity scale with design */
469
+ /* ── Slate alpha ── */
470
+ --primitive-slate-alpha-50: oklch(0.227 0.019 266.2 / 0%);
471
+ --primitive-slate-alpha-75: oklch(0.227 0.019 266.2 / 4%);
472
+ --primitive-slate-alpha-100: oklch(0.227 0.019 266.2 / 8%);
473
+ --primitive-slate-alpha-200: oklch(0.227 0.019 266.2 / 16%);
474
+ --primitive-slate-alpha-300: oklch(0.227 0.019 266.2 / 24%);
475
+ --primitive-slate-alpha-400: oklch(0.227 0.019 266.2 / 32%);
476
+ --primitive-slate-alpha-500: oklch(0.227 0.019 266.2 / 40%);
477
+ --primitive-slate-alpha-600: oklch(0.227 0.019 266.2 / 48%);
478
+ --primitive-slate-alpha-700: oklch(0.227 0.019 266.2 / 56%);
479
+ --primitive-slate-alpha-800: oklch(0.227 0.019 266.2 / 64%);
480
+ --primitive-slate-alpha-900: oklch(0.227 0.019 266.2 / 72%);
481
+ --primitive-slate-alpha-1000: oklch(0.227 0.019 266.2 / 80%);
482
+ --primitive-slate-alpha-1100: oklch(0.227 0.019 266.2 / 88%);
483
+
484
+ /* TBD — confirm opacity scale with design */
485
+ /* ── Blue alpha ── */
486
+ --primitive-blue-alpha-50: oklch(0.676 0.177 251.1 / 0%);
487
+ --primitive-blue-alpha-75: oklch(0.676 0.177 251.1 / 4%);
488
+ --primitive-blue-alpha-100: oklch(0.676 0.177 251.1 / 8%);
489
+ --primitive-blue-alpha-200: oklch(0.676 0.177 251.1 / 16%);
490
+ --primitive-blue-alpha-300: oklch(0.676 0.177 251.1 / 24%);
491
+ --primitive-blue-alpha-400: oklch(0.676 0.177 251.1 / 32%);
492
+ --primitive-blue-alpha-500: oklch(0.676 0.177 251.1 / 40%);
493
+ --primitive-blue-alpha-600: oklch(0.676 0.177 251.1 / 48%);
494
+ --primitive-blue-alpha-700: oklch(0.676 0.177 251.1 / 56%);
495
+ --primitive-blue-alpha-800: oklch(0.676 0.177 251.1 / 64%);
496
+ --primitive-blue-alpha-900: oklch(0.676 0.177 251.1 / 72%);
497
+ --primitive-blue-alpha-1000: oklch(0.676 0.177 251.1 / 80%);
498
+ --primitive-blue-alpha-1100: oklch(0.676 0.177 251.1 / 88%);
499
+
500
+ /* TBD — confirm opacity scale with design */
501
+ /* ── Green alpha ── */
502
+ --primitive-green-alpha-50: oklch(0.546 0.160 147.5 / 0%);
503
+ --primitive-green-alpha-75: oklch(0.546 0.160 147.5 / 4%);
504
+ --primitive-green-alpha-100: oklch(0.546 0.160 147.5 / 8%);
505
+ --primitive-green-alpha-200: oklch(0.546 0.160 147.5 / 16%);
506
+ --primitive-green-alpha-300: oklch(0.546 0.160 147.5 / 24%);
507
+ --primitive-green-alpha-400: oklch(0.546 0.160 147.5 / 32%);
508
+ --primitive-green-alpha-500: oklch(0.546 0.160 147.5 / 40%);
509
+ --primitive-green-alpha-600: oklch(0.546 0.160 147.5 / 48%);
510
+ --primitive-green-alpha-700: oklch(0.546 0.160 147.5 / 56%);
511
+ --primitive-green-alpha-800: oklch(0.546 0.160 147.5 / 64%);
512
+ --primitive-green-alpha-900: oklch(0.546 0.160 147.5 / 72%);
513
+ --primitive-green-alpha-1000: oklch(0.546 0.160 147.5 / 80%);
514
+ --primitive-green-alpha-1100: oklch(0.546 0.160 147.5 / 88%);
515
+
516
+ /* TBD — confirm opacity scale with design */
517
+ /* ── Emerald alpha ── */
518
+ --primitive-emerald-alpha-50: oklch(0.725 0.150 166.0 / 0%);
519
+ --primitive-emerald-alpha-75: oklch(0.725 0.150 166.0 / 4%);
520
+ --primitive-emerald-alpha-100: oklch(0.725 0.150 166.0 / 8%);
521
+ --primitive-emerald-alpha-200: oklch(0.725 0.150 166.0 / 16%);
522
+ --primitive-emerald-alpha-300: oklch(0.725 0.150 166.0 / 24%);
523
+ --primitive-emerald-alpha-400: oklch(0.725 0.150 166.0 / 32%);
524
+ --primitive-emerald-alpha-500: oklch(0.725 0.150 166.0 / 40%);
525
+ --primitive-emerald-alpha-600: oklch(0.725 0.150 166.0 / 48%);
526
+ --primitive-emerald-alpha-700: oklch(0.725 0.150 166.0 / 56%);
527
+ --primitive-emerald-alpha-800: oklch(0.725 0.150 166.0 / 64%);
528
+ --primitive-emerald-alpha-900: oklch(0.725 0.150 166.0 / 72%);
529
+ --primitive-emerald-alpha-1000: oklch(0.725 0.150 166.0 / 80%);
530
+ --primitive-emerald-alpha-1100: oklch(0.725 0.150 166.0 / 88%);
531
+
532
+ /* TBD — confirm opacity scale with design */
533
+ /* ── Yellow alpha ── */
534
+ --primitive-yellow-alpha-50: oklch(0.777 0.171 65.3 / 0%);
535
+ --primitive-yellow-alpha-75: oklch(0.777 0.171 65.3 / 4%);
536
+ --primitive-yellow-alpha-100: oklch(0.777 0.171 65.3 / 8%);
537
+ --primitive-yellow-alpha-200: oklch(0.777 0.171 65.3 / 16%);
538
+ --primitive-yellow-alpha-300: oklch(0.777 0.171 65.3 / 24%);
539
+ --primitive-yellow-alpha-400: oklch(0.777 0.171 65.3 / 32%);
540
+ --primitive-yellow-alpha-500: oklch(0.777 0.171 65.3 / 40%);
541
+ --primitive-yellow-alpha-600: oklch(0.777 0.171 65.3 / 48%);
542
+ --primitive-yellow-alpha-700: oklch(0.777 0.171 65.3 / 56%);
543
+ --primitive-yellow-alpha-800: oklch(0.777 0.171 65.3 / 64%);
544
+ --primitive-yellow-alpha-900: oklch(0.777 0.171 65.3 / 72%);
545
+ --primitive-yellow-alpha-1000: oklch(0.777 0.171 65.3 / 80%);
546
+ --primitive-yellow-alpha-1100: oklch(0.777 0.171 65.3 / 88%);
547
+
548
+ /* TBD — confirm opacity scale with design */
549
+ /* ── Red alpha ── */
550
+ --primitive-red-alpha-50: oklch(0.588 0.232 29.5 / 0%);
551
+ --primitive-red-alpha-75: oklch(0.588 0.232 29.5 / 4%);
552
+ --primitive-red-alpha-100: oklch(0.588 0.232 29.5 / 8%);
553
+ --primitive-red-alpha-200: oklch(0.588 0.232 29.5 / 16%);
554
+ --primitive-red-alpha-300: oklch(0.588 0.232 29.5 / 24%);
555
+ --primitive-red-alpha-400: oklch(0.588 0.232 29.5 / 32%);
556
+ --primitive-red-alpha-500: oklch(0.588 0.232 29.5 / 40%);
557
+ --primitive-red-alpha-600: oklch(0.588 0.232 29.5 / 48%);
558
+ --primitive-red-alpha-700: oklch(0.588 0.232 29.5 / 56%);
559
+ --primitive-red-alpha-800: oklch(0.588 0.232 29.5 / 64%);
560
+ --primitive-red-alpha-900: oklch(0.588 0.232 29.5 / 72%);
561
+ --primitive-red-alpha-1000: oklch(0.588 0.232 29.5 / 80%);
562
+ --primitive-red-alpha-1100: oklch(0.588 0.232 29.5 / 88%);
563
+
564
+ /* TBD — confirm opacity scale with design */
565
+ /* ── Coral alpha ── */
566
+ --primitive-coral-alpha-50: oklch(0.665 0.222 22.7 / 0%);
567
+ --primitive-coral-alpha-75: oklch(0.665 0.222 22.7 / 4%);
568
+ --primitive-coral-alpha-100: oklch(0.665 0.222 22.7 / 8%);
569
+ --primitive-coral-alpha-200: oklch(0.665 0.222 22.7 / 16%);
570
+ --primitive-coral-alpha-300: oklch(0.665 0.222 22.7 / 24%);
571
+ --primitive-coral-alpha-400: oklch(0.665 0.222 22.7 / 32%);
572
+ --primitive-coral-alpha-500: oklch(0.665 0.222 22.7 / 40%);
573
+ --primitive-coral-alpha-600: oklch(0.665 0.222 22.7 / 48%);
574
+ --primitive-coral-alpha-700: oklch(0.665 0.222 22.7 / 56%);
575
+ --primitive-coral-alpha-800: oklch(0.665 0.222 22.7 / 64%);
576
+ --primitive-coral-alpha-900: oklch(0.665 0.222 22.7 / 72%);
577
+ --primitive-coral-alpha-1000: oklch(0.665 0.222 22.7 / 80%);
578
+ --primitive-coral-alpha-1100: oklch(0.665 0.222 22.7 / 88%);
579
+
580
+ /* TBD — confirm opacity scale with design */
581
+ /* ── Cherry alpha ── */
582
+ --primitive-cherry-alpha-50: oklch(0.571 0.229 18.2 / 0%);
583
+ --primitive-cherry-alpha-75: oklch(0.571 0.229 18.2 / 4%);
584
+ --primitive-cherry-alpha-100: oklch(0.571 0.229 18.2 / 8%);
585
+ --primitive-cherry-alpha-200: oklch(0.571 0.229 18.2 / 16%);
586
+ --primitive-cherry-alpha-300: oklch(0.571 0.229 18.2 / 24%);
587
+ --primitive-cherry-alpha-400: oklch(0.571 0.229 18.2 / 32%);
588
+ --primitive-cherry-alpha-500: oklch(0.571 0.229 18.2 / 40%);
589
+ --primitive-cherry-alpha-600: oklch(0.571 0.229 18.2 / 48%);
590
+ --primitive-cherry-alpha-700: oklch(0.571 0.229 18.2 / 56%);
591
+ --primitive-cherry-alpha-800: oklch(0.571 0.229 18.2 / 64%);
592
+ --primitive-cherry-alpha-900: oklch(0.571 0.229 18.2 / 72%);
593
+ --primitive-cherry-alpha-1000: oklch(0.571 0.229 18.2 / 80%);
594
+ --primitive-cherry-alpha-1100: oklch(0.571 0.229 18.2 / 88%);
595
+
596
+ /* TBD — confirm opacity scale with design */
597
+ /* ── White alpha ── */
598
+ --primitive-white-alpha-50: oklch(1.000 0.000 263.3 / 0%);
599
+ --primitive-white-alpha-75: oklch(1.000 0.000 263.3 / 4%);
600
+ --primitive-white-alpha-100: oklch(1.000 0.000 263.3 / 8%);
601
+ --primitive-white-alpha-200: oklch(1.000 0.000 263.3 / 16%);
602
+ --primitive-white-alpha-300: oklch(1.000 0.000 263.3 / 24%);
603
+ --primitive-white-alpha-400: oklch(1.000 0.000 263.3 / 32%);
604
+ --primitive-white-alpha-500: oklch(1.000 0.000 263.3 / 40%);
605
+ --primitive-white-alpha-600: oklch(1.000 0.000 263.3 / 48%);
606
+ --primitive-white-alpha-700: oklch(1.000 0.000 263.3 / 56%);
607
+ --primitive-white-alpha-800: oklch(1.000 0.000 263.3 / 64%);
608
+ --primitive-white-alpha-900: oklch(1.000 0.000 263.3 / 72%);
609
+ --primitive-white-alpha-1000: oklch(1.000 0.000 263.3 / 80%);
610
+ --primitive-white-alpha-1100: oklch(1.000 0.000 263.3 / 88%);
611
+
612
+ /* TBD — confirm opacity scale with design */
613
+ /* ── Black alpha ── */
614
+ --primitive-black-alpha-50: oklch(0.000 0.000 0.0 / 0%);
615
+ --primitive-black-alpha-75: oklch(0.000 0.000 0.0 / 4%);
616
+ --primitive-black-alpha-100: oklch(0.000 0.000 0.0 / 8%);
617
+ --primitive-black-alpha-200: oklch(0.000 0.000 0.0 / 16%);
618
+ --primitive-black-alpha-300: oklch(0.000 0.000 0.0 / 24%);
619
+ --primitive-black-alpha-400: oklch(0.000 0.000 0.0 / 32%);
620
+ --primitive-black-alpha-500: oklch(0.000 0.000 0.0 / 40%);
621
+ --primitive-black-alpha-600: oklch(0.000 0.000 0.0 / 48%);
622
+ --primitive-black-alpha-700: oklch(0.000 0.000 0.0 / 56%);
623
+ --primitive-black-alpha-800: oklch(0.000 0.000 0.0 / 64%);
624
+ --primitive-black-alpha-900: oklch(0.000 0.000 0.0 / 72%);
625
+ --primitive-black-alpha-1000: oklch(0.000 0.000 0.0 / 80%);
626
+ --primitive-black-alpha-1100: oklch(0.000 0.000 0.0 / 88%);
195
627
 
196
628
  /* ── Transitions — Duration scale ── */
197
629
  --primitive-duration-instant: 50ms;
@@ -229,40 +661,414 @@
229
661
  --primitive-layout-diagram-max-medium: 1135px;
230
662
  }
231
663
 
664
+ /* ══════════════════════════════════════════════════════════════
665
+ LAYER 2A — FOUNDATION SEMANTICS (light defaults / :root)
666
+ Source of truth: light.tokens.json · dark.tokens.json
667
+ Namespaces: background · border · text · icon · elevation
668
+ Use --{namespace}-{role}-{variant} in product and theme code.
669
+ ══════════════════════════════════════════════════════════════ */
670
+ :root {
671
+ /* ── Background ── */
672
+ --background-default-opacity-default: var(--primitive-slate-alpha-75); /* #181C25 @ 4% */
673
+ --background-default-opacity-inverse: var(--primitive-white-alpha-75); /* #FFFFFF @ 4% */
674
+ --background-default-opacity-static-dark: var(--primitive-white-alpha-75); /* #FFFFFF @ 4% */
675
+ --background-default-opacity-static-light: var(--primitive-slate-alpha-75); /* #181C25 @ 4% */
676
+ --background-default-solid-default: var(--primitive-slate-50); /* #FFFFFF */
677
+ --background-default-solid-inverse: var(--primitive-slate-1100); /* #20242F */
678
+ --background-default-solid-static-dark: var(--primitive-slate-50); /* #FFFFFF */
679
+ --background-default-solid-static-light: var(--primitive-slate-1100); /* #20242F */
680
+ --background-error-default: var(--primitive-red-alpha-300); /* #E6190E @ 24% */
681
+ --background-hover-default: var(--primitive-slate-alpha-100); /* #181C25 @ 8% */
682
+ --background-hover-inverse: var(--primitive-white-alpha-100); /* #FFFFFF @ 8% */
683
+ --background-hover-static-dark: var(--primitive-white-alpha-100); /* #FFFFFF @ 8% */
684
+ --background-hover-static-light: var(--primitive-slate-alpha-100); /* #181C25 @ 8% */
685
+ --background-information-default: var(--primitive-blue-alpha-300); /* #2C9AFF @ 24% */
686
+ --background-pressed-default: var(--primitive-slate-alpha-200); /* #181C25 @ 16% */
687
+ --background-pressed-inverse: var(--primitive-white-alpha-200); /* #FFFFFF @ 16% */
688
+ --background-pressed-static-dark: var(--primitive-white-alpha-200); /* #FFFFFF @ 16% */
689
+ --background-pressed-static-light: var(--primitive-slate-alpha-200); /* #181C25 @ 16% */
690
+ --background-primary-canvas: var(--primitive-slate-75); /* #F6F7F8 */
691
+ --background-primary-surface: var(--primitive-slate-50); /* #FFFFFF */
692
+ --background-secondary-canvas: var(--primitive-slate-50); /* #FFFFFF */
693
+ --background-secondary-surface: var(--primitive-slate-75); /* #F6F7F8 */
694
+ --background-selected-default: var(--primitive-slate-alpha-100); /* #181C25 @ 8% */
695
+ --background-selected-inverse: var(--primitive-white-alpha-100); /* #FFFFFF @ 8% */
696
+ --background-selected-static-dark: var(--primitive-white-alpha-100); /* #FFFFFF @ 8% */
697
+ --background-selected-static-light: var(--primitive-slate-alpha-100); /* #181C25 @ 8% */
698
+ --background-success-default: var(--primitive-green-alpha-300); /* #008832 @ 24% */
699
+ --background-warning-default: var(--primitive-yellow-alpha-300); /* #FF9C13 @ 24% */
700
+
701
+ /* ── Border ── */
702
+ --border-default-default: var(--primitive-slate-alpha-200); /* #181C25 @ 16% */
703
+ --border-default-inverse: var(--primitive-white-alpha-200); /* #FFFFFF @ 16% */
704
+ --border-default-static-dark: var(--primitive-white-alpha-200); /* #FFFFFF @ 16% */
705
+ --border-default-static-light: var(--primitive-slate-alpha-200); /* #181C25 @ 16% */
706
+ --border-disabled-default: var(--primitive-slate-alpha-100); /* #181C25 @ 8% */
707
+ --border-disabled-inverse: var(--primitive-white-alpha-100); /* #FFFFFF @ 8% */
708
+ --border-disabled-static-dark: var(--primitive-white-alpha-100); /* #FFFFFF @ 8% */
709
+ --border-disabled-static-light: var(--primitive-slate-alpha-100); /* #181C25 @ 8% */
710
+ --border-error-default: var(--primitive-red-900); /* #C40000 */
711
+ --border-error-inverse: var(--primitive-red-500); /* #FF4D4D */
712
+ --border-error-static-dark: var(--primitive-red-500); /* #FF4D4D */
713
+ --border-error-static-light: var(--primitive-red-900); /* #C40000 */
714
+ --border-information-default: var(--primitive-blue-900); /* #0777C4 */
715
+ --border-information-inverse: var(--primitive-blue-500); /* #53B9FF */
716
+ --border-information-static-dark: var(--primitive-blue-500); /* #53B9FF */
717
+ --border-information-static-light: var(--primitive-blue-900); /* #0777C4 */
718
+ --border-prominent-default: var(--primitive-slate-alpha-200); /* #181C25 @ 16% */
719
+ --border-prominent-inverse: var(--primitive-white-alpha-200); /* #FFFFFF @ 16% */
720
+ --border-prominent-static-dark: var(--primitive-white-alpha-200); /* #FFFFFF @ 16% */
721
+ --border-prominent-static-light: var(--primitive-slate-alpha-200); /* #181C25 @ 16% */
722
+ --border-selected-default: var(--primitive-slate-1200); /* #181C25 */
723
+ --border-selected-inverse: var(--primitive-slate-50); /* #FFFFFF */
724
+ --border-selected-static-dark: var(--primitive-slate-50); /* #FFFFFF */
725
+ --border-selected-static-light: var(--primitive-slate-1200); /* #181C25 */
726
+ --border-subtle-default: var(--primitive-slate-alpha-100); /* #181C25 @ 8% */
727
+ --border-subtle-inverse: var(--primitive-white-alpha-100); /* #FFFFFF @ 8% */
728
+ --border-subtle-static-dark: var(--primitive-white-alpha-100); /* #FFFFFF @ 8% */
729
+ --border-subtle-static-light: var(--primitive-slate-alpha-100); /* #181C25 @ 8% */
730
+ --border-success-default: var(--primitive-green-900); /* #007A22 */
731
+ --border-success-inverse: var(--primitive-green-500); /* #4DBC6B */
732
+ --border-success-static-dark: var(--primitive-green-500); /* #4DBC6B */
733
+ --border-success-static-light: var(--primitive-green-900); /* #007A22 */
734
+ --border-warning-default: var(--primitive-yellow-900); /* #C47D00 */
735
+ --border-warning-inverse: var(--primitive-yellow-500); /* #FFBE4D */
736
+ --border-warning-static-dark: var(--primitive-yellow-500); /* #FFBE4D */
737
+ --border-warning-static-light: var(--primitive-yellow-900); /* #C47D00 */
738
+
739
+ /* ── Text ── */
740
+ --text-disabled-default: var(--primitive-slate-alpha-200); /* #181C25 @ 16% */
741
+ --text-disabled-inverse: var(--primitive-white-alpha-200); /* #FFFFFF @ 16% */
742
+ --text-disabled-static-dark: var(--primitive-white-alpha-200); /* #FFFFFF @ 16% */
743
+ --text-disabled-static-light: var(--primitive-slate-alpha-200); /* #181C25 @ 16% */
744
+ --text-error-default: var(--primitive-red-900); /* #C40000 */
745
+ --text-error-inverse: var(--primitive-red-500); /* #FF4D4D */
746
+ --text-error-static-dark: var(--primitive-red-500); /* #FF4D4D */
747
+ --text-error-static-light: var(--primitive-red-900); /* #C40000 */
748
+ --text-information-default: var(--primitive-blue-900); /* #0777C4 */
749
+ --text-information-inverse: var(--primitive-blue-500); /* #53B9FF */
750
+ --text-information-static-dark: var(--primitive-blue-500); /* #53B9FF */
751
+ --text-information-static-light: var(--primitive-blue-900); /* #0777C4 */
752
+ --text-prominent-default: var(--primitive-slate-1200); /* #181C25 */
753
+ --text-prominent-inverse: var(--primitive-slate-50); /* #FFFFFF */
754
+ --text-prominent-static-dark: var(--primitive-slate-50); /* #FFFFFF */
755
+ --text-prominent-static-light: var(--primitive-slate-1200); /* #181C25 */
756
+ --text-subtle-default: var(--primitive-slate-alpha-500); /* #181C25 @ 48% */
757
+ --text-subtle-inverse: var(--primitive-white-alpha-500); /* #FFFFFF @ 48% */
758
+ --text-subtle-static-dark: var(--primitive-white-alpha-500); /* #FFFFFF @ 48% */
759
+ --text-subtle-static-light: var(--primitive-slate-alpha-500); /* #181C25 @ 48% */
760
+ --text-success-default: var(--primitive-green-900); /* #007A22 */
761
+ --text-success-inverse: var(--primitive-green-500); /* #4DBC6B */
762
+ --text-success-static-dark: var(--primitive-green-500); /* #4DBC6B */
763
+ --text-success-static-light: var(--primitive-green-900); /* #007A22 */
764
+ --text-utility-brand: var(--primitive-coral-700); /* #FF444F */
765
+ --text-utility-demo: oklch(0.672 0.199 42.1); /* #F55F0A */ /* TODO: no matching primitive */
766
+ --text-utility-real: var(--primitive-emerald-700); /* #00C390 */
767
+ --text-warning-default: var(--primitive-yellow-900); /* #C47D00 */
768
+ --text-warning-inverse: var(--primitive-yellow-500); /* #FFBE4D */
769
+ --text-warning-static-dark: var(--primitive-yellow-500); /* #FFBE4D */
770
+ --text-warning-static-light: var(--primitive-yellow-900); /* #C47D00 */
771
+
772
+ /* ── Icon ── */
773
+ --icon-disabled-default: var(--primitive-slate-alpha-200); /* #181C25 @ 16% */
774
+ --icon-disabled-inverse: var(--primitive-white-alpha-200); /* #FFFFFF @ 16% */
775
+ --icon-disabled-static-dark: var(--primitive-white-alpha-200); /* #FFFFFF @ 16% */
776
+ --icon-disabled-static-light: var(--primitive-slate-alpha-200); /* #181C25 @ 16% */
777
+ --icon-error-default: var(--primitive-red-900); /* #C40000 */
778
+ --icon-error-inverse: var(--primitive-red-500); /* #FF4D4D */
779
+ --icon-error-static-dark: var(--primitive-red-500); /* #FF4D4D */
780
+ --icon-error-static-light: var(--primitive-red-900); /* #C40000 */
781
+ --icon-information-default: var(--primitive-blue-900); /* #0777C4 */
782
+ --icon-information-inverse: var(--primitive-blue-500); /* #53B9FF */
783
+ --icon-information-static-dark: var(--primitive-blue-500); /* #53B9FF */
784
+ --icon-information-static-light: var(--primitive-blue-900); /* #0777C4 */
785
+ --icon-prominent-default: var(--primitive-slate-1200); /* #181C25 */
786
+ --icon-prominent-inverse: var(--primitive-slate-50); /* #FFFFFF */
787
+ --icon-prominent-static-dark: var(--primitive-slate-50); /* #FFFFFF */
788
+ --icon-prominent-static-light: var(--primitive-slate-1200); /* #181C25 */
789
+ --icon-subtle-default: var(--primitive-slate-alpha-500); /* #181C25 @ 48% */
790
+ --icon-subtle-inverse: var(--primitive-white-alpha-500); /* #FFFFFF @ 48% */
791
+ --icon-subtle-static-dark: var(--primitive-white-alpha-500); /* #FFFFFF @ 48% */
792
+ --icon-subtle-static-light: var(--primitive-slate-alpha-500); /* #181C25 @ 48% */
793
+ --icon-success-default: var(--primitive-green-900); /* #007A22 */
794
+ --icon-success-inverse: var(--primitive-green-500); /* #4DBC6B */
795
+ --icon-success-static-dark: var(--primitive-green-500); /* #4DBC6B */
796
+ --icon-success-static-light: var(--primitive-green-900); /* #007A22 */
797
+ --icon-utility-brand: var(--primitive-coral-700); /* #FF444F */
798
+ --icon-utility-demo: oklch(0.672 0.199 42.1); /* #F55F0A */ /* TODO: no matching primitive */
799
+ --icon-utility-flag-placeholder: var(--primitive-slate-alpha-100); /* #181C25 @ 8% */
800
+ --icon-utility-real: var(--primitive-emerald-700); /* #00C390 */
801
+ --icon-warning-default: var(--primitive-yellow-900); /* #C47D00 */
802
+ --icon-warning-inverse: var(--primitive-yellow-500); /* #FFBE4D */
803
+ --icon-warning-static-dark: var(--primitive-yellow-500); /* #FFBE4D */
804
+ --icon-warning-static-light: var(--primitive-yellow-900); /* #C47D00 */
805
+
806
+ /* ── Elevation — layer values ── */
807
+ --elevation-x: 0px;
808
+ --elevation-100-layer-1-y: 1px;
809
+ --elevation-100-layer-1-blur: 2px;
810
+ --elevation-100-layer-1-spread: 0px;
811
+ --elevation-100-layer-1-colour: var(--primitive-black-alpha-75); /* #000000 @ 4% */
812
+ --elevation-200-layer-1-y: 1px;
813
+ --elevation-200-layer-1-blur: 2px;
814
+ --elevation-200-layer-1-spread: 0px;
815
+ --elevation-200-layer-1-colour: var(--primitive-black-alpha-75); /* #000000 @ 4% */
816
+ --elevation-200-layer-2-y: 2px;
817
+ --elevation-200-layer-2-blur: 6px;
818
+ --elevation-200-layer-2-spread: 0px;
819
+ --elevation-200-layer-2-colour: var(--primitive-black-alpha-100); /* #000000 @ 8% */
820
+ --elevation-300-layer-1-y: 1px;
821
+ --elevation-300-layer-1-blur: 2px;
822
+ --elevation-300-layer-1-spread: 0px;
823
+ --elevation-300-layer-1-colour: var(--primitive-black-alpha-75); /* #000000 @ 4% */
824
+ --elevation-300-layer-2-y: 4px;
825
+ --elevation-300-layer-2-blur: 12px;
826
+ --elevation-300-layer-2-spread: -1px;
827
+ --elevation-300-layer-2-colour: var(--primitive-black-alpha-100); /* #000000 @ 8% */
828
+ --elevation-300-layer-3-y: 8px;
829
+ --elevation-300-layer-3-blur: 24px;
830
+ --elevation-300-layer-3-spread: -2px;
831
+ --elevation-300-layer-3-colour: var(--primitive-black-alpha-75); /* #000000 @ 4% */
832
+ --elevation-400-layer-1-y: 2px;
833
+ --elevation-400-layer-1-blur: 4px;
834
+ --elevation-400-layer-1-spread: 0px;
835
+ --elevation-400-layer-1-colour: var(--primitive-black-alpha-75); /* #000000 @ 4% */
836
+ --elevation-400-layer-2-y: 8px;
837
+ --elevation-400-layer-2-blur: 24px;
838
+ --elevation-400-layer-2-spread: -4px;
839
+ --elevation-400-layer-2-colour: var(--primitive-black-alpha-100); /* #000000 @ 8% */
840
+ --elevation-400-layer-3-y: 16px;
841
+ --elevation-400-layer-3-blur: 48px;
842
+ --elevation-400-layer-3-spread: -6px;
843
+ --elevation-400-layer-3-colour: var(--primitive-black-alpha-75); /* #000000 @ 4% */
844
+ --elevation-500-layer-1-y: 4px;
845
+ --elevation-500-layer-1-blur: 8px;
846
+ --elevation-500-layer-1-spread: 0px;
847
+ --elevation-500-layer-1-colour: var(--primitive-black-alpha-75); /* #000000 @ 4% */
848
+ --elevation-500-layer-2-y: 16px;
849
+ --elevation-500-layer-2-blur: 48px;
850
+ --elevation-500-layer-2-spread: -6px;
851
+ --elevation-500-layer-2-colour: var(--primitive-black-alpha-100); /* #000000 @ 8% */
852
+ --elevation-500-layer-3-y: 32px;
853
+ --elevation-500-layer-3-blur: 96px;
854
+ --elevation-500-layer-3-spread: -12px;
855
+ --elevation-500-layer-3-colour: var(--primitive-black-alpha-75); /* #000000 @ 4% */
856
+
857
+ /* ── Elevation — composed box-shadow shorthands ── */
858
+ /* Defined in :root only; CSS var lazy resolution means these auto-adapt when .dark overrides the layer-colour tokens */
859
+ --elevation-100:
860
+ var(--elevation-x) var(--elevation-100-layer-1-y) var(--elevation-100-layer-1-blur) var(--elevation-100-layer-1-spread) var(--elevation-100-layer-1-colour);
861
+ --elevation-200:
862
+ var(--elevation-x) var(--elevation-200-layer-1-y) var(--elevation-200-layer-1-blur) var(--elevation-200-layer-1-spread) var(--elevation-200-layer-1-colour),
863
+ var(--elevation-x) var(--elevation-200-layer-2-y) var(--elevation-200-layer-2-blur) var(--elevation-200-layer-2-spread) var(--elevation-200-layer-2-colour);
864
+ --elevation-300:
865
+ var(--elevation-x) var(--elevation-300-layer-1-y) var(--elevation-300-layer-1-blur) var(--elevation-300-layer-1-spread) var(--elevation-300-layer-1-colour),
866
+ var(--elevation-x) var(--elevation-300-layer-2-y) var(--elevation-300-layer-2-blur) var(--elevation-300-layer-2-spread) var(--elevation-300-layer-2-colour),
867
+ var(--elevation-x) var(--elevation-300-layer-3-y) var(--elevation-300-layer-3-blur) var(--elevation-300-layer-3-spread) var(--elevation-300-layer-3-colour);
868
+ --elevation-400:
869
+ var(--elevation-x) var(--elevation-400-layer-1-y) var(--elevation-400-layer-1-blur) var(--elevation-400-layer-1-spread) var(--elevation-400-layer-1-colour),
870
+ var(--elevation-x) var(--elevation-400-layer-2-y) var(--elevation-400-layer-2-blur) var(--elevation-400-layer-2-spread) var(--elevation-400-layer-2-colour),
871
+ var(--elevation-x) var(--elevation-400-layer-3-y) var(--elevation-400-layer-3-blur) var(--elevation-400-layer-3-spread) var(--elevation-400-layer-3-colour);
872
+ --elevation-500:
873
+ var(--elevation-x) var(--elevation-500-layer-1-y) var(--elevation-500-layer-1-blur) var(--elevation-500-layer-1-spread) var(--elevation-500-layer-1-colour),
874
+ var(--elevation-x) var(--elevation-500-layer-2-y) var(--elevation-500-layer-2-blur) var(--elevation-500-layer-2-spread) var(--elevation-500-layer-2-colour),
875
+ var(--elevation-x) var(--elevation-500-layer-3-y) var(--elevation-500-layer-3-blur) var(--elevation-500-layer-3-spread) var(--elevation-500-layer-3-colour);
876
+ }
877
+
878
+ /* ══════════════════════════════════════════════════════════════
879
+ LAYER 2A — FOUNDATION SEMANTICS (dark overrides)
880
+ Toggle .dark on <html> to switch theme.
881
+ ══════════════════════════════════════════════════════════════ */
882
+ .dark {
883
+ /* ── Background ── */
884
+ --background-default-opacity-default: var(--primitive-white-alpha-75); /* #FFFFFF @ 4% */
885
+ --background-default-opacity-inverse: var(--primitive-slate-alpha-75); /* #181C25 @ 4% */
886
+ --background-default-opacity-static-dark: var(--primitive-white-alpha-75); /* #FFFFFF @ 4% */
887
+ --background-default-opacity-static-light: var(--primitive-slate-alpha-75); /* #181C25 @ 4% */
888
+ --background-default-solid-default: var(--primitive-slate-1100); /* #20242F */
889
+ --background-default-solid-inverse: var(--primitive-slate-50); /* #FFFFFF */
890
+ --background-default-solid-static-dark: var(--primitive-slate-50); /* #FFFFFF */
891
+ --background-default-solid-static-light: var(--primitive-slate-1100); /* #20242F */
892
+ --background-error-default: var(--primitive-red-alpha-300); /* #E6190E @ 24% */
893
+ --background-hover-default: var(--primitive-white-alpha-100); /* #FFFFFF @ 8% */
894
+ --background-hover-inverse: var(--primitive-slate-alpha-100); /* #181C25 @ 8% */
895
+ --background-hover-static-dark: var(--primitive-white-alpha-100); /* #FFFFFF @ 8% */
896
+ --background-hover-static-light: var(--primitive-slate-alpha-100); /* #181C25 @ 8% */
897
+ --background-information-default: var(--primitive-blue-alpha-300); /* #2C9AFF @ 24% */
898
+ --background-pressed-default: var(--primitive-white-alpha-200); /* #FFFFFF @ 16% */
899
+ --background-pressed-inverse: var(--primitive-slate-alpha-200); /* #181C25 @ 16% */
900
+ --background-pressed-static-dark: var(--primitive-white-alpha-200); /* #FFFFFF @ 16% */
901
+ --background-pressed-static-light: var(--primitive-slate-alpha-200); /* #181C25 @ 16% */
902
+ --background-primary-canvas: var(--primitive-slate-1200); /* #181C25 */
903
+ --background-primary-surface: var(--primitive-slate-1300); /* #11141B */
904
+ --background-secondary-canvas: var(--primitive-slate-1200); /* #181C25 */
905
+ --background-secondary-surface: var(--primitive-slate-1100); /* #20242F */
906
+ --background-selected-default: var(--primitive-white-alpha-100); /* #FFFFFF @ 8% */
907
+ --background-selected-inverse: var(--primitive-slate-alpha-100); /* #181C25 @ 8% */
908
+ --background-selected-static-dark: var(--primitive-white-alpha-100); /* #FFFFFF @ 8% */
909
+ --background-selected-static-light: var(--primitive-slate-alpha-100); /* #181C25 @ 8% */
910
+ --background-success-default: var(--primitive-green-alpha-300); /* #008832 @ 24% */
911
+ --background-warning-default: var(--primitive-yellow-alpha-300); /* #FF9C13 @ 24% */
912
+
913
+ /* ── Border ── */
914
+ --border-default-default: var(--primitive-white-alpha-200); /* #FFFFFF @ 16% */
915
+ --border-default-inverse: var(--primitive-slate-alpha-200); /* #181C25 @ 16% */
916
+ --border-default-static-dark: var(--primitive-white-alpha-200); /* #FFFFFF @ 16% */
917
+ --border-default-static-light: var(--primitive-slate-alpha-200); /* #181C25 @ 16% */
918
+ --border-disabled-default: var(--primitive-white-alpha-100); /* #FFFFFF @ 8% */
919
+ --border-disabled-inverse: var(--primitive-slate-alpha-100); /* #181C25 @ 8% */
920
+ --border-disabled-static-dark: var(--primitive-white-alpha-100); /* #FFFFFF @ 8% */
921
+ --border-disabled-static-light: var(--primitive-slate-alpha-100); /* #181C25 @ 8% */
922
+ --border-error-default: var(--primitive-red-500); /* #FF4D4D */
923
+ --border-error-inverse: var(--primitive-red-900); /* #C40000 */
924
+ --border-error-static-dark: var(--primitive-red-500); /* #FF4D4D */
925
+ --border-error-static-light: var(--primitive-red-900); /* #C40000 */
926
+ --border-information-default: var(--primitive-blue-500); /* #53B9FF */
927
+ --border-information-inverse: var(--primitive-blue-900); /* #0777C4 */
928
+ --border-information-static-dark: var(--primitive-blue-500); /* #53B9FF */
929
+ --border-information-static-light: var(--primitive-blue-900); /* #0777C4 */
930
+ --border-prominent-default: var(--primitive-white-alpha-200); /* #FFFFFF @ 16% */
931
+ --border-prominent-inverse: var(--primitive-slate-alpha-200); /* #181C25 @ 16% */
932
+ --border-prominent-static-dark: var(--primitive-white-alpha-200); /* #FFFFFF @ 16% */
933
+ --border-prominent-static-light: var(--primitive-slate-alpha-200); /* #181C25 @ 16% */
934
+ --border-selected-default: var(--primitive-slate-50); /* #FFFFFF */
935
+ --border-selected-inverse: var(--primitive-slate-1200); /* #181C25 */
936
+ --border-selected-static-dark: var(--primitive-slate-50); /* #FFFFFF */
937
+ --border-selected-static-light: var(--primitive-slate-1200); /* #181C25 */
938
+ --border-subtle-default: var(--primitive-white-alpha-100); /* #FFFFFF @ 8% */
939
+ --border-subtle-inverse: var(--primitive-slate-alpha-100); /* #181C25 @ 8% */
940
+ --border-subtle-static-dark: var(--primitive-white-alpha-100); /* #FFFFFF @ 8% */
941
+ --border-subtle-static-light: var(--primitive-slate-alpha-100); /* #181C25 @ 8% */
942
+ --border-success-default: var(--primitive-green-500); /* #4DBC6B */
943
+ --border-success-inverse: var(--primitive-green-900); /* #007A22 */
944
+ --border-success-static-dark: var(--primitive-green-500); /* #4DBC6B */
945
+ --border-success-static-light: var(--primitive-green-900); /* #007A22 */
946
+ --border-warning-default: var(--primitive-yellow-500); /* #FFBE4D */
947
+ --border-warning-inverse: var(--primitive-yellow-900); /* #C47D00 */
948
+ --border-warning-static-dark: var(--primitive-yellow-500); /* #FFBE4D */
949
+ --border-warning-static-light: var(--primitive-yellow-900); /* #C47D00 */
950
+
951
+ /* ── Text ── */
952
+ --text-disabled-default: var(--primitive-white-alpha-200); /* #FFFFFF @ 16% */
953
+ --text-disabled-inverse: var(--primitive-slate-alpha-200); /* #181C25 @ 16% */
954
+ --text-disabled-static-dark: var(--primitive-white-alpha-200); /* #FFFFFF @ 16% */
955
+ --text-disabled-static-light: var(--primitive-slate-alpha-200); /* #181C25 @ 16% */
956
+ --text-error-default: var(--primitive-red-500); /* #FF4D4D */
957
+ --text-error-inverse: var(--primitive-red-900); /* #C40000 */
958
+ --text-error-static-dark: var(--primitive-red-500); /* #FF4D4D */
959
+ --text-error-static-light: var(--primitive-red-900); /* #C40000 */
960
+ --text-information-default: var(--primitive-blue-500); /* #53B9FF */
961
+ --text-information-inverse: var(--primitive-blue-900); /* #0777C4 */
962
+ --text-information-static-dark: var(--primitive-blue-500); /* #53B9FF */
963
+ --text-information-static-light: var(--primitive-blue-900); /* #0777C4 */
964
+ --text-prominent-default: var(--primitive-slate-50); /* #FFFFFF */
965
+ --text-prominent-inverse: var(--primitive-slate-1200); /* #181C25 */
966
+ --text-prominent-static-dark: var(--primitive-slate-50); /* #FFFFFF */
967
+ --text-prominent-static-light: var(--primitive-slate-1200); /* #181C25 */
968
+ --text-subtle-default: var(--primitive-white-alpha-500); /* #FFFFFF @ 48% */
969
+ --text-subtle-inverse: var(--primitive-slate-alpha-500); /* #181C25 @ 48% */
970
+ --text-subtle-static-dark: var(--primitive-white-alpha-500); /* #FFFFFF @ 48% */
971
+ --text-subtle-static-light: var(--primitive-slate-alpha-500); /* #181C25 @ 48% */
972
+ --text-success-default: var(--primitive-green-500); /* #4DBC6B */
973
+ --text-success-inverse: var(--primitive-green-900); /* #007A22 */
974
+ --text-success-static-dark: var(--primitive-green-500); /* #4DBC6B */
975
+ --text-success-static-light: var(--primitive-green-900); /* #007A22 */
976
+ --text-utility-brand: var(--primitive-coral-700); /* #FF444F */
977
+ --text-utility-demo: oklch(0.672 0.199 42.1); /* #F55F0A */ /* TODO: no matching primitive */
978
+ --text-utility-real: var(--primitive-emerald-700); /* #00C390 */
979
+ --text-warning-default: var(--primitive-yellow-500); /* #FFBE4D */
980
+ --text-warning-inverse: var(--primitive-yellow-900); /* #C47D00 */
981
+ --text-warning-static-dark: var(--primitive-yellow-500); /* #FFBE4D */
982
+ --text-warning-static-light: var(--primitive-yellow-900); /* #C47D00 */
983
+
984
+ /* ── Icon ── */
985
+ --icon-disabled-default: var(--primitive-white-alpha-200); /* #FFFFFF @ 16% */
986
+ --icon-disabled-inverse: var(--primitive-slate-alpha-200); /* #181C25 @ 16% */
987
+ --icon-disabled-static-dark: var(--primitive-white-alpha-200); /* #FFFFFF @ 16% */
988
+ --icon-disabled-static-light: var(--primitive-slate-alpha-200); /* #181C25 @ 16% */
989
+ --icon-error-default: var(--primitive-red-500); /* #FF4D4D */
990
+ --icon-error-inverse: var(--primitive-red-900); /* #C40000 */
991
+ --icon-error-static-dark: var(--primitive-red-500); /* #FF4D4D */
992
+ --icon-error-static-light: var(--primitive-red-900); /* #C40000 */
993
+ --icon-information-default: var(--primitive-blue-500); /* #53B9FF */
994
+ --icon-information-inverse: var(--primitive-blue-900); /* #0777C4 */
995
+ --icon-information-static-dark: var(--primitive-blue-500); /* #53B9FF */
996
+ --icon-information-static-light: var(--primitive-blue-900); /* #0777C4 */
997
+ --icon-prominent-default: var(--primitive-slate-50); /* #FFFFFF */
998
+ --icon-prominent-inverse: var(--primitive-slate-1200); /* #181C25 */
999
+ --icon-prominent-static-dark: var(--primitive-slate-50); /* #FFFFFF */
1000
+ --icon-prominent-static-light: var(--primitive-slate-1200); /* #181C25 */
1001
+ --icon-subtle-default: var(--primitive-white-alpha-500); /* #FFFFFF @ 48% */
1002
+ --icon-subtle-inverse: var(--primitive-slate-alpha-500); /* #181C25 @ 48% */
1003
+ --icon-subtle-static-dark: var(--primitive-white-alpha-500); /* #FFFFFF @ 48% */
1004
+ --icon-subtle-static-light: var(--primitive-slate-alpha-500); /* #181C25 @ 48% */
1005
+ --icon-success-default: var(--primitive-green-500); /* #4DBC6B */
1006
+ --icon-success-inverse: var(--primitive-green-900); /* #007A22 */
1007
+ --icon-success-static-dark: var(--primitive-green-500); /* #4DBC6B */
1008
+ --icon-success-static-light: var(--primitive-green-900); /* #007A22 */
1009
+ --icon-utility-brand: var(--primitive-coral-700); /* #FF444F */
1010
+ --icon-utility-demo: oklch(0.672 0.199 42.1); /* #F55F0A */ /* TODO: no matching primitive */
1011
+ --icon-utility-flag-placeholder: var(--primitive-white-alpha-100); /* #FFFFFF @ 8% */
1012
+ --icon-utility-real: var(--primitive-emerald-700); /* #00C390 */
1013
+ --icon-warning-default: var(--primitive-yellow-500); /* #FFBE4D */
1014
+ --icon-warning-inverse: var(--primitive-yellow-900); /* #C47D00 */
1015
+ --icon-warning-static-dark: var(--primitive-yellow-500); /* #FFBE4D */
1016
+ --icon-warning-static-light: var(--primitive-yellow-900); /* #C47D00 */
1017
+
1018
+ /* ── Elevation — colour overrides only (geometry unchanged from :root) ── */
1019
+ --elevation-100-layer-1-colour: var(--primitive-black-alpha-100); /* #000000 @ 8% */
1020
+ --elevation-200-layer-1-colour: var(--primitive-black-alpha-100); /* #000000 @ 8% */
1021
+ --elevation-200-layer-2-colour: var(--primitive-black-alpha-200); /* #000000 @ 16% */
1022
+ --elevation-300-layer-1-colour: var(--primitive-black-alpha-100); /* #000000 @ 8% */
1023
+ --elevation-300-layer-2-colour: var(--primitive-black-alpha-200); /* #000000 @ 16% */
1024
+ --elevation-300-layer-3-colour: var(--primitive-black-alpha-100); /* #000000 @ 8% */
1025
+ --elevation-400-layer-1-colour: var(--primitive-black-alpha-100); /* #000000 @ 8% */
1026
+ --elevation-400-layer-2-colour: var(--primitive-black-alpha-200); /* #000000 @ 16% */
1027
+ --elevation-400-layer-3-colour: var(--primitive-black-alpha-100); /* #000000 @ 8% */
1028
+ --elevation-500-layer-1-colour: var(--primitive-black-alpha-100); /* #000000 @ 8% */
1029
+ --elevation-500-layer-2-colour: var(--primitive-black-alpha-200); /* #000000 @ 16% */
1030
+ --elevation-500-layer-3-colour: var(--primitive-black-alpha-100); /* #000000 @ 8% */
1031
+ }
1032
+
232
1033
  /* ══════════════════════════════════════════════════════════════
233
1034
  LAYER 2 — SEMANTICS
234
- UI role and meaning. References primitives only.
1035
+ UI role and meaning. References foundation tokens (Layer 2A).
235
1036
  ══════════════════════════════════════════════════════════════ */
236
1037
  :root {
237
- --prominent: var(--primitive-mono-50);
238
- --on-prominent: var(--primitive-mono-1000);
239
- --on-prominent-static-inverse: var(--primitive-mono-50);
240
- /* #FFFFFFalways white, never changes between themes */
241
- --primary: var(--primitive-blue-500);
242
- --primary-hover: oklch(0.403 0.251 267.5);
243
- --subtle: oklch(0.96 0 0);
244
- --on-subtle: oklch(0.52 0 0);
245
-
246
- --border-subtle: oklch(0.92 0 0);
247
- --border: var(--border-subtle);
248
- /* @deprecated alias — use --border-subtle or --border-prominent */
249
- --border-prominent: var(--primitive-mono-1000);
250
- /* #000000 */
251
- --secondary-hover: var(--primitive-mono-100);
252
- /* #EEEEEE */
253
- --ring: var(--primitive-blue-500);
1038
+ --on-prominent-static-inverse: var(--text-prominent-static-dark);
1039
+ /* always #FFFFFF — never changes between themes */
1040
+ --primary: var(--primitive-coral-700);
1041
+ /* coral-700 (#FF444F)brand colour, same in both themes */
1042
+ --primary-hover: var(--primitive-coral-800);
1043
+ /* coral-800 (#E12E3A) brand hover, same in both themes */
1044
+ --secondary-hover: var(--background-secondary-surface);
1045
+ /* TODO PR 3 — replace with button.secondary-normal-bg-hover when component tokens ship */
1046
+ --ring: var(--primitive-coral-700);
1047
+ /* coral-700 brand colour, same in both themes */
254
1048
  --overlay: var(--primitive-black-50);
255
- --semantic-win: var(--primitive-green-400);
256
- --semantic-loss: var(--primitive-red-500);
257
- --semantic-info: var(--primitive-sky-600);
258
- --semantic-error: var(--primitive-red-600);
259
- --semantic-warning: var(--primitive-orange-500);
260
- --tabs: var(--primitive-mono-alpha-4);
261
- --tabs-active: var(--primitive-mono-50);
1049
+ /* TODO — no dedicated overlay foundation token; keeping primitive alias. Revisit when overlay token ships. */
1050
+ --semantic-error: var(--text-error-default);
1051
+ --tabs: var(--background-default-opacity-default);
1052
+ --tabs-active: var(--background-primary-surface);
262
1053
  --semantic-layout-diagram-max-default: var(--primitive-layout-diagram-max-default);
263
1054
  --semantic-layout-diagram-max-small: var(--primitive-layout-diagram-max-small);
264
1055
  --semantic-layout-diagram-max-medium: var(--primitive-layout-diagram-max-medium);
265
1056
 
1057
+ /* ── shadcn/ui compatibility ── */
1058
+ --background: var(--background-primary-canvas);
1059
+ --foreground: var(--text-prominent-default);
1060
+ --primary-foreground: var(--text-prominent-static-dark);
1061
+ /* always white on brand/primary bg */
1062
+ --secondary: var(--background-secondary-canvas);
1063
+ --secondary-foreground: var(--text-prominent-default);
1064
+ --muted: var(--background-secondary-surface);
1065
+ --muted-foreground: var(--text-subtle-default);
1066
+ --accent: var(--background-secondary-canvas);
1067
+ --accent-foreground: var(--text-prominent-default);
1068
+ --destructive: var(--background-error-default);
1069
+ --destructive-foreground: var(--text-prominent-static-dark);
1070
+ /* TODO — --chart-1 through --chart-5 need a separate design decision about which palette colours to use for data visualisations */
1071
+
266
1072
  /* ── Transitions — Semantic duration ── */
267
1073
  --transition-duration-interactive: var(--primitive-duration-fast);
268
1074
  /* buttons, inputs, badges, checkboxes, toggles, tabs hover */
@@ -324,37 +1130,139 @@
324
1130
  Component-specific tokens. References semantics or primitives.
325
1131
  ══════════════════════════════════════════════════════════════ */
326
1132
  :root {
327
- --card: var(--primitive-mono-50);
328
- --card-foreground: oklch(0.07 0.012 165);
329
- --popover: var(--primitive-mono-50);
330
- --popover-foreground: oklch(0.07 0.012 165);
331
- --input: var(--border-subtle);
332
- --alert-info-text: var(--semantic-info);
333
- --alert-info-border: var(--semantic-info);
334
- --alert-error-text: var(--semantic-error);
335
- --alert-error-border: var(--semantic-error);
336
- --slider-range: oklch(0.476 0.297 267.4 / 40%);
337
- --sidebar: var(--primitive-mono-50);
338
- --sidebar-foreground: oklch(0.07 0.012 165);
1133
+ --input: var(--border-subtle-default);
1134
+ --alert-info-text: var(--text-information-default);
1135
+ --alert-info-border: var(--border-information-default);
1136
+ --alert-error-text: var(--text-error-default);
1137
+ --alert-error-border: var(--border-error-default);
1138
+ --slider-range: oklch(0.665 0.222 22.7 / 40%); /* TODO: no matching primitive — coral-700 @ 40%; alpha scale has 32% and 48% stops only */
1139
+ /* coral-700 at 40% opacity */
1140
+ --sidebar: var(--background-primary-surface);
1141
+ --sidebar-foreground: var(--text-prominent-default);
339
1142
  --sidebar-primary: var(--primary);
340
- --sidebar-primary-foreground: var(--primitive-mono-50);
341
- --sidebar-accent: oklch(0.96 0 0);
342
- --sidebar-accent-foreground: oklch(0.12 0.015 160);
343
- --sidebar-border: oklch(0.92 0 0);
1143
+ --sidebar-primary-foreground: var(--text-prominent-static-dark);
1144
+ --sidebar-accent: var(--background-secondary-surface);
1145
+ --sidebar-accent-foreground: var(--text-prominent-default);
1146
+ --sidebar-border: var(--border-subtle-default);
344
1147
  --sidebar-ring: var(--ring);
345
1148
  }
346
1149
 
347
1150
  @layer base {
348
1151
  * {
349
- border-color: var(--color-border-subtle);
1152
+ border-color: var(--color-default);
350
1153
  outline-color: color-mix(in oklch, var(--color-ring) 50%, transparent);
351
1154
  }
352
1155
 
353
1156
  body {
354
- @apply bg-prominent text-on-prominent font-sans antialiased;
1157
+ @apply bg-primary-surface text-prominent font-sans antialiased;
355
1158
  }
356
1159
  }
357
1160
 
1161
+ /* ── Snackbar: dark mode override via :root.dark (specificity 0,1,1 beats :root 0,0,1) ── */
1162
+ :root.dark {
1163
+ --snackbar-bg-default: var(--primitive-slate-50);
1164
+ --snackbar-bg-fail: var(--primitive-red-900);
1165
+ --snackbar-text: var(--primitive-slate-1200);
1166
+ --snackbar-text-fail: var(--primitive-slate-50);
1167
+ --snackbar-icon: var(--primitive-slate-1200);
1168
+ --snackbar-icon-fail: var(--primitive-slate-50);
1169
+ /* component-button/sm ghost-static-light — for dark mode (white snackbar bg, dark btn text) */
1170
+ --snackbar-btn-text: var(--button-ghost-static-light-text);
1171
+ --snackbar-btn-icon: var(--button-ghost-static-light-icon);
1172
+ --snackbar-btn-bg-hover: var(--button-ghost-static-light-bg-hover);
1173
+ --snackbar-btn-bg-pressed: var(--button-ghost-static-light-bg-pressed);
1174
+ }
1175
+
1176
+ /* ── Snackbar: sonner overrides ─────────────────────────────────────────────
1177
+ Sonner hardcodes font-size/weight, padding, and box-shadow directly in its
1178
+ stylesheet — they are not exposed as CSS variable hooks. We override them
1179
+ here with our component-snackbar token values. !important is intentional:
1180
+ sonner injects its styles after our stylesheet. */
1181
+ [data-sonner-toast][data-styled='true'] {
1182
+ font-size: var(--snackbar-font-size) !important;
1183
+ font-weight: var(--snackbar-font-weight) !important;
1184
+ /* top | right | bottom | left — Figma: pl=spacing-1(16px), pr=spacing-2(8px) */
1185
+ padding: var(--snackbar-padding-v) var(--snackbar-spacing-2) var(--snackbar-padding-v) var(--snackbar-spacing-1) !important;
1186
+ min-height: var(--snackbar-height) !important;
1187
+ box-shadow: var(--snackbar-shadow) !important;
1188
+ align-items: center !important;
1189
+ gap: var(--snackbar-spacing-2) !important;
1190
+ }
1191
+
1192
+ /* Snackbar content — fills available width, pushing buttons to the right */
1193
+ [data-sonner-toast][data-styled='true'] [data-content] {
1194
+ flex: 1 0 0 !important;
1195
+ min-width: 0 !important;
1196
+ }
1197
+
1198
+ /* Action + cancel buttons — button.tsx ghost/sm (component-button/sm) */
1199
+ [data-sonner-toast][data-styled='true'] [data-button] {
1200
+ height: var(--snackbar-btn-height) !important;
1201
+ padding-left: var(--snackbar-btn-padding-h) !important;
1202
+ padding-right: var(--snackbar-btn-padding-h) !important;
1203
+ border-radius: var(--snackbar-btn-radius) !important;
1204
+ font-size: var(--snackbar-font-size) !important;
1205
+ font-weight: var(--button-sm-font-weight) !important;
1206
+ color: var(--snackbar-btn-text) !important;
1207
+ background-color: transparent !important;
1208
+ }
1209
+ [data-sonner-toast][data-styled='true'] [data-button]:hover {
1210
+ background-color: var(--snackbar-btn-bg-hover) !important;
1211
+ }
1212
+ [data-sonner-toast][data-styled='true'] [data-button]:active {
1213
+ background-color: var(--snackbar-btn-bg-pressed) !important;
1214
+ }
1215
+
1216
+ /* Cancel variant — same as action but override sonner's default dark rgba bg */
1217
+ [data-sonner-toast][data-styled='true'] [data-cancel] {
1218
+ color: var(--snackbar-btn-text) !important;
1219
+ background-color: transparent !important;
1220
+ }
1221
+
1222
+ /* Close button (X) — pulled into inline flex flow at the far right.
1223
+ Sonner renders it as position:absolute; we override to static + order:999.
1224
+ Sized as button.tsx icon-sm: 32×32, pill radius, 16×16 icon. */
1225
+ [data-sonner-toast][data-styled='true'] [data-close-button] {
1226
+ position: static !important;
1227
+ top: unset !important;
1228
+ left: unset !important;
1229
+ right: unset !important;
1230
+ transform: none !important;
1231
+ order: 999 !important;
1232
+ width: var(--snackbar-btn-icon-btn-width) !important;
1233
+ height: var(--snackbar-btn-height) !important;
1234
+ border-radius: var(--snackbar-btn-radius) !important;
1235
+ background-color: transparent !important;
1236
+ border: none !important;
1237
+ color: var(--snackbar-btn-text) !important;
1238
+ flex-shrink: 0 !important;
1239
+ display: flex !important;
1240
+ align-items: center !important;
1241
+ justify-content: center !important;
1242
+ }
1243
+ [data-sonner-toast][data-styled='true'] [data-close-button]:hover {
1244
+ background-color: var(--snackbar-btn-bg-hover) !important;
1245
+ }
1246
+ [data-sonner-toast][data-styled='true'] [data-close-button]:active {
1247
+ background-color: var(--snackbar-btn-bg-pressed) !important;
1248
+ }
1249
+
1250
+ /* Fail (error) toast — bg-fail is red in both modes (tokens.json: semantic-colour/light+dark).
1251
+ Buttons must always use ghost-static-dark (white text, white-alpha states) regardless of
1252
+ the current theme, because dark mode overrides --snackbar-btn-* to ghost-static-light. */
1253
+ [data-sonner-toast][data-styled='true'][data-type='error'] [data-button],
1254
+ [data-sonner-toast][data-styled='true'][data-type='error'] [data-close-button] {
1255
+ color: var(--button-ghost-static-dark-text) !important;
1256
+ }
1257
+ [data-sonner-toast][data-styled='true'][data-type='error'] [data-button]:hover,
1258
+ [data-sonner-toast][data-styled='true'][data-type='error'] [data-close-button]:hover {
1259
+ background-color: var(--button-ghost-static-dark-bg-hover) !important;
1260
+ }
1261
+ [data-sonner-toast][data-styled='true'][data-type='error'] [data-button]:active,
1262
+ [data-sonner-toast][data-styled='true'][data-type='error'] [data-close-button]:active {
1263
+ background-color: var(--button-ghost-static-dark-bg-pressed) !important;
1264
+ }
1265
+
358
1266
  /* Spinner — pill-style activity indicator */
359
1267
  @keyframes spinner-fade {
360
1268
  0% {
@@ -366,77 +1274,1282 @@
366
1274
  }
367
1275
  }
368
1276
 
369
- /* Typography — Heading scale (Plus Jakarta Sans · Semibold 600 · LS 1.5px) */
1277
+ /* Typography — Heading scale (Inter · ExtraBold 800 · LS -0.02em) */
1278
+ .heading-hero {
1279
+ font-family: var(--font-inter);
1280
+ font-weight: 800;
1281
+ font-size: 64px;
1282
+ line-height: 64px;
1283
+ letter-spacing: -0.02em;
1284
+ }
1285
+
370
1286
  .heading-h1 {
371
- font-family: var(--font-plus-jakarta-sans);
372
- font-weight: 600;
373
- font-size: 72px;
374
- line-height: 72px;
375
- letter-spacing: 1.5px;
376
- text-transform: uppercase;
1287
+ font-family: var(--font-inter);
1288
+ font-weight: 800;
1289
+ font-size: 56px;
1290
+ line-height: 56px;
1291
+ letter-spacing: -0.02em;
377
1292
  }
378
1293
 
379
1294
  .heading-h2 {
380
- font-family: var(--font-plus-jakarta-sans);
381
- font-weight: 600;
382
- font-size: 64px;
383
- line-height: 64px;
384
- letter-spacing: 1.5px;
385
- text-transform: uppercase;
1295
+ font-family: var(--font-inter);
1296
+ font-weight: 800;
1297
+ font-size: 40px;
1298
+ line-height: 40px;
1299
+ letter-spacing: -0.02em;
386
1300
  }
387
1301
 
388
1302
  .heading-h3 {
389
- font-family: var(--font-plus-jakarta-sans);
390
- font-weight: 600;
391
- font-size: 48px;
392
- line-height: 48px;
393
- letter-spacing: 1.5px;
394
- text-transform: uppercase;
1303
+ font-family: var(--font-inter);
1304
+ font-weight: 800;
1305
+ font-size: 32px;
1306
+ line-height: 32px;
1307
+ letter-spacing: -0.02em;
395
1308
  }
396
1309
 
397
1310
  .heading-h4 {
398
- font-family: var(--font-plus-jakarta-sans);
399
- font-weight: 600;
400
- font-size: 40px;
401
- line-height: 40px;
402
- letter-spacing: 1.5px;
403
- text-transform: uppercase;
1311
+ font-family: var(--font-inter);
1312
+ font-weight: 800;
1313
+ font-size: 24px;
1314
+ line-height: 24px;
1315
+ letter-spacing: -0.02em;
1316
+ }
1317
+
1318
+ .heading-h5 {
1319
+ font-family: var(--font-inter);
1320
+ font-weight: 800;
1321
+ font-size: 20px;
1322
+ line-height: 20px;
1323
+ letter-spacing: -0.02em;
404
1324
  }
405
1325
 
1326
+ .heading-h6 {
1327
+ font-family: var(--font-inter);
1328
+ font-weight: 800;
1329
+ font-size: 16px;
1330
+ line-height: 16px;
1331
+ letter-spacing: -0.02em;
1332
+ }
1333
+
1334
+ /* @deprecated — use heading-h4 */
406
1335
  .heading-xs {
407
- font-family: var(--font-plus-jakarta-sans);
408
- font-weight: 600;
1336
+ font-family: var(--font-inter);
1337
+ font-weight: 800;
409
1338
  font-size: 24px;
410
1339
  line-height: 24px;
411
- letter-spacing: 1.5px;
412
- text-transform: uppercase;
1340
+ letter-spacing: -0.02em;
1341
+ }
1342
+
1343
+ /* Typography — Body scale (Inter · Regular 400) */
1344
+ .body-xl {
1345
+ font-family: var(--font-inter);
1346
+ font-weight: 400;
1347
+ font-size: 20px;
1348
+ line-height: 30px;
413
1349
  }
414
1350
 
415
- /* Typography — Body scale (Plus Jakarta Sans · Semibold 600) */
416
1351
  .body-lg {
417
- font-family: var(--font-plus-jakarta-sans);
418
- font-weight: 600;
1352
+ font-family: var(--font-inter);
1353
+ font-weight: 400;
419
1354
  font-size: 18px;
420
- line-height: 28px;
1355
+ line-height: 27px;
421
1356
  }
422
1357
 
423
1358
  .body-md {
424
- font-family: var(--font-plus-jakarta-sans);
425
- font-weight: 600;
1359
+ font-family: var(--font-inter);
1360
+ font-weight: 400;
426
1361
  font-size: 16px;
427
1362
  line-height: 24px;
428
1363
  }
429
1364
 
430
1365
  .body-sm {
431
- font-family: var(--font-plus-jakarta-sans);
432
- font-weight: 600;
433
- font-size: 12px;
434
- line-height: 16px;
1366
+ font-family: var(--font-inter);
1367
+ font-weight: 400;
1368
+ font-size: 14px;
1369
+ line-height: 21px;
435
1370
  }
436
1371
 
437
1372
  .body-xs {
438
- font-family: var(--font-plus-jakarta-sans);
439
- font-weight: 600;
440
- font-size: 8px;
441
- line-height: 12px;
442
- }
1373
+ font-family: var(--font-inter);
1374
+ font-weight: 400;
1375
+ font-size: 12px;
1376
+ line-height: 18px;
1377
+ }
1378
+
1379
+ /* ══════════════════════════════════════════════════════════════
1380
+ LAYER 3 — COMPONENT TOKENS
1381
+ Component-specific tokens. Derived from Figma JSON exports.
1382
+ light_tokens.json (light) + dark_tokens.json (dark).
1383
+ Values reference Layer 1 primitives or Layer 2 semantics only.
1384
+ ══════════════════════════════════════════════════════════════ */
1385
+ :root {
1386
+
1387
+ /* Button */
1388
+ --button-primary-normal-bg-default: var(--primitive-coral-700);
1389
+ --button-primary-normal-bg-hover: var(--primitive-coral-800);
1390
+ --button-primary-normal-bg-pressed: var(--primitive-coral-900);
1391
+ --button-primary-inverse-bg-default: var(--primitive-coral-700);
1392
+ --button-primary-inverse-bg-hover: var(--primitive-coral-800);
1393
+ --button-primary-inverse-bg-pressed: var(--primitive-coral-900);
1394
+ --button-primary-static-light-bg-default: var(--primitive-coral-700);
1395
+ --button-primary-static-light-bg-hover: var(--primitive-coral-800);
1396
+ --button-primary-static-light-bg-pressed: var(--primitive-coral-900);
1397
+ --button-primary-static-dark-bg-default: var(--primitive-coral-700);
1398
+ --button-primary-static-dark-bg-hover: var(--primitive-coral-800);
1399
+ --button-primary-static-dark-bg-pressed: var(--primitive-coral-900);
1400
+ --button-primary-text: var(--primitive-slate-50);
1401
+ --button-primary-icon: var(--primitive-slate-50);
1402
+ --button-secondary-normal-bg-hover: var(--primitive-slate-alpha-100);
1403
+ --button-secondary-normal-bg-pressed: var(--primitive-slate-alpha-200);
1404
+ --button-secondary-normal-border: var(--primitive-slate-1200);
1405
+ --button-secondary-normal-text: var(--primitive-slate-1200);
1406
+ --button-secondary-normal-icon: var(--primitive-slate-1200);
1407
+ --button-secondary-inverse-bg-hover: var(--primitive-white-alpha-100);
1408
+ --button-secondary-inverse-bg-pressed: var(--primitive-white-alpha-200);
1409
+ --button-secondary-inverse-border: var(--primitive-slate-50);
1410
+ --button-secondary-inverse-text: var(--primitive-slate-50);
1411
+ --button-secondary-inverse-icon: var(--primitive-slate-50);
1412
+ --button-secondary-static-light-bg-hover: var(--primitive-slate-alpha-100);
1413
+ --button-secondary-static-light-bg-pressed: var(--primitive-slate-alpha-200);
1414
+ --button-secondary-static-light-border: var(--primitive-slate-1200);
1415
+ --button-secondary-static-light-text: var(--primitive-slate-1200);
1416
+ --button-secondary-static-light-icon: var(--primitive-slate-1200);
1417
+ --button-secondary-static-dark-bg-hover: var(--primitive-white-alpha-100);
1418
+ --button-secondary-static-dark-bg-pressed: var(--primitive-white-alpha-200);
1419
+ --button-secondary-static-dark-border: var(--primitive-slate-50);
1420
+ --button-secondary-static-dark-text: var(--primitive-slate-50);
1421
+ --button-secondary-static-dark-icon: var(--primitive-slate-50);
1422
+ --button-tertiary-normal-bg-default: var(--primitive-slate-100);
1423
+ --button-tertiary-normal-bg-hover: var(--primitive-slate-alpha-100);
1424
+ --button-tertiary-normal-bg-pressed: var(--primitive-slate-alpha-200);
1425
+ --button-tertiary-normal-text: var(--primitive-slate-1200);
1426
+ --button-tertiary-normal-icon: var(--primitive-slate-1200);
1427
+ --button-tertiary-inverse-bg-default: var(--primitive-slate-1000);
1428
+ --button-tertiary-inverse-bg-hover: var(--primitive-white-alpha-100);
1429
+ --button-tertiary-inverse-bg-pressed: var(--primitive-white-alpha-200);
1430
+ --button-tertiary-inverse-text: var(--primitive-slate-50);
1431
+ --button-tertiary-inverse-icon: var(--primitive-slate-50);
1432
+ --button-tertiary-static-light-bg-default: var(--primitive-slate-100);
1433
+ --button-tertiary-static-light-bg-hover: var(--primitive-slate-alpha-100);
1434
+ --button-tertiary-static-light-bg-pressed: var(--primitive-slate-alpha-200);
1435
+ --button-tertiary-static-light-text: var(--primitive-slate-1200);
1436
+ --button-tertiary-static-light-icon: var(--primitive-slate-1200);
1437
+ --button-tertiary-static-dark-bg-default: var(--primitive-slate-1000);
1438
+ --button-tertiary-static-dark-bg-hover: var(--primitive-white-alpha-100);
1439
+ --button-tertiary-static-dark-bg-pressed: var(--primitive-white-alpha-200);
1440
+ --button-tertiary-static-dark-text: var(--primitive-slate-50);
1441
+ --button-tertiary-static-dark-icon: var(--primitive-slate-50);
1442
+ --button-ghost-normal-bg-hover: var(--primitive-slate-alpha-100);
1443
+ --button-ghost-normal-bg-pressed: var(--primitive-slate-alpha-200);
1444
+ --button-ghost-normal-text: var(--primitive-slate-1200);
1445
+ --button-ghost-normal-icon: var(--primitive-slate-1200);
1446
+ --button-ghost-inverse-bg-hover: var(--primitive-white-alpha-100);
1447
+ --button-ghost-inverse-bg-pressed: var(--primitive-white-alpha-200);
1448
+ --button-ghost-inverse-text: var(--primitive-slate-50);
1449
+ --button-ghost-inverse-icon: var(--primitive-slate-50);
1450
+ --button-ghost-static-light-bg-hover: var(--primitive-slate-alpha-100);
1451
+ --button-ghost-static-light-bg-pressed: var(--primitive-slate-alpha-200);
1452
+ --button-ghost-static-light-text: var(--primitive-slate-1200);
1453
+ --button-ghost-static-light-icon: var(--primitive-slate-1200);
1454
+ --button-ghost-static-dark-bg-hover: var(--primitive-white-alpha-100);
1455
+ --button-ghost-static-dark-bg-pressed: var(--primitive-white-alpha-200);
1456
+ --button-ghost-static-dark-text: var(--primitive-slate-50);
1457
+ --button-ghost-static-dark-icon: var(--primitive-slate-50);
1458
+ --button-disabled-normal-bg: var(--primitive-slate-100);
1459
+ --button-disabled-normal-border: var(--primitive-slate-100);
1460
+ --button-disabled-normal-text: var(--primitive-slate-alpha-200);
1461
+ --button-disabled-normal-icon: var(--primitive-slate-alpha-200);
1462
+ --button-disabled-inverse-bg: var(--primitive-slate-1000);
1463
+ --button-disabled-inverse-border: var(--primitive-slate-1000);
1464
+ --button-disabled-inverse-text: var(--primitive-white-alpha-200);
1465
+ --button-disabled-inverse-icon: var(--primitive-white-alpha-200);
1466
+ --button-disabled-static-light-bg: var(--primitive-slate-100);
1467
+ --button-disabled-static-light-border: var(--primitive-slate-100);
1468
+ --button-disabled-static-light-text: var(--primitive-slate-alpha-200);
1469
+ --button-disabled-static-light-icon: var(--primitive-slate-alpha-200);
1470
+ --button-disabled-static-dark-bg: var(--primitive-slate-1000);
1471
+ --button-disabled-static-dark-border: var(--primitive-slate-1000);
1472
+ --button-disabled-static-dark-text: var(--primitive-white-alpha-200);
1473
+ --button-disabled-static-dark-icon: var(--primitive-white-alpha-200);
1474
+
1475
+ /* Field */
1476
+ --field-text-prominent: var(--primitive-slate-1200);
1477
+ --field-text-subtle: var(--primitive-slate-alpha-600);
1478
+ --field-text-disabled: var(--primitive-slate-alpha-300);
1479
+ --field-text-success: var(--primitive-green-900);
1480
+ --field-text-error: var(--primitive-red-900);
1481
+ --field-icon-prominent: var(--primitive-slate-1200);
1482
+ --field-icon-subtle: var(--primitive-slate-alpha-600);
1483
+ --field-icon-disabled: var(--primitive-slate-alpha-300);
1484
+ --field-outline-bg-default: var(--primitive-slate-50);
1485
+ --field-outline-bg-hover: var(--primitive-slate-alpha-75);
1486
+ --field-outline-bg-focus: var(--primitive-slate-50);
1487
+ --field-outline-bg-disabled: var(--primitive-slate-50);
1488
+ --field-outline-border-default: var(--primitive-slate-alpha-200);
1489
+ --field-outline-border-focus: var(--primitive-slate-1200);
1490
+ --field-outline-border-disabled: var(--primitive-slate-alpha-100);
1491
+ --field-outline-border-success: var(--primitive-green-900);
1492
+ --field-outline-border-error: var(--primitive-red-900);
1493
+ --field-fill-bg-default: var(--primitive-slate-alpha-75);
1494
+ --field-fill-bg-hover: var(--primitive-slate-alpha-100);
1495
+ --field-fill-bg-focus: var(--primitive-slate-alpha-75);
1496
+ --field-fill-bg-disabled: var(--primitive-slate-alpha-75);
1497
+ --field-fill-bg-success-default: var(--primitive-green-alpha-100);
1498
+ --field-fill-bg-success-hover: var(--primitive-green-alpha-200);
1499
+ --field-fill-bg-success-focus: var(--primitive-green-alpha-100);
1500
+ --field-fill-bg-error-default: var(--primitive-red-alpha-100);
1501
+ --field-fill-bg-error-hover: var(--primitive-red-alpha-200);
1502
+ --field-fill-bg-error-focus: var(--primitive-red-alpha-100);
1503
+ --field-fill-border-focus: var(--primitive-slate-1200);
1504
+ --field-fill-border-success-focus: var(--primitive-green-900);
1505
+ --field-fill-border-error-focus: var(--primitive-red-900);
1506
+
1507
+ /* Marker */
1508
+ --marker-text-asterisk: var(--primitive-red-900);
1509
+ --marker-text-optional: var(--primitive-slate-alpha-600);
1510
+
1511
+ /* Chip */
1512
+ --chip-bg-hover: var(--primitive-slate-alpha-100);
1513
+ --chip-bg-pressed: var(--primitive-slate-alpha-200);
1514
+ --chip-bg-selected: var(--primitive-slate-alpha-100);
1515
+ --chip-text-prominent: var(--primitive-slate-1200);
1516
+ --chip-text-disabled: var(--primitive-slate-alpha-200);
1517
+ --chip-icon-prominent: var(--primitive-slate-1200);
1518
+ --chip-icon-disabled: var(--primitive-slate-alpha-200);
1519
+ --chip-border-default: var(--primitive-slate-alpha-200);
1520
+ --chip-border-selected: var(--primitive-slate-1200);
1521
+ --chip-border-disabled: var(--primitive-slate-alpha-100);
1522
+
1523
+ /* List Item */
1524
+ --list-item-border-selected: var(--primitive-slate-1200);
1525
+ --list-item-text-prominent: var(--primitive-slate-1200);
1526
+ --list-item-text-disabled: var(--primitive-slate-alpha-200);
1527
+ --list-item-icon-prominent: var(--primitive-slate-1200);
1528
+ --list-item-icon-disabled: var(--primitive-slate-alpha-200);
1529
+ --list-item-flag-placeholder: var(--primitive-slate-alpha-100);
1530
+ --list-item-primary-bg-default: var(--primitive-slate-75);
1531
+ --list-item-primary-bg-hover: var(--primitive-slate-alpha-100);
1532
+ --list-item-primary-bg-pressed: var(--primitive-slate-alpha-200);
1533
+ --list-item-primary-bg-selected: var(--primitive-slate-alpha-100);
1534
+ --list-item-primary-bg-disabled: var(--primitive-slate-75);
1535
+ --list-item-secondary-bg-default: var(--primitive-slate-50);
1536
+ --list-item-secondary-bg-hover: var(--primitive-slate-alpha-100);
1537
+ --list-item-secondary-bg-pressed: var(--primitive-slate-alpha-200);
1538
+ --list-item-secondary-bg-selected: var(--primitive-slate-alpha-100);
1539
+ --list-item-secondary-bg-disabled: var(--primitive-slate-50);
1540
+
1541
+ /* Search Field */
1542
+ --search-field-text-prominent: var(--primitive-slate-1200);
1543
+ --search-field-text-subtle: var(--primitive-slate-alpha-600);
1544
+ --search-field-text-disabled: var(--primitive-slate-alpha-300);
1545
+ --search-field-icon-prominent: var(--primitive-slate-1200);
1546
+ --search-field-icon-subtle: var(--primitive-slate-alpha-600);
1547
+ --search-field-outline-bg-default: var(--primitive-slate-50);
1548
+ --search-field-outline-bg-hover: var(--primitive-slate-alpha-75);
1549
+ --search-field-outline-bg-focus: var(--primitive-slate-50);
1550
+ --search-field-outline-bg-disabled: var(--primitive-slate-50);
1551
+ --search-field-outline-border-default: var(--primitive-slate-alpha-200);
1552
+ --search-field-outline-border-focus: var(--primitive-slate-1200);
1553
+ --search-field-outline-border-disabled: var(--primitive-slate-alpha-100);
1554
+ --search-field-fill-bg-default: var(--primitive-slate-alpha-75);
1555
+ --search-field-fill-bg-hover: var(--primitive-slate-alpha-100);
1556
+ --search-field-fill-bg-focus: var(--primitive-slate-alpha-75);
1557
+ --search-field-fill-bg-disabled: var(--primitive-slate-alpha-75);
1558
+ --search-field-fill-border-focus: var(--primitive-slate-1200);
1559
+
1560
+ /* Dropdown Field */
1561
+ --dropdown-field-text-prominent: var(--primitive-slate-1200);
1562
+ --dropdown-field-text-subtle: var(--primitive-slate-alpha-600);
1563
+ --dropdown-field-text-disabled: var(--primitive-slate-alpha-300);
1564
+ --dropdown-field-text-error: var(--primitive-red-900);
1565
+ --dropdown-field-icon-prominent: var(--primitive-slate-1200);
1566
+ --dropdown-field-icon-subtle: var(--primitive-slate-alpha-600);
1567
+ --dropdown-field-icon-disabled: var(--primitive-slate-alpha-300);
1568
+ --dropdown-field-outline-bg-default: var(--primitive-slate-50);
1569
+ --dropdown-field-outline-bg-hover: var(--primitive-slate-alpha-75);
1570
+ --dropdown-field-outline-bg-focus: var(--primitive-slate-alpha-200);
1571
+ --dropdown-field-outline-bg-disabled: var(--primitive-slate-50);
1572
+ --dropdown-field-outline-border-default: var(--primitive-slate-alpha-200);
1573
+ --dropdown-field-outline-border-disabled: var(--primitive-slate-alpha-100);
1574
+ --dropdown-field-outline-border-focus: var(--primitive-slate-alpha-200);
1575
+ --dropdown-field-outline-border-error: var(--primitive-red-900);
1576
+ --dropdown-field-fill-bg-neutral-default: var(--primitive-slate-alpha-75);
1577
+ --dropdown-field-fill-bg-neutral-hover: var(--primitive-slate-alpha-100);
1578
+ --dropdown-field-fill-bg-neutral-focus: var(--primitive-slate-alpha-200);
1579
+ --dropdown-field-fill-bg-neutral-disabled: var(--primitive-slate-alpha-75);
1580
+ --dropdown-field-fill-bg-error-default: var(--primitive-red-alpha-100);
1581
+ --dropdown-field-fill-bg-error-hover: var(--primitive-red-alpha-200);
1582
+ --dropdown-field-fill-bg-error-focus: var(--primitive-red-alpha-100);
1583
+
1584
+ /* Menu */
1585
+ --menu-background: var(--primitive-slate-50);
1586
+ --menu-border: var(--primitive-slate-alpha-100);
1587
+
1588
+ /* Code Input */
1589
+ --code-input-fill-bg-default: var(--primitive-slate-alpha-75);
1590
+ --code-input-fill-bg-hover: var(--primitive-slate-alpha-100);
1591
+ --code-input-fill-bg-focus: var(--primitive-slate-alpha-75);
1592
+ --code-input-fill-bg-disabled: var(--primitive-slate-alpha-75);
1593
+ --code-input-fill-bg-success: var(--primitive-green-alpha-100);
1594
+ --code-input-fill-bg-error: var(--primitive-red-alpha-100);
1595
+ --code-input-fill-border-focus: var(--primitive-slate-1200);
1596
+ --code-input-fill-border-error: var(--primitive-red-900);
1597
+ --code-input-fill-border-success: var(--primitive-green-900);
1598
+ --code-input-text-prominent: var(--primitive-slate-1200);
1599
+ --code-input-text-subtle: var(--primitive-slate-alpha-600);
1600
+ --code-input-text-disabled: var(--primitive-slate-alpha-300);
1601
+ --code-input-text-success: var(--primitive-green-900);
1602
+ --code-input-text-error: var(--primitive-red-900);
1603
+
1604
+ /* Tab */
1605
+ --tab-text-default: var(--primitive-slate-alpha-600);
1606
+ --tab-text-selected: var(--primitive-slate-1200);
1607
+ --tab-text-disabled: var(--primitive-slate-alpha-300);
1608
+ --tab-bg-hover: var(--primitive-slate-alpha-100);
1609
+ --tab-bg-pressed: var(--primitive-slate-alpha-200);
1610
+ --tab-border-default: var(--primitive-slate-alpha-100);
1611
+ --tab-border-focus: var(--primitive-slate-1200);
1612
+ --tab-border-selected: var(--primitive-slate-1200);
1613
+
1614
+ /* Segmented Control */
1615
+ --segmented-control-text-prominent: var(--primitive-slate-1200);
1616
+ --segmented-control-text-disabled: var(--primitive-slate-alpha-200);
1617
+ --segmented-control-icon-prominent: var(--primitive-slate-1200);
1618
+ --segmented-control-icon-disabled: var(--primitive-slate-alpha-200);
1619
+ --segmented-control-container-bg: var(--primitive-slate-alpha-100);
1620
+ --segmented-control-segment-bg-selected: var(--primitive-slate-50);
1621
+ --segmented-control-segment-bg-hover: var(--primitive-slate-alpha-100);
1622
+ --segmented-control-segment-bg-pressed: var(--primitive-slate-alpha-200);
1623
+
1624
+ /* Tooltip */
1625
+ --tooltip-text-default: var(--primitive-slate-50);
1626
+ --tooltip-text-error: var(--primitive-slate-50);
1627
+ --tooltip-bg-default: var(--primitive-slate-1200);
1628
+ --tooltip-bg-error: var(--primitive-red-900);
1629
+
1630
+ /* Link */
1631
+ --link-primary-default: var(--primitive-coral-700);
1632
+ --link-primary-disabled: var(--primitive-slate-alpha-200);
1633
+ --link-secondary-normal-default: var(--primitive-slate-1200);
1634
+ --link-secondary-normal-disabled: var(--primitive-slate-alpha-200);
1635
+ --link-secondary-inverse-default: var(--primitive-slate-50);
1636
+ --link-secondary-inverse-disabled: var(--primitive-white-alpha-200);
1637
+ --link-secondary-static-light-default: var(--primitive-slate-1200);
1638
+ --link-secondary-static-light-disabled: var(--primitive-slate-alpha-200);
1639
+ --link-secondary-static-dark-default: var(--primitive-slate-50);
1640
+ --link-secondary-static-dark-disabled: var(--primitive-white-alpha-200);
1641
+
1642
+ /* Tag */
1643
+ --tag-text-neutral: var(--primitive-slate-1200);
1644
+ --tag-text-red: var(--primitive-red-900);
1645
+ --tag-text-yellow: var(--primitive-yellow-900);
1646
+ --tag-text-green: var(--primitive-green-900);
1647
+ --tag-text-blue: var(--primitive-blue-900);
1648
+ --tag-icon-default: var(--primitive-slate-1200);
1649
+ --tag-icon-red: var(--primitive-red-900);
1650
+ --tag-icon-yellow: var(--primitive-yellow-900);
1651
+ --tag-icon-green: var(--primitive-green-900);
1652
+ --tag-icon-blue: var(--primitive-blue-900);
1653
+ --tag-outline-border-neutral: var(--primitive-slate-alpha-200);
1654
+ --tag-outline-border-red: var(--primitive-red-900);
1655
+ --tag-outline-border-yellow: var(--primitive-yellow-900);
1656
+ --tag-outline-border-green: var(--primitive-green-900);
1657
+ --tag-outline-border-blue: var(--primitive-blue-900);
1658
+ --tag-fill-bg-neutral: var(--primitive-slate-alpha-100);
1659
+ --tag-fill-bg-red: var(--primitive-red-alpha-100);
1660
+ --tag-fill-bg-yellow: var(--primitive-yellow-alpha-100);
1661
+ --tag-fill-bg-green: var(--primitive-green-alpha-100);
1662
+ --tag-fill-bg-blue: var(--primitive-blue-alpha-100);
1663
+
1664
+ /* Chip */
1665
+ --chip-text-prominent: var(--primitive-slate-1200);
1666
+ --chip-text-disabled: var(--primitive-slate-alpha-200);
1667
+ --chip-border-default: var(--primitive-slate-alpha-200);
1668
+ --chip-border-selected: var(--primitive-slate-1200);
1669
+ --chip-border-disabled: var(--primitive-slate-alpha-100);
1670
+ --chip-bg-hover: var(--primitive-slate-alpha-100);
1671
+ --chip-bg-pressed: var(--primitive-slate-alpha-200);
1672
+ --chip-bg-selected: var(--primitive-slate-alpha-100);
1673
+ --chip-icon-prominent: var(--primitive-slate-1200);
1674
+ --chip-icon-disabled: var(--primitive-slate-alpha-200);
1675
+
1676
+ /* Snackbar */
1677
+ --snackbar-bg-default: var(--primitive-slate-1200);
1678
+ --snackbar-bg-fail: var(--primitive-red-900);
1679
+ --snackbar-text: var(--primitive-slate-50);
1680
+ --snackbar-text-fail: var(--primitive-slate-50);
1681
+ --snackbar-icon: var(--primitive-slate-50);
1682
+ --snackbar-icon-fail: var(--primitive-slate-50);
1683
+
1684
+ /* Loading Spinner */
1685
+ --loading-spinner-bg-default: var(--primitive-coral-700);
1686
+
1687
+ /* Badge */
1688
+ --badge-text-default: var(--primitive-slate-50);
1689
+ --badge-bg-number: var(--primitive-red-900);
1690
+ --badge-bg-status-red: var(--primitive-red-900);
1691
+ --badge-bg-status-yellow: var(--primitive-yellow-900);
1692
+ --badge-bg-status-green: var(--primitive-green-900);
1693
+ --badge-bg-status-blue: var(--primitive-blue-900);
1694
+
1695
+ /* Section Message */
1696
+ --section-message-title: var(--primitive-slate-1200);
1697
+ --section-message-description: var(--primitive-slate-alpha-900);
1698
+ --section-message-fill-bg-danger: var(--primitive-red-alpha-200);
1699
+ --section-message-fill-bg-default: var(--primitive-slate-alpha-100);
1700
+ --section-message-fill-bg-information: var(--primitive-blue-alpha-200);
1701
+ --section-message-fill-bg-success: var(--primitive-green-alpha-200);
1702
+ --section-message-fill-bg-warning: var(--primitive-yellow-alpha-200);
1703
+ --section-message-icon-danger: var(--primitive-red-900);
1704
+ --section-message-icon-warning: var(--primitive-yellow-900);
1705
+ --section-message-icon-success: var(--primitive-green-900);
1706
+ --section-message-icon-information: var(--primitive-blue-900);
1707
+ --section-message-icon-close: var(--primitive-slate-1200);
1708
+
1709
+ /* Pagination */
1710
+ --pagination-bg-number-default: var(--primitive-slate-50);
1711
+ --pagination-bg-number-hover: var(--primitive-slate-alpha-100);
1712
+ --pagination-bg-number-selected: var(--primitive-slate-alpha-100);
1713
+ --pagination-bg-number-pressed: var(--primitive-slate-alpha-200);
1714
+ --pagination-bg-dot-default: var(--primitive-slate-alpha-100);
1715
+ --pagination-bg-dot-hover: var(--primitive-slate-alpha-200);
1716
+ --pagination-bg-dot-selected: var(--primitive-slate-1200);
1717
+ --pagination-border-number-selected: var(--primitive-slate-1200);
1718
+ --pagination-text-default: var(--primitive-slate-1200);
1719
+ --pagination-text-disabled: var(--primitive-slate-alpha-200);
1720
+
1721
+ /* Notification */
1722
+ --notification-title-banner: var(--primitive-slate-50);
1723
+ --notification-title-item: var(--primitive-slate-1200);
1724
+ --notification-description-banner: var(--primitive-white-alpha-900);
1725
+ --notification-description-item-unread: var(--primitive-slate-1200);
1726
+ --notification-description-item-read: var(--primitive-slate-alpha-900);
1727
+ --notification-date-time-item: var(--primitive-slate-alpha-600);
1728
+ --notification-icon-delete: var(--primitive-red-900);
1729
+ --notification-text-delete: var(--primitive-red-900);
1730
+ --notification-icon-read-unread: var(--primitive-blue-900);
1731
+ --notification-text-read-unread: var(--primitive-blue-900);
1732
+ --notification-icon-normal-information: var(--primitive-blue-900);
1733
+ --notification-icon-normal-success: var(--primitive-green-900);
1734
+ --notification-icon-normal-warning: var(--primitive-yellow-900);
1735
+ --notification-icon-normal-danger: var(--primitive-red-900);
1736
+ --notification-icon-inverse-information: var(--primitive-blue-500);
1737
+ --notification-icon-inverse-success: var(--primitive-green-500);
1738
+ --notification-icon-inverse-warning: var(--primitive-yellow-500);
1739
+ --notification-icon-inverse-danger: var(--primitive-red-500);
1740
+ --notification-bg-divider: var(--primitive-slate-alpha-100);
1741
+ --notification-bg-icon-information: var(--primitive-blue-alpha-200);
1742
+ --notification-bg-icon-success: var(--primitive-green-alpha-200);
1743
+ --notification-bg-icon-warning: var(--primitive-yellow-alpha-200);
1744
+ --notification-bg-icon-danger: var(--primitive-red-alpha-200);
1745
+ --notification-bg-banner: var(--primitive-slate-1200);
1746
+ --notification-bg-item-default: var(--primitive-slate-50);
1747
+ --notification-bg-item-hover: var(--primitive-slate-alpha-100);
1748
+ --notification-bg-button-default: var(--primitive-slate-alpha-75);
1749
+ --notification-bg-button-press: var(--primitive-slate-alpha-100);
1750
+
1751
+ /* Notification size tokens (from component-notification.mode-1) */
1752
+ --notification-padding-vertical: 16px;
1753
+ --notification-padding-horizontal: 16px;
1754
+ --notification-min-width-banner: 256px;
1755
+ --notification-max-width-banner: 440px;
1756
+ --notification-gap-icon-content: 16px; /* size-gap-3 */
1757
+ --notification-radius: 16px;
1758
+ --notification-width-button: 80px;
1759
+ --notification-gap-sm: 4px; /* size-gap */
1760
+ --notification-height-item: 99px;
1761
+ --notification-gap-md: 8px; /* size-gap-2 */
1762
+ --notification-width-divider: 1px;
1763
+ --notification-size-icon-container: 32px; /* size-width-height-icon-container-2 (item) */
1764
+ --notification-radius-icon: 999px; /* size-radius-2 */
1765
+ /* size-width-height-icon-contianer(sic) = 24px — banner icon container */
1766
+ --notification-size-icon-banner: 24px;
1767
+ /* Icon SVG size — both banner and item use 20px per Figma */
1768
+ --notification-size-icon: 20px;
1769
+ /* Font sizes from tokens (size-12/14/16) */
1770
+ --notification-font-size-xs: 12px; /* size-font-size-12 */
1771
+ --notification-font-size-sm: 14px; /* size-font-size-14 */
1772
+ --notification-font-size-md: 16px; /* size-font-size-16 */
1773
+ /* Font weights */
1774
+ --notification-font-weight-regular: 400; /* font-regular */
1775
+ --notification-font-weight-medium: 500; /* font-medium */
1776
+ --notification-font-weight-semibold: 600; /* font-semibold */
1777
+
1778
+ /* Bottom Sheet */
1779
+ --bottom-sheet-bg-sheet: var(--primitive-slate-50);
1780
+ --bottom-sheet-bg-handle-bar: var(--primitive-black-alpha-300);
1781
+ --bottom-sheet-bg-handle-default: var(--primitive-slate-50);
1782
+ --bottom-sheet-bg-handle-pressed: var(--primitive-black-alpha-100);
1783
+
1784
+ /* Progress Bar */
1785
+ --progress-bar-bg-normal-track-default: var(--primitive-slate-100);
1786
+ --progress-bar-bg-normal-progress-default: var(--primitive-slate-1200);
1787
+ --progress-bar-bg-normal-progress-green: var(--primitive-green-700);
1788
+ --progress-bar-bg-normal-progress-red: var(--primitive-red-700);
1789
+ --progress-bar-bg-normal-progress-yellow: var(--primitive-yellow-700);
1790
+ --progress-bar-bg-normal-progress-blue: var(--primitive-blue-700);
1791
+ --progress-bar-bg-inverse-track-default: var(--primitive-slate-900);
1792
+ --progress-bar-bg-inverse-progress-default: var(--primitive-slate-50);
1793
+ --progress-bar-bg-inverse-progress-green: var(--primitive-green-500);
1794
+ --progress-bar-bg-inverse-progress-red: var(--primitive-red-500);
1795
+ --progress-bar-bg-inverse-progress-yellow: var(--primitive-yellow-500);
1796
+ --progress-bar-bg-inverse-progress-blue: var(--primitive-blue-500);
1797
+ --progress-bar-bg-static-light-track-default: var(--primitive-slate-100);
1798
+ --progress-bar-bg-static-light-progress-default: var(--primitive-slate-1200);
1799
+ --progress-bar-bg-static-light-progress-green: var(--primitive-green-700);
1800
+ --progress-bar-bg-static-light-progress-red: var(--primitive-red-700);
1801
+ --progress-bar-bg-static-light-progress-yellow: var(--primitive-yellow-700);
1802
+ --progress-bar-bg-static-light-progress-blue: var(--primitive-blue-700);
1803
+ --progress-bar-bg-static-dark-track-default: var(--primitive-slate-900);
1804
+ --progress-bar-bg-static-dark-progress-default: var(--primitive-slate-50);
1805
+ --progress-bar-bg-static-dark-progress-green: var(--primitive-green-500);
1806
+ --progress-bar-bg-static-dark-progress-red: var(--primitive-red-500);
1807
+ --progress-bar-bg-static-dark-progress-yellow: var(--primitive-yellow-500);
1808
+ --progress-bar-bg-static-dark-progress-blue: var(--primitive-blue-500);
1809
+
1810
+ /* Search Field sizes */
1811
+ --search-field-radius: 999px;
1812
+ --search-field-font-weight: 400;
1813
+ --search-field-sm-height: 40px;
1814
+ --search-field-sm-padding-horizontal: 16px;
1815
+ --search-field-sm-gap: 8px;
1816
+ --search-field-sm-font-size: 14px;
1817
+ --search-field-sm-icon-size: 20px;
1818
+ --search-field-sm-border-width-focus: 1.5px;
1819
+ --search-field-md-height: 48px;
1820
+ --search-field-md-padding-horizontal: 20px;
1821
+ --search-field-md-gap: 8px;
1822
+ --search-field-md-font-size: 16px;
1823
+ --search-field-md-icon-size: 24px;
1824
+ --search-field-md-border-width-focus: 1.5px;
1825
+ }
1826
+
1827
+ /* ══════════════════════════════════════════════════════════════
1828
+ LAYER 1 — PRIMITIVE SIZE SCALE
1829
+ Raw px values. Sourced from component token audit.
1830
+ These are public API — but use semantic tokens in components,
1831
+ not primitives directly. Renaming any token here is a breaking change.
1832
+ ══════════════════════════════════════════════════════════════ */
1833
+ :root {
1834
+ --primitive-size-1: 1px;
1835
+ --primitive-size-1-5: 1.5px;
1836
+ --primitive-size-4: 4px;
1837
+ --primitive-size-6: 6px;
1838
+ --primitive-size-8: 8px;
1839
+ --primitive-size-12: 12px;
1840
+ --primitive-size-14: 14px;
1841
+ --primitive-size-16: 16px;
1842
+ --primitive-size-18: 18px;
1843
+ --primitive-size-20: 20px;
1844
+ --primitive-size-24: 24px;
1845
+ --primitive-size-32: 32px;
1846
+ --primitive-size-40: 40px;
1847
+ --primitive-size-48: 48px;
1848
+ --primitive-size-56: 56px;
1849
+ --primitive-size-64: 64px;
1850
+ --primitive-size-72: 72px;
1851
+ --primitive-size-80: 80px;
1852
+ --primitive-size-96: 96px;
1853
+ --primitive-size-100: 100px;
1854
+ --primitive-size-108: 108px;
1855
+ --primitive-size-124: 124px;
1856
+ --primitive-size-240: 240px;
1857
+ --primitive-size-999: 999px;
1858
+ }
1859
+
1860
+ /* ══════════════════════════════════════════════════════════════
1861
+ LAYER 2 — SEMANTIC SIZE TOKENS
1862
+ Purpose-based aliases. Reference primitives only.
1863
+ These are public API — rename = breaking change for consumers.
1864
+ ══════════════════════════════════════════════════════════════ */
1865
+ :root {
1866
+ /* Border widths */
1867
+ --semantic-size-border-1: var(--primitive-size-1);
1868
+ --semantic-size-border-1-5: var(--primitive-size-1-5);
1869
+
1870
+ /* Corner radii */
1871
+ --semantic-size-radius-4: var(--primitive-size-4);
1872
+ --semantic-size-radius-8: var(--primitive-size-8);
1873
+ --semantic-size-radius-999: var(--primitive-size-999);
1874
+
1875
+ /* Spacing — padding, gap, margin */
1876
+ --semantic-size-spacing-4: var(--primitive-size-4);
1877
+ --semantic-size-spacing-6: var(--primitive-size-6);
1878
+ --semantic-size-spacing-8: var(--primitive-size-8);
1879
+ --semantic-size-spacing-12: var(--primitive-size-12);
1880
+ --semantic-size-spacing-16: var(--primitive-size-16);
1881
+ --semantic-size-spacing-20: var(--primitive-size-20);
1882
+
1883
+ /* Fixed dimensions — height, width, min-width, icon-size, dot-size, font-size */
1884
+ --semantic-size-width-height-4: var(--primitive-size-4);
1885
+ --semantic-size-width-height-8: var(--primitive-size-8);
1886
+ --semantic-size-width-height-12: var(--primitive-size-12);
1887
+ --semantic-size-width-height-14: var(--primitive-size-14);
1888
+ --semantic-size-width-height-16: var(--primitive-size-16);
1889
+ --semantic-size-width-height-18: var(--primitive-size-18);
1890
+ --semantic-size-width-height-20: var(--primitive-size-20);
1891
+ --semantic-size-width-height-24: var(--primitive-size-24);
1892
+ --semantic-size-width-height-32: var(--primitive-size-32);
1893
+ --semantic-size-width-height-40: var(--primitive-size-40);
1894
+ --semantic-size-width-height-48: var(--primitive-size-48);
1895
+ --semantic-size-width-height-56: var(--primitive-size-56);
1896
+ --semantic-size-width-height-64: var(--primitive-size-64);
1897
+ --semantic-size-width-height-72: var(--primitive-size-72);
1898
+ --semantic-size-width-height-80: var(--primitive-size-80);
1899
+ --semantic-size-width-height-96: var(--primitive-size-96);
1900
+ --semantic-size-width-height-100: var(--primitive-size-100);
1901
+ --semantic-size-width-height-108: var(--primitive-size-108);
1902
+ --semantic-size-width-height-124: var(--primitive-size-124);
1903
+ --semantic-size-width-height-240: var(--primitive-size-240);
1904
+ }
1905
+
1906
+ /* ══════════════════════════════════════════════════════════════
1907
+ LAYER 3 — COMPONENT SIZE TOKENS
1908
+ Component-specific sizes. Reference semantic layer only.
1909
+ ══════════════════════════════════════════════════════════════ */
1910
+ :root {
1911
+ /* ── Button ── */
1912
+ --button-sm-height: var(--semantic-size-width-height-32);
1913
+ --button-sm-padding-horizontal: var(--semantic-size-spacing-12);
1914
+ --button-sm-min-width: var(--semantic-size-width-height-64);
1915
+ --button-sm-gap: var(--semantic-size-spacing-8);
1916
+ --button-sm-font-size: var(--semantic-size-width-height-14);
1917
+ --button-sm-font-weight: 600;
1918
+ --button-sm-radius: var(--semantic-size-radius-999);
1919
+ --button-sm-border-width: var(--semantic-size-border-1-5);
1920
+ --button-sm-icon-size: var(--semantic-size-width-height-32);
1921
+
1922
+ --button-md-height: var(--semantic-size-width-height-40);
1923
+ --button-md-padding-horizontal: var(--semantic-size-spacing-16);
1924
+ --button-md-min-width: var(--semantic-size-width-height-80);
1925
+ --button-md-gap: var(--semantic-size-spacing-8);
1926
+ --button-md-font-size: var(--semantic-size-width-height-16);
1927
+ --button-md-font-weight: 600;
1928
+ --button-md-radius: var(--semantic-size-radius-999);
1929
+ --button-md-border-width: var(--semantic-size-border-1-5);
1930
+ --button-md-icon-size: var(--semantic-size-width-height-40);
1931
+
1932
+ --button-lg-height: var(--semantic-size-width-height-48);
1933
+ --button-lg-padding-horizontal: var(--semantic-size-spacing-20);
1934
+ --button-lg-min-width: var(--semantic-size-width-height-96);
1935
+ --button-lg-gap: var(--semantic-size-spacing-8);
1936
+ --button-lg-font-size: var(--semantic-size-width-height-18);
1937
+ --button-lg-font-weight: 600;
1938
+ --button-lg-radius: var(--semantic-size-radius-999);
1939
+ --button-lg-border-width: var(--semantic-size-border-1-5);
1940
+ --button-lg-icon-size: var(--semantic-size-width-height-48);
1941
+
1942
+ /* ── Badge ── */
1943
+ --badge-sm-height: var(--semantic-size-width-height-20);
1944
+ --badge-sm-padding-horizontal: var(--semantic-size-spacing-6);
1945
+ --badge-sm-radius: var(--semantic-size-radius-999);
1946
+ --badge-sm-min-width: var(--semantic-size-width-height-20);
1947
+ --badge-sm-dot-size: var(--semantic-size-width-height-8);
1948
+ --badge-sm-font-size: var(--semantic-size-width-height-12);
1949
+
1950
+ --badge-md-height: var(--semantic-size-width-height-24);
1951
+ --badge-md-padding-horizontal: var(--semantic-size-spacing-6);
1952
+ --badge-md-radius: var(--semantic-size-radius-999);
1953
+ --badge-md-min-width: var(--semantic-size-width-height-24);
1954
+ --badge-md-dot-size: var(--semantic-size-width-height-16);
1955
+ --badge-md-font-size: var(--semantic-size-width-height-14);
1956
+ --badge-sm-max-width: 36px;
1957
+ --badge-md-max-width: 44px;
1958
+ --badge-font-weight: 500;
1959
+
1960
+ /* ── Tab ── */
1961
+ --tab-sm-height: var(--semantic-size-width-height-32);
1962
+ --tab-sm-padding-horizontal: var(--semantic-size-spacing-12);
1963
+ --tab-sm-min-width: var(--semantic-size-width-height-72);
1964
+ --tab-sm-font-size: var(--semantic-size-width-height-14);
1965
+ --tab-sm-font-weight-default: 400;
1966
+ --tab-sm-font-weight-selected: 600;
1967
+ --tab-sm-radius: var(--semantic-size-radius-4);
1968
+ --tab-sm-border-width: var(--semantic-size-border-1);
1969
+
1970
+ --tab-md-height: var(--semantic-size-width-height-40);
1971
+ --tab-md-padding-horizontal: var(--semantic-size-spacing-16);
1972
+ --tab-md-min-width: var(--semantic-size-width-height-80);
1973
+ --tab-md-font-size: var(--semantic-size-width-height-16);
1974
+ --tab-md-font-weight-default: 400;
1975
+ --tab-md-font-weight-selected: 600;
1976
+ --tab-md-radius: var(--semantic-size-radius-4);
1977
+ --tab-md-border-width: var(--semantic-size-border-1);
1978
+
1979
+ --tab-lg-height: var(--semantic-size-width-height-48);
1980
+ --tab-lg-padding-horizontal: var(--semantic-size-spacing-20);
1981
+ --tab-lg-min-width: var(--semantic-size-width-height-96);
1982
+ --tab-lg-font-size: var(--semantic-size-width-height-18);
1983
+ --tab-lg-font-weight-default: 400;
1984
+ --tab-lg-font-weight-selected: 600;
1985
+ --tab-lg-radius: var(--semantic-size-radius-4);
1986
+ --tab-lg-border-width: var(--semantic-size-border-1);
1987
+
1988
+ /* ── Progress Bar ── */
1989
+ --progress-sm-height: var(--semantic-size-width-height-4);
1990
+ --progress-sm-radius: var(--semantic-size-radius-999);
1991
+ --progress-md-height: var(--semantic-size-width-height-8);
1992
+ --progress-md-radius: var(--semantic-size-radius-999);
1993
+
1994
+ /* ── Link ── */
1995
+ --link-sm-font-size: var(--semantic-size-width-height-12);
1996
+ --link-sm-font-weight: 500;
1997
+ --link-md-font-size: var(--semantic-size-width-height-14);
1998
+ --link-md-font-weight: 500;
1999
+ --link-lg-font-size: var(--semantic-size-width-height-16);
2000
+ --link-lg-font-weight: 500;
2001
+
2002
+ /* ── Pagination ── */
2003
+ --pagination-number-height: var(--semantic-size-width-height-32);
2004
+ --pagination-number-width: var(--semantic-size-width-height-32);
2005
+ --pagination-radius: var(--semantic-size-radius-999);
2006
+ --pagination-gap: var(--semantic-size-spacing-8);
2007
+ --pagination-font-size: var(--semantic-size-width-height-14);
2008
+ --pagination-font-default-weight: 400;
2009
+ --pagination-font-selected-weight: 500;
2010
+ --pagination-dot-size: var(--semantic-size-width-height-8);
2011
+ --pagination-border-width-selected: var(--semantic-size-border-1-5);
2012
+
2013
+ /* ── Tooltip ── */
2014
+ --tooltip-radius: var(--semantic-size-radius-8);
2015
+ --tooltip-padding-horizontal: var(--semantic-size-spacing-12);
2016
+ --tooltip-padding-vertical: var(--semantic-size-spacing-8);
2017
+ --tooltip-font-size: var(--semantic-size-width-height-12);
2018
+ --tooltip-font-weight: 500;
2019
+ --tooltip-min-width: var(--semantic-size-width-height-48);
2020
+ --tooltip-max-width: var(--semantic-size-width-height-240);
2021
+
2022
+ /* ── Chip ── */
2023
+ --chip-sm-height: var(--semantic-size-width-height-24);
2024
+ --chip-sm-padding-horizontal: var(--semantic-size-spacing-8);
2025
+ --chip-sm-font-size: var(--semantic-size-width-height-12);
2026
+ --chip-sm-font-weight: 500;
2027
+ --chip-sm-gap: var(--semantic-size-spacing-4);
2028
+ --chip-sm-radius: var(--semantic-size-radius-999);
2029
+ --chip-sm-border-width: var(--semantic-size-border-1);
2030
+ --chip-sm-border-width-selected: var(--semantic-size-border-1-5);
2031
+
2032
+ --chip-md-height: var(--semantic-size-width-height-32);
2033
+ --chip-md-padding-horizontal: var(--semantic-size-spacing-12);
2034
+ --chip-md-font-size: var(--semantic-size-width-height-14);
2035
+ --chip-md-font-weight: 500;
2036
+ --chip-md-gap: var(--semantic-size-spacing-8);
2037
+ --chip-md-radius: var(--semantic-size-radius-999);
2038
+ --chip-md-border-width: var(--semantic-size-border-1);
2039
+ --chip-md-border-width-selected: var(--semantic-size-border-1-5);
2040
+
2041
+ --chip-lg-height: var(--semantic-size-width-height-40);
2042
+ --chip-lg-padding-horizontal: var(--semantic-size-spacing-16);
2043
+ --chip-lg-font-size: var(--semantic-size-width-height-16);
2044
+ --chip-lg-font-weight: 500;
2045
+ --chip-lg-gap: var(--semantic-size-spacing-8);
2046
+ --chip-lg-radius: var(--semantic-size-radius-999);
2047
+ --chip-lg-border-width: var(--semantic-size-border-1);
2048
+ --chip-lg-border-width-selected: var(--semantic-size-border-1-5);
2049
+
2050
+ /* ── Tag ── */
2051
+ --tag-sm-height: var(--semantic-size-width-height-24);
2052
+ --tag-sm-padding-horizontal: var(--semantic-size-spacing-8);
2053
+ --tag-sm-gap: var(--semantic-size-spacing-4);
2054
+ --tag-sm-font-size: var(--semantic-size-width-height-12);
2055
+ --tag-sm-font-weight: 500;
2056
+ --tag-sm-radius: var(--semantic-size-radius-4);
2057
+ --tag-sm-min-width: var(--semantic-size-width-height-32);
2058
+ --tag-sm-icon-size: 16px;
2059
+
2060
+ --tag-md-height: var(--semantic-size-width-height-32);
2061
+ --tag-md-padding-horizontal: var(--semantic-size-spacing-12);
2062
+ --tag-md-gap: var(--semantic-size-spacing-8);
2063
+ --tag-md-font-size: var(--semantic-size-width-height-14);
2064
+ --tag-md-font-weight: 500;
2065
+ --tag-md-radius: var(--semantic-size-radius-4);
2066
+ --tag-md-min-width: var(--semantic-size-width-height-40);
2067
+ --tag-md-icon-size: 18px;
2068
+
2069
+ /* ── Chip size tokens ── */
2070
+ --chip-radius: var(--semantic-size-radius-999);
2071
+ --chip-border-width: 1px;
2072
+ --chip-border-width-selected: 1.5px;
2073
+
2074
+ --chip-sm-height: var(--semantic-size-width-height-24);
2075
+ --chip-sm-padding-horizontal: var(--semantic-size-spacing-8);
2076
+ --chip-sm-font-size: var(--semantic-size-width-height-12);
2077
+ --chip-sm-gap: var(--semantic-size-spacing-4);
2078
+ --chip-sm-icon-size: var(--semantic-size-width-height-16);
2079
+
2080
+ --chip-md-height: var(--semantic-size-width-height-32);
2081
+ --chip-md-padding-horizontal: var(--semantic-size-spacing-12);
2082
+ --chip-md-font-size: var(--semantic-size-width-height-14);
2083
+ --chip-md-gap: var(--semantic-size-spacing-8);
2084
+ --chip-md-icon-size: var(--semantic-size-width-height-20);
2085
+
2086
+ --chip-lg-height: var(--semantic-size-width-height-40);
2087
+ --chip-lg-padding-horizontal: var(--semantic-size-spacing-16);
2088
+ --chip-lg-font-size: var(--semantic-size-width-height-16);
2089
+ --chip-lg-gap: var(--semantic-size-spacing-8);
2090
+ --chip-lg-icon-size: var(--semantic-size-width-height-24);
2091
+
2092
+ /* ── Loading Spinner ── */
2093
+ --spinner-radius: var(--semantic-size-radius-999);
2094
+
2095
+ /* ── Field sizes ── */
2096
+ --field-height: var(--semantic-size-width-height-56);
2097
+ --field-sm-height: var(--semantic-size-width-height-32);
2098
+ --field-md-height: var(--semantic-size-width-height-40);
2099
+ --field-lg-height: var(--semantic-size-width-height-56);
2100
+ --field-radius: var(--semantic-size-radius-8);
2101
+ --field-font-size-md: var(--semantic-size-width-height-16);
2102
+ --field-font-size-sm: var(--semantic-size-width-height-12);
2103
+ --field-font-weight: 400;
2104
+ --field-border-width: var(--semantic-size-border-1);
2105
+ --field-border-width-focus: var(--semantic-size-border-1-5);
2106
+ --field-spacing-xs: var(--semantic-size-spacing-4);
2107
+ --field-spacing-sm: var(--semantic-size-spacing-8);
2108
+ --field-spacing-md: var(--semantic-size-spacing-16);
2109
+ --field-min-width: var(--semantic-size-width-height-100);
2110
+
2111
+ /* ── Search Field ── */
2112
+ --search-field-sm-height: var(--semantic-size-width-height-40);
2113
+ --search-field-sm-padding-horizontal: var(--semantic-size-spacing-16);
2114
+ --search-field-sm-gap: var(--semantic-size-spacing-8);
2115
+ --search-field-sm-font-size: var(--semantic-size-width-height-14);
2116
+ --search-field-sm-radius: var(--semantic-size-radius-999);
2117
+ --search-field-sm-border-width: var(--semantic-size-border-1);
2118
+ --search-field-sm-border-width-focus: var(--semantic-size-border-1-5);
2119
+
2120
+ --search-field-md-height: var(--semantic-size-width-height-48);
2121
+ --search-field-md-padding-horizontal: var(--semantic-size-spacing-20);
2122
+ --search-field-md-gap: var(--semantic-size-spacing-8);
2123
+ --search-field-md-font-size: var(--semantic-size-width-height-16);
2124
+ --search-field-md-radius: var(--semantic-size-radius-999);
2125
+ --search-field-md-border-width: var(--semantic-size-border-1);
2126
+ --search-field-md-border-width-focus: var(--semantic-size-border-1-5);
2127
+
2128
+ /* ── Segmented Control ── */
2129
+ --segmented-md-container-height: var(--semantic-size-width-height-40);
2130
+ --segmented-md-container-radius: var(--semantic-size-radius-999);
2131
+ --segmented-md-container-padding: var(--semantic-size-spacing-4);
2132
+ --segmented-md-container-gap: var(--semantic-size-spacing-4);
2133
+ --segmented-md-container-min-width: var(--semantic-size-width-height-108);
2134
+ --segmented-md-segment-height: var(--semantic-size-width-height-32);
2135
+ --segmented-md-segment-radius: var(--semantic-size-radius-999);
2136
+ --segmented-md-segment-padding: var(--semantic-size-spacing-12);
2137
+ --segmented-md-segment-min-width: var(--semantic-size-width-height-48);
2138
+ --segmented-md-font-size: var(--semantic-size-width-height-14);
2139
+ --segmented-md-font-weight-default: 400;
2140
+ --segmented-md-font-weight-selected: 600;
2141
+
2142
+ --segmented-lg-container-height: var(--semantic-size-width-height-48);
2143
+ --segmented-lg-container-radius: var(--semantic-size-radius-999);
2144
+ --segmented-lg-container-padding: var(--semantic-size-spacing-4);
2145
+ --segmented-lg-container-gap: var(--semantic-size-spacing-4);
2146
+ --segmented-lg-container-min-width: var(--semantic-size-width-height-124);
2147
+ --segmented-lg-segment-height: var(--semantic-size-width-height-40);
2148
+ --segmented-lg-segment-radius: var(--semantic-size-radius-999);
2149
+ --segmented-lg-segment-padding: var(--semantic-size-spacing-16);
2150
+ --segmented-lg-segment-min-width: var(--semantic-size-width-height-56);
2151
+ --segmented-lg-font-size: var(--semantic-size-width-height-16);
2152
+ --segmented-lg-font-weight-default: 400;
2153
+ --segmented-lg-font-weight-selected: 600;
2154
+ /* Elevation shadow for selected segment — layer-1: y=1 blur=2 (4% black), layer-2: y=2 blur=6 (8% black) */
2155
+ --segmented-elevation-selected: 0px 1px 2px 0px var(--primitive-black-alpha-75), 0px 2px 6px 0px var(--primitive-black-alpha-100);
2156
+
2157
+ /* Section Message size tokens */
2158
+ --section-message-radius: 16px;
2159
+ --section-message-padding-horizontal: var(--semantic-size-spacing-16);
2160
+ --section-message-padding-vertical: var(--semantic-size-spacing-16);
2161
+ --section-message-gap-horizontal: var(--semantic-size-spacing-8);
2162
+ --section-message-gap-vertical-1: var(--semantic-size-spacing-8);
2163
+ --section-message-sm-gap-vertical-2: 14px;
2164
+ --section-message-md-gap-vertical-2: 12px;
2165
+ --section-message-padding-vertical-2: 1.5px;
2166
+ --section-message-sm-font-size-message: var(--semantic-size-width-height-14);
2167
+ --section-message-sm-font-size-title: var(--semantic-size-width-height-16);
2168
+ --section-message-sm-icon-size: var(--semantic-size-width-height-20);
2169
+ --section-message-md-font-size-message: var(--semantic-size-width-height-16);
2170
+ --section-message-md-font-size-title: var(--semantic-size-width-height-18);
2171
+ --section-message-md-icon-size: 22px;
2172
+
2173
+ /* Snackbar size tokens (component-snackbar/mode-1) */
2174
+ --snackbar-max-width: 560px; /* ⚠ no semantic-size-560 */
2175
+ --snackbar-min-width: 320px; /* ⚠ no semantic-size-320 */
2176
+ --snackbar-height: var(--semantic-size-width-height-48);
2177
+ --snackbar-radius: var(--semantic-size-radius-8);
2178
+ --snackbar-font-size: var(--semantic-size-width-height-14);
2179
+ --snackbar-font-weight: 400; /* ⚠ no semantic var for weight-400 */
2180
+ --snackbar-spacing-1: var(--semantic-size-spacing-16);
2181
+ --snackbar-spacing-2: var(--semantic-size-spacing-8);
2182
+ --snackbar-padding-v: var(--semantic-size-spacing-8);
2183
+ --snackbar-text-max-width: 528px; /* ⚠ no semantic-size-528 */
2184
+ --snackbar-shadow: 0 2px 4px 0 #0000000a, 0 8px 24px -4px #00000014, 0 16px 48px -6px #0000000a;
2185
+ /* Button sm/ghost-static-dark tokens for snackbar action + close buttons */
2186
+ --snackbar-btn-height: var(--button-sm-height);
2187
+ --snackbar-btn-radius: var(--button-sm-radius);
2188
+ --snackbar-btn-padding-h: var(--button-sm-padding-horizontal);
2189
+ --snackbar-btn-gap: var(--button-sm-gap);
2190
+ --snackbar-btn-icon-size: var(--semantic-size-width-height-16);
2191
+ --snackbar-btn-icon-btn-width: var(--button-sm-icon-size);
2192
+ --snackbar-btn-text: var(--button-ghost-static-dark-text);
2193
+ --snackbar-btn-icon: var(--button-ghost-static-dark-icon);
2194
+ --snackbar-btn-bg-hover: var(--button-ghost-static-dark-bg-hover);
2195
+ --snackbar-btn-bg-pressed: var(--button-ghost-static-dark-bg-pressed);
2196
+
2197
+ /* Code Input size tokens */
2198
+ --code-input-sm-height: var(--semantic-size-width-height-56);
2199
+ --code-input-sm-width: var(--semantic-size-width-height-40);
2200
+ --code-input-md-height: var(--semantic-size-width-height-56);
2201
+ --code-input-md-width: var(--semantic-size-width-height-48);
2202
+ --code-input-font-size: var(--semantic-size-width-height-20);
2203
+ --code-input-font-weight: 500;
2204
+ --code-input-radius: var(--semantic-size-radius-8);
2205
+ --code-input-border-width-focus: 1.5px;
2206
+ --code-input-gap: var(--semantic-size-spacing-8);
2207
+
2208
+ /* Menu size tokens */
2209
+ --menu-max-height: 440px;
2210
+ --menu-spacing-1: var(--semantic-size-spacing-4);
2211
+ --menu-spacing-2: var(--semantic-size-spacing-8);
2212
+ --menu-border-width: var(--semantic-size-border-1);
2213
+ --menu-radius: var(--semantic-size-radius-8);
2214
+ --menu-shadow: 0 2px 4px 0 #0000000a, 0 8px 24px -4px #00000014, 0 16px 48px -6px #0000000a;
2215
+
2216
+ /* List Item size tokens */
2217
+ --list-item-sm-height: var(--semantic-size-width-height-32);
2218
+ --list-item-sm-padding-horizontal: var(--semantic-size-spacing-12);
2219
+ --list-item-sm-gap: var(--semantic-size-spacing-8);
2220
+ --list-item-sm-font-size: var(--semantic-size-width-height-14);
2221
+ --list-item-md-height: var(--semantic-size-width-height-48);
2222
+ --list-item-md-padding-horizontal: var(--semantic-size-spacing-16);
2223
+ --list-item-md-gap: var(--semantic-size-spacing-8);
2224
+ --list-item-md-font-size: var(--semantic-size-width-height-16);
2225
+ --list-item-radius: var(--semantic-size-radius-8);
2226
+ }
2227
+
2228
+ .dark {
2229
+
2230
+ /* Button */
2231
+ --button-secondary-normal-bg-hover: var(--primitive-white-alpha-100);
2232
+ --button-secondary-normal-bg-pressed: var(--primitive-white-alpha-200);
2233
+ --button-secondary-normal-border: var(--primitive-slate-50);
2234
+ --button-secondary-normal-text: var(--primitive-slate-50);
2235
+ --button-secondary-normal-icon: var(--primitive-slate-50);
2236
+ --button-secondary-inverse-bg-hover: var(--primitive-slate-alpha-100);
2237
+ --button-secondary-inverse-bg-pressed: var(--primitive-slate-alpha-200);
2238
+ --button-secondary-inverse-border: var(--primitive-slate-1200);
2239
+ --button-secondary-inverse-text: var(--primitive-slate-1200);
2240
+ --button-secondary-inverse-icon: var(--primitive-slate-1200);
2241
+ --button-tertiary-normal-bg-default: var(--primitive-slate-1000);
2242
+ --button-tertiary-normal-bg-hover: var(--primitive-white-alpha-100);
2243
+ --button-tertiary-normal-bg-pressed: var(--primitive-white-alpha-200);
2244
+ --button-tertiary-normal-text: var(--primitive-slate-50);
2245
+ --button-tertiary-normal-icon: var(--primitive-slate-50);
2246
+ --button-tertiary-inverse-bg-default: var(--primitive-slate-100);
2247
+ --button-tertiary-inverse-bg-hover: var(--primitive-slate-alpha-100);
2248
+ --button-tertiary-inverse-bg-pressed: var(--primitive-slate-alpha-200);
2249
+ --button-tertiary-inverse-text: var(--primitive-slate-1200);
2250
+ --button-tertiary-inverse-icon: var(--primitive-slate-1200);
2251
+ --button-ghost-normal-bg-hover: var(--primitive-white-alpha-100);
2252
+ --button-ghost-normal-bg-pressed: var(--primitive-white-alpha-200);
2253
+ --button-ghost-normal-text: var(--primitive-slate-50);
2254
+ --button-ghost-normal-icon: var(--primitive-slate-50);
2255
+ --button-ghost-inverse-bg-hover: var(--primitive-slate-alpha-100);
2256
+ --button-ghost-inverse-bg-pressed: var(--primitive-slate-alpha-200);
2257
+ --button-ghost-inverse-text: var(--primitive-slate-1200);
2258
+ --button-ghost-inverse-icon: var(--primitive-slate-1200);
2259
+ --button-disabled-normal-bg: var(--primitive-slate-1000);
2260
+ --button-disabled-normal-border: var(--primitive-slate-1000);
2261
+ --button-disabled-normal-text: var(--primitive-white-alpha-200);
2262
+ --button-disabled-normal-icon: var(--primitive-white-alpha-200);
2263
+ --button-disabled-inverse-bg: var(--primitive-slate-100);
2264
+ --button-disabled-inverse-border: var(--primitive-slate-100);
2265
+ --button-disabled-inverse-text: var(--primitive-slate-alpha-200);
2266
+ --button-disabled-inverse-icon: var(--primitive-slate-alpha-200);
2267
+
2268
+ /* Field */
2269
+ --field-text-prominent: var(--primitive-slate-50);
2270
+ --field-text-subtle: var(--primitive-white-alpha-600);
2271
+ --field-text-disabled: var(--primitive-white-alpha-300);
2272
+ --field-text-success: var(--primitive-green-500);
2273
+ --field-text-error: var(--primitive-red-500);
2274
+ --field-icon-prominent: var(--primitive-slate-50);
2275
+ --field-icon-subtle: var(--primitive-white-alpha-600);
2276
+ --field-icon-disabled: var(--primitive-white-alpha-300);
2277
+ --field-outline-bg-default: var(--primitive-slate-1100);
2278
+ --field-outline-bg-hover: var(--primitive-white-alpha-75);
2279
+ --field-outline-bg-focus: var(--primitive-slate-1100);
2280
+ --field-outline-bg-disabled: var(--primitive-slate-1100);
2281
+ --field-outline-border-default: var(--primitive-white-alpha-200);
2282
+ --field-outline-border-focus: var(--primitive-slate-50);
2283
+ --field-outline-border-disabled: var(--primitive-white-alpha-100);
2284
+ --field-outline-border-success: var(--primitive-green-500);
2285
+ --field-outline-border-error: var(--primitive-red-500);
2286
+ --field-fill-bg-default: var(--primitive-white-alpha-75);
2287
+ --field-fill-bg-hover: var(--primitive-white-alpha-100);
2288
+ --field-fill-bg-focus: var(--primitive-white-alpha-75);
2289
+ --field-fill-bg-disabled: var(--primitive-white-alpha-75);
2290
+ --field-fill-bg-success-default: var(--primitive-green-alpha-200);
2291
+ --field-fill-bg-success-hover: var(--primitive-green-alpha-300);
2292
+ --field-fill-bg-success-focus: var(--primitive-green-alpha-200);
2293
+ --field-fill-bg-error-default: var(--primitive-red-alpha-200);
2294
+ --field-fill-bg-error-hover: var(--primitive-red-alpha-300);
2295
+ --field-fill-bg-error-focus: var(--primitive-red-alpha-200);
2296
+ --field-fill-border-focus: var(--primitive-slate-50);
2297
+ --field-fill-border-success-focus: var(--primitive-green-500);
2298
+ --field-fill-border-error-focus: var(--primitive-red-500);
2299
+
2300
+ /* Marker */
2301
+ --marker-text-asterisk: var(--primitive-red-500);
2302
+ --marker-text-optional: var(--primitive-white-alpha-600);
2303
+
2304
+ /* Chip */
2305
+ --chip-bg-hover: var(--primitive-white-alpha-100);
2306
+ --chip-bg-pressed: var(--primitive-white-alpha-200);
2307
+ --chip-bg-selected: var(--primitive-white-alpha-100);
2308
+ --chip-text-prominent: var(--primitive-slate-50);
2309
+ --chip-text-disabled: var(--primitive-white-alpha-200);
2310
+ --chip-icon-prominent: var(--primitive-slate-50);
2311
+ --chip-icon-disabled: var(--primitive-white-alpha-200);
2312
+ --chip-border-default: var(--primitive-white-alpha-200);
2313
+ --chip-border-selected: var(--primitive-slate-50);
2314
+ --chip-border-disabled: var(--primitive-white-alpha-100);
2315
+
2316
+ /* List Item */
2317
+ --list-item-border-selected: var(--primitive-slate-50);
2318
+ --list-item-text-prominent: var(--primitive-slate-50);
2319
+ --list-item-text-disabled: var(--primitive-white-alpha-200);
2320
+ --list-item-icon-prominent: var(--primitive-slate-50);
2321
+ --list-item-icon-disabled: var(--primitive-white-alpha-200);
2322
+ --list-item-flag-placeholder: var(--primitive-white-alpha-100);
2323
+ --list-item-primary-bg-default: var(--primitive-slate-1100);
2324
+ --list-item-primary-bg-hover: var(--primitive-white-alpha-100);
2325
+ --list-item-primary-bg-pressed: var(--primitive-white-alpha-200);
2326
+ --list-item-primary-bg-selected: var(--primitive-white-alpha-100);
2327
+ --list-item-primary-bg-disabled: var(--primitive-slate-1100);
2328
+ --list-item-secondary-bg-default: var(--primitive-slate-1100);
2329
+ --list-item-secondary-bg-hover: var(--primitive-white-alpha-100);
2330
+ --list-item-secondary-bg-pressed: var(--primitive-white-alpha-200);
2331
+ --list-item-secondary-bg-selected: var(--primitive-white-alpha-100);
2332
+ --list-item-secondary-bg-disabled: var(--primitive-slate-1100);
2333
+
2334
+ /* Search Field */
2335
+ --search-field-text-prominent: var(--primitive-slate-50);
2336
+ --search-field-text-subtle: var(--primitive-white-alpha-600);
2337
+ --search-field-text-disabled: var(--primitive-white-alpha-300);
2338
+ --search-field-icon-prominent: var(--primitive-slate-50);
2339
+ --search-field-icon-subtle: var(--primitive-white-alpha-600);
2340
+ --search-field-outline-bg-default: var(--primitive-slate-1100);
2341
+ --search-field-outline-bg-hover: var(--primitive-white-alpha-75);
2342
+ --search-field-outline-bg-focus: var(--primitive-slate-1100);
2343
+ --search-field-outline-bg-disabled: var(--primitive-slate-1100);
2344
+ --search-field-outline-border-default: var(--primitive-white-alpha-200);
2345
+ --search-field-outline-border-focus: var(--primitive-slate-50);
2346
+ --search-field-outline-border-disabled: var(--primitive-white-alpha-100);
2347
+ --search-field-fill-bg-default: var(--primitive-white-alpha-75);
2348
+ --search-field-fill-bg-hover: var(--primitive-white-alpha-100);
2349
+ --search-field-fill-bg-focus: var(--primitive-white-alpha-75);
2350
+ --search-field-fill-bg-disabled: var(--primitive-white-alpha-75);
2351
+ --search-field-fill-border-focus: var(--primitive-slate-50);
2352
+
2353
+ /* Dropdown Field */
2354
+ --dropdown-field-text-prominent: var(--primitive-slate-50);
2355
+ --dropdown-field-text-subtle: var(--primitive-white-alpha-600);
2356
+ --dropdown-field-text-disabled: var(--primitive-white-alpha-300);
2357
+ --dropdown-field-text-error: var(--primitive-red-500);
2358
+ --dropdown-field-icon-prominent: var(--primitive-slate-50);
2359
+ --dropdown-field-icon-subtle: var(--primitive-white-alpha-600);
2360
+ --dropdown-field-icon-disabled: var(--primitive-white-alpha-300);
2361
+ --dropdown-field-outline-bg-default: var(--primitive-slate-1100);
2362
+ --dropdown-field-outline-bg-hover: var(--primitive-white-alpha-75);
2363
+ --dropdown-field-outline-bg-focus: var(--primitive-white-alpha-200);
2364
+ --dropdown-field-outline-bg-disabled: var(--primitive-slate-1100);
2365
+ --dropdown-field-outline-border-default: var(--primitive-white-alpha-200);
2366
+ --dropdown-field-outline-border-disabled: var(--primitive-white-alpha-100);
2367
+ --dropdown-field-outline-border-focus: var(--primitive-white-alpha-200);
2368
+ --dropdown-field-outline-border-error: var(--primitive-red-500);
2369
+ --dropdown-field-fill-bg-neutral-default: var(--primitive-white-alpha-75);
2370
+ --dropdown-field-fill-bg-neutral-hover: var(--primitive-white-alpha-100);
2371
+ --dropdown-field-fill-bg-neutral-focus: var(--primitive-white-alpha-200);
2372
+ --dropdown-field-fill-bg-neutral-disabled: var(--primitive-white-alpha-75);
2373
+ --dropdown-field-fill-bg-error-default: var(--primitive-red-alpha-200);
2374
+ --dropdown-field-fill-bg-error-hover: var(--primitive-red-alpha-300);
2375
+ --dropdown-field-fill-bg-error-focus: var(--primitive-red-alpha-200);
2376
+
2377
+ /* Menu */
2378
+ --menu-background: var(--primitive-slate-1100);
2379
+ --menu-border: var(--primitive-white-alpha-100);
2380
+
2381
+ /* Code Input */
2382
+ --code-input-fill-bg-default: var(--primitive-white-alpha-75);
2383
+ --code-input-fill-bg-hover: var(--primitive-white-alpha-100);
2384
+ --code-input-fill-bg-focus: var(--primitive-white-alpha-75);
2385
+ --code-input-fill-bg-disabled: var(--primitive-white-alpha-75);
2386
+ --code-input-fill-bg-success: var(--primitive-green-alpha-200);
2387
+ --code-input-fill-bg-error: var(--primitive-red-alpha-200);
2388
+ --code-input-fill-border-focus: var(--primitive-slate-50);
2389
+ --code-input-fill-border-error: var(--primitive-red-500);
2390
+ --code-input-fill-border-success: var(--primitive-green-500);
2391
+ --code-input-text-prominent: var(--primitive-slate-50);
2392
+ --code-input-text-subtle: var(--primitive-white-alpha-600);
2393
+ --code-input-text-disabled: var(--primitive-white-alpha-300);
2394
+ --code-input-text-success: var(--primitive-green-500);
2395
+ --code-input-text-error: var(--primitive-red-500);
2396
+
2397
+ /* Tab */
2398
+ --tab-text-default: var(--primitive-white-alpha-600);
2399
+ --tab-text-selected: var(--primitive-slate-50);
2400
+ --tab-text-disabled: var(--primitive-white-alpha-300);
2401
+ --tab-bg-hover: var(--primitive-white-alpha-100);
2402
+ --tab-bg-pressed: var(--primitive-white-alpha-200);
2403
+ --tab-border-default: var(--primitive-white-alpha-100);
2404
+ --tab-border-focus: var(--primitive-slate-50);
2405
+ --tab-border-selected: var(--primitive-slate-50);
2406
+
2407
+ /* Segmented Control */
2408
+ --segmented-control-text-prominent: var(--primitive-slate-50);
2409
+ --segmented-control-text-disabled: var(--primitive-white-alpha-200);
2410
+ --segmented-control-icon-prominent: var(--primitive-slate-50);
2411
+ --segmented-control-icon-disabled: var(--primitive-white-alpha-200);
2412
+ --segmented-control-container-bg: var(--primitive-slate-1300);
2413
+ --segmented-control-segment-bg-selected: var(--primitive-slate-1000);
2414
+ --segmented-control-segment-bg-hover: var(--primitive-white-alpha-100);
2415
+ --segmented-control-segment-bg-pressed: var(--primitive-white-alpha-200);
2416
+
2417
+ /* Tooltip */
2418
+ --tooltip-text-default: var(--primitive-slate-1200);
2419
+ --tooltip-bg-default: var(--primitive-slate-50);
2420
+
2421
+ /* Link */
2422
+ --link-primary-disabled: var(--primitive-white-alpha-200);
2423
+ --link-secondary-inverse-default: var(--primitive-slate-50);
2424
+ --link-secondary-inverse-disabled: var(--primitive-white-alpha-200);
2425
+
2426
+ /* Tag */
2427
+ --tag-text-neutral: var(--primitive-slate-50);
2428
+ --tag-text-red: var(--primitive-red-500);
2429
+ --tag-text-yellow: var(--primitive-yellow-500);
2430
+ --tag-text-green: var(--primitive-green-500);
2431
+ --tag-text-blue: var(--primitive-blue-500);
2432
+ --tag-icon-default: var(--primitive-slate-50);
2433
+ --tag-icon-red: var(--primitive-red-500);
2434
+ --tag-icon-yellow: var(--primitive-yellow-500);
2435
+ --tag-icon-green: var(--primitive-green-500);
2436
+ --tag-icon-blue: var(--primitive-blue-500);
2437
+ --tag-outline-border-neutral: var(--primitive-white-alpha-200);
2438
+ --tag-outline-border-red: var(--primitive-red-500);
2439
+ --tag-outline-border-yellow: var(--primitive-yellow-500);
2440
+ --tag-outline-border-green: var(--primitive-green-500);
2441
+ --tag-outline-border-blue: var(--primitive-blue-500);
2442
+ --tag-fill-bg-neutral: var(--primitive-white-alpha-100);
2443
+ --tag-fill-bg-red: var(--primitive-red-alpha-200);
2444
+ --tag-fill-bg-yellow: var(--primitive-yellow-alpha-200);
2445
+ --tag-fill-bg-green: var(--primitive-green-alpha-200);
2446
+ --tag-fill-bg-blue: var(--primitive-blue-alpha-200);
2447
+
2448
+ /* Chip */
2449
+ --chip-text-prominent: var(--primitive-slate-50);
2450
+ --chip-text-disabled: var(--primitive-white-alpha-200);
2451
+ --chip-border-default: var(--primitive-white-alpha-200);
2452
+ --chip-border-selected: var(--primitive-slate-50);
2453
+ --chip-border-disabled: var(--primitive-white-alpha-100);
2454
+ --chip-bg-hover: var(--primitive-white-alpha-100);
2455
+ --chip-bg-pressed: var(--primitive-white-alpha-200);
2456
+ --chip-bg-selected: var(--primitive-white-alpha-100);
2457
+ --chip-icon-prominent: var(--primitive-slate-50);
2458
+ --chip-icon-disabled: var(--primitive-white-alpha-200);
2459
+
2460
+ /* Snackbar — semantic-colour/dark: inverted (white bg, dark text) */
2461
+ --snackbar-bg-default: var(--primitive-slate-50);
2462
+ --snackbar-bg-fail: var(--primitive-red-900);
2463
+ --snackbar-text: var(--primitive-slate-1200);
2464
+ --snackbar-text-fail: var(--primitive-slate-50);
2465
+ --snackbar-icon: var(--primitive-slate-1200);
2466
+ --snackbar-icon-fail: var(--primitive-slate-50);
2467
+
2468
+ /* Badge */
2469
+ --badge-bg-number: var(--primitive-red-500);
2470
+ --badge-bg-status-red: var(--primitive-red-500);
2471
+ --badge-bg-status-yellow: var(--primitive-yellow-500);
2472
+ --badge-bg-status-green: var(--primitive-green-500);
2473
+ --badge-bg-status-blue: var(--primitive-blue-500);
2474
+
2475
+ /* Section Message */
2476
+ --section-message-title: var(--primitive-slate-50);
2477
+ --section-message-description: var(--primitive-white-alpha-900);
2478
+ --section-message-fill-bg-danger: var(--primitive-red-alpha-300);
2479
+ --section-message-fill-bg-default: var(--primitive-white-alpha-100);
2480
+ --section-message-fill-bg-information: var(--primitive-blue-alpha-300);
2481
+ --section-message-fill-bg-success: var(--primitive-green-alpha-300);
2482
+ --section-message-fill-bg-warning: var(--primitive-yellow-alpha-300);
2483
+ --section-message-icon-danger: var(--primitive-red-500);
2484
+ --section-message-icon-warning: var(--primitive-yellow-500);
2485
+ --section-message-icon-success: var(--primitive-green-500);
2486
+ --section-message-icon-information: var(--primitive-blue-500);
2487
+ --section-message-icon-close: var(--primitive-slate-50);
2488
+
2489
+ /* Pagination */
2490
+ --pagination-bg-number-default: var(--primitive-slate-1200);
2491
+ --pagination-bg-number-hover: var(--primitive-white-alpha-100);
2492
+ --pagination-bg-number-selected: var(--primitive-white-alpha-100);
2493
+ --pagination-bg-number-pressed: var(--primitive-white-alpha-200);
2494
+ --pagination-bg-dot-default: var(--primitive-white-alpha-100);
2495
+ --pagination-bg-dot-hover: var(--primitive-white-alpha-200);
2496
+ --pagination-bg-dot-selected: var(--primitive-slate-50);
2497
+ --pagination-border-number-selected: var(--primitive-slate-50);
2498
+ --pagination-text-default: var(--primitive-slate-50);
2499
+ --pagination-text-disabled: var(--primitive-white-alpha-200);
2500
+
2501
+ /* Notification */
2502
+ --notification-title-banner: var(--primitive-slate-1200);
2503
+ --notification-title-item: var(--primitive-slate-50);
2504
+ --notification-description-banner: var(--primitive-slate-alpha-900);
2505
+ --notification-description-item-unread: var(--primitive-slate-50);
2506
+ --notification-description-item-read: var(--primitive-white-alpha-900);
2507
+ --notification-date-time-item: var(--primitive-white-alpha-600);
2508
+ --notification-icon-delete: var(--primitive-red-500);
2509
+ --notification-text-delete: var(--primitive-red-500);
2510
+ --notification-icon-read-unread: var(--primitive-blue-500);
2511
+ --notification-text-read-unread: var(--primitive-blue-500);
2512
+ --notification-icon-normal-information: var(--primitive-blue-500);
2513
+ --notification-icon-normal-success: var(--primitive-green-500);
2514
+ --notification-icon-normal-warning: var(--primitive-yellow-500);
2515
+ --notification-icon-normal-danger: var(--primitive-red-500);
2516
+ --notification-icon-inverse-information: var(--primitive-blue-900);
2517
+ --notification-icon-inverse-success: var(--primitive-green-900);
2518
+ --notification-icon-inverse-warning: var(--primitive-yellow-900);
2519
+ --notification-icon-inverse-danger: var(--primitive-red-900);
2520
+ --notification-bg-divider: var(--primitive-white-alpha-100);
2521
+ --notification-bg-icon-information: var(--primitive-blue-alpha-300);
2522
+ --notification-bg-icon-success: var(--primitive-green-alpha-300);
2523
+ --notification-bg-icon-warning: var(--primitive-yellow-alpha-300);
2524
+ --notification-bg-icon-danger: var(--primitive-red-alpha-300);
2525
+ --notification-bg-banner: var(--primitive-slate-50);
2526
+ --notification-bg-item-default: var(--primitive-slate-1200);
2527
+ --notification-bg-item-hover: var(--primitive-white-alpha-100);
2528
+ --notification-bg-button-default: var(--primitive-white-alpha-75);
2529
+ --notification-bg-button-press: var(--primitive-white-alpha-100);
2530
+
2531
+ /* Bottom Sheet */
2532
+ --bottom-sheet-bg-sheet: var(--primitive-slate-1100);
2533
+ --bottom-sheet-bg-handle-bar: var(--primitive-white-alpha-300);
2534
+ --bottom-sheet-bg-handle-default: var(--primitive-slate-1100);
2535
+ --bottom-sheet-bg-handle-pressed: var(--primitive-white-alpha-100);
2536
+
2537
+ /* Progress Bar */
2538
+ --progress-bar-bg-normal-track-default: var(--primitive-slate-900);
2539
+ --progress-bar-bg-normal-progress-default: var(--primitive-slate-50);
2540
+ --progress-bar-bg-normal-progress-green: var(--primitive-green-500);
2541
+ --progress-bar-bg-normal-progress-red: var(--primitive-red-500);
2542
+ --progress-bar-bg-normal-progress-yellow: var(--primitive-yellow-500);
2543
+ --progress-bar-bg-normal-progress-blue: var(--primitive-blue-500);
2544
+ --progress-bar-bg-inverse-track-default: var(--primitive-slate-100);
2545
+ --progress-bar-bg-inverse-progress-default: var(--primitive-slate-1200);
2546
+ --progress-bar-bg-inverse-progress-green: var(--primitive-green-700);
2547
+ --progress-bar-bg-inverse-progress-red: var(--primitive-red-700);
2548
+ --progress-bar-bg-inverse-progress-yellow: var(--primitive-yellow-700);
2549
+ --progress-bar-bg-inverse-progress-blue: var(--primitive-blue-700);
2550
+ }
2551
+
2552
+ ::selection {
2553
+ background-color: var(--primitive-blue-alpha-300);
2554
+ color: var(--text-prominent-default);
2555
+ }