@langchain/macaw-tokens 1.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,979 @@
1
+ /* Primitive, semantic, component, and dark-mode design tokens. */
2
+
3
+ :root {
4
+ --popover: var(--bg-primary);
5
+ --background: 0 0% 100%;
6
+
7
+ /* colors */
8
+ /* gray colors */
9
+ --gray-25: #fcfcfc;
10
+ --gray-50: #fafafa;
11
+ --gray-100: #f4f4f5;
12
+ --gray-200: #e4e4e7;
13
+ --gray-300: #d1d1d6;
14
+ --gray-400: #a0a0ab;
15
+ --gray-500: #70707b;
16
+ --gray-600: #51525c;
17
+ --gray-700: #3f3f46;
18
+ --gray-800: #26272b;
19
+ --gray-900: #1a1a1e;
20
+ --gray-950: #131316;
21
+
22
+ /* neutral */
23
+ --neutral-25: #fafbfd;
24
+ --neutral-35: #f8fafc;
25
+ --neutral-50: #f5f8fb;
26
+ --neutral-100: #edf2f7;
27
+ --neutral-200: #e2e8f0;
28
+ --neutral-300: #cbd5e1;
29
+ --neutral-400: #94a3b8;
30
+ --neutral-500: #64748b;
31
+ --neutral-600: #475569;
32
+ --neutral-700: #334155;
33
+ --neutral-800: #1e293b;
34
+ --neutral-900: #0f172a;
35
+ --neutral-950: #080f1e;
36
+
37
+ --white: #ffffff;
38
+ --black: #000000;
39
+
40
+ /* Brand colors */
41
+ --brand-10: #f2faff;
42
+ --brand-25: #e5f4ff;
43
+ --brand-50: #cce9ff;
44
+ --brand-75: #9dd2fc;
45
+ --brand-100: #5fbef8;
46
+ --brand-200: #008dff;
47
+ --brand-300: #0078f1;
48
+ --brand-400: #006ddd;
49
+ --brand-500: #1566b8;
50
+ --brand-600: #145095;
51
+ --brand-700: #0d3d77;
52
+ --brand-800: #0c336a;
53
+ --brand-900: #102656;
54
+ --brand-950: #101a30;
55
+
56
+ /* red colors */
57
+ --red-25: #fffbfa;
58
+ --red-50: #fef3f2;
59
+ --red-100: #fee4e2;
60
+ --red-200: #fecdca;
61
+ --red-300: #fda29b;
62
+ --red-400: #f97066;
63
+ --red-500: #f04438;
64
+ --red-600: #d92d20;
65
+ --red-700: #b42318;
66
+ --red-800: #912018;
67
+ --red-900: #7a271a;
68
+ --red-950: #55160c;
69
+
70
+ /* orange colors */
71
+ --orange-25: #fffcf5;
72
+ --orange-50: #fffaeb;
73
+ --orange-100: #fef0c7;
74
+ --orange-200: #fedf89;
75
+ --orange-300: #fec84b;
76
+ --orange-400: #fdb022;
77
+ --orange-500: #f79009;
78
+ --orange-600: #cd6002;
79
+ --orange-700: #ac5305;
80
+ --orange-800: #894101;
81
+ --orange-900: #6d3300;
82
+ --orange-950: #4c2400;
83
+
84
+ /* green colors */
85
+ --green-25: #f5fef9;
86
+ --green-50: #ecfdf3;
87
+ --green-100: #dcfae6;
88
+ --green-200: #acefc6;
89
+ --green-300: #75e0a7;
90
+ --green-400: #46cd89;
91
+ --green-500: #19b26b;
92
+ --green-600: #079455;
93
+ --green-700: #047647;
94
+ --green-800: #065d3a;
95
+ --green-900: #084d31;
96
+ --green-950: #053321;
97
+
98
+ /* acid */
99
+ --acid-10: #fafee8;
100
+ --acid-25: #f2fcc8;
101
+ --acid-50: #e3f797;
102
+ --acid-100: #cceb50;
103
+ --acid-200: #aecf1a;
104
+ --acid-300: #93b000;
105
+ --acid-400: #799200;
106
+ --acid-500: #607500;
107
+ --acid-600: #495a00;
108
+ --acid-700: #354200;
109
+ --acid-800: #232c00;
110
+ --acid-900: #141a00;
111
+ --acid-950: #0b1000;
112
+
113
+ /* purple colors */
114
+ --purple-10: #f9f7ff;
115
+ --purple-25: #f1ecff;
116
+ --purple-50: #e3d9ff;
117
+ --purple-100: #c5b4f0;
118
+ --purple-200: #a691df;
119
+ --purple-300: #8b71cc;
120
+ --purple-400: #7655b8;
121
+ --purple-500: #6244a0;
122
+ --purple-600: #4e3487;
123
+ --purple-700: #3b2560;
124
+ --purple-800: #291753;
125
+ --purple-900: #190d38;
126
+ --purple-950: #0f0822;
127
+
128
+ /* SEMANTIC TOKENS — pattern: --{category}-{role?}-{variant?}-{state?}
129
+ * Primitives above are the raw scale. Components reference semantic tokens only. */
130
+
131
+ /* SURFACE */
132
+ --bg-surface-level-1: var(--white);
133
+ --bg-surface-level-1-hover: var(--neutral-25);
134
+ --bg-surface-level-2: var(--neutral-50);
135
+ --bg-surface-level-2-hover: var(--neutral-100);
136
+ --bg-surface-level-3: var(--neutral-100);
137
+ --bg-surface-level-4: var(--neutral-200);
138
+ --bg-disabled: var(--neutral-100);
139
+ --bg-elevated: var(--white); /* popovers, tooltips, cards */
140
+ --bg-elevated-hover: var(--neutral-25);
141
+ --bg-elevated-selected: var(--neutral-25);
142
+ --bg-overlay: rgba(0, 0, 0, 0.5); /* backdrop / modal scrim */
143
+
144
+ /* BRAND */
145
+ --bg-brand: var(--brand-400);
146
+ --bg-brand-hover: var(--brand-500);
147
+ --bg-brand-subtle: var(--brand-25); /* tinted brand surface */
148
+ --bg-brand-subtle-hover: var(--brand-50);
149
+ /* Tinted brand gradient surface, currently used by info banners. */
150
+ --bg-brand-subtle-gradient: linear-gradient(
151
+ to bottom right,
152
+ var(--brand-25),
153
+ var(--brand-10)
154
+ );
155
+ --bg-brand-illustration: var(--brand-50);
156
+ --bg-brand-muted: var(--brand-10); /* faintest brand tint */
157
+ --bg-purple: var(--purple-50);
158
+
159
+ /* INTENT — strong = filled; default = tinted surface; subtle = lightest tint */
160
+ --bg-success: var(--green-50);
161
+ --bg-success-subtle: var(--green-100);
162
+ --bg-success-strong: var(--green-600);
163
+ --bg-error: var(--red-50);
164
+ --bg-error-subtle: var(--red-100);
165
+ --bg-error-strong: var(--red-600);
166
+ --bg-warning: var(--orange-50);
167
+ --bg-warning-subtle: var(--orange-100);
168
+ --bg-warning-strong: var(--orange-600);
169
+
170
+ /* CONTROL — shared across Checkbox, RadioButton, Switch, Slider */
171
+ --bg-control-active: var(--brand-300); /* checked / on fill */
172
+ --bg-control-active-hover: var(--brand-400);
173
+ --bg-control-thumb: var(--white); /* knob / handle surface */
174
+ --bg-control-disabled: var(--neutral-200);
175
+ /* Checkmark / glyph on active control fill. */
176
+ --text-control-active-foreground: var(--bg-control-thumb);
177
+
178
+ /* SELECTED */
179
+ --bg-selected: var(--brand-25);
180
+ --bg-selected-hover: var(--brand-50);
181
+
182
+ /* BORDER COLORS */
183
+ --border-default: var(--neutral-300);
184
+ --border-subtle: var(--neutral-200);
185
+ --border-muted: var(--neutral-100);
186
+ --border-faint: var(--neutral-50);
187
+ --border-strong: var(--neutral-600);
188
+ --border-disabled: var(--neutral-200);
189
+ --border-focus: var(--brand-400); /* focus ring */
190
+ --border-error: var(--red-300);
191
+ --border-error-strong: var(--red-600);
192
+ --border-brand: var(--brand-400);
193
+ --border-brand-strong: var(--brand-600);
194
+ --border-brand-subtle: var(--brand-100);
195
+ --border-warning: var(--orange-300);
196
+ --border-success: var(--green-200);
197
+ --border-purple: var(--purple-200);
198
+
199
+ /* TEXT COLORS */
200
+ --text-primary: var(--neutral-900);
201
+ --text-secondary: var(--neutral-700);
202
+ --text-secondary-hover: var(--neutral-800);
203
+ --text-tertiary: var(--neutral-600);
204
+ --text-tertiary-hover: var(--neutral-700);
205
+ --text-quaternary: var(--neutral-500);
206
+ --text-disabled: var(--neutral-300);
207
+ --text-placeholder: var(--neutral-400);
208
+ --text-error-primary: var(--red-700);
209
+ --text-error-secondary: var(--red-600);
210
+ --text-error-tertiary: var(--red-500);
211
+ --text-warning-primary: var(--orange-700);
212
+ --text-warning-secondary: var(--orange-600);
213
+ --text-warning-tertiary: var(--orange-500);
214
+ --text-success-primary: var(--green-700);
215
+ --text-success-secondary: var(--green-600);
216
+ --text-success-tertiary: var(--green-500);
217
+ --text-brand-primary: var(--brand-700);
218
+ --text-brand-secondary: var(--brand-600);
219
+ --text-brand-tertiary: var(--brand-500);
220
+ --text-brand-disabled: var(--brand-75);
221
+ /* Foreground on non-Button brand fill. */
222
+ --text-brand-on-fill: var(--white);
223
+ --text-link: var(--brand-300);
224
+ --text-link-hover: var(--brand-200);
225
+ --text-purple: var(--purple-700);
226
+
227
+ /* ICON — separate namespace so icon and label colors can diverge */
228
+ --icon-primary: var(--neutral-900);
229
+ --icon-secondary: var(--neutral-700);
230
+ --icon-tertiary: var(--neutral-500);
231
+ --icon-disabled: var(--neutral-300);
232
+ --icon-brand: var(--brand-400);
233
+ --icon-brand-fill: #7fc8ff;
234
+ --icon-brand-background: #161f34;
235
+ --icon-error: var(--red-600);
236
+ --icon-success: var(--green-600);
237
+ --icon-warning: var(--orange-600);
238
+
239
+ /* STATUS */
240
+ --text-status-green: #02ae45;
241
+ --text-status-yellow: #c98e06;
242
+ --text-status-red: var(--red-400);
243
+ --text-status-orange: #ee7207;
244
+ --border-status-green: #0edc5e;
245
+ --border-status-yellow: #ffd268;
246
+ --border-status-red: #fda29b;
247
+ --border-status-orange: #f9b072;
248
+
249
+ /* SHADOW */
250
+ /* Low-elevation shadow color for custom composed shadows. */
251
+ --shadow-color-subtle: rgba(16, 24, 40, 0.05);
252
+ --shadow-sm:
253
+ 0 1px 3px rgba(16, 24, 40, 0.1), 0 1px 2px rgba(16, 24, 40, 0.06);
254
+ --shadow-md:
255
+ 0 4px 6px -1px rgba(16, 24, 40, 0.1), 0 2px 4px -1px rgba(16, 24, 40, 0.06);
256
+ --shadow-lg:
257
+ 0 10px 15px -3px rgba(16, 24, 40, 0.1),
258
+ 0 4px 6px -2px rgba(16, 24, 40, 0.05);
259
+
260
+ /* RADIUS */
261
+ --radius-none: 0px;
262
+ --radius-xs: 3px;
263
+ --radius-sm: 4px;
264
+ --radius-md: 6px;
265
+ --radius-lg: 8px;
266
+ --radius-xl: 12px;
267
+ --radius-full: 9999px;
268
+
269
+ /* MOTION */
270
+ --duration-fast: 100ms;
271
+ --duration-normal: 200ms;
272
+ --duration-slow: 300ms;
273
+ --duration-slower: 500ms;
274
+
275
+ /* SCROLLBAR */
276
+ --scrollbar-thumb: rgba(0, 0, 0, 0.3);
277
+ --scrollbar-thumb-hover: rgba(0, 0, 0, 0.5);
278
+
279
+ /* Syntax colors for code blocks. */
280
+ --syntax-plain: #1e293b;
281
+ --syntax-keyword: #1d4ed8;
282
+ --syntax-string: #15803d;
283
+ --syntax-number: #c2410c;
284
+ --syntax-comment: #64748b;
285
+ --syntax-function: #7e22ce;
286
+ --syntax-type: #0e7490;
287
+ --syntax-property: #1e40af;
288
+ --syntax-constant: #b45309;
289
+ --syntax-operator: #475569;
290
+ --syntax-tag: #1d4ed8;
291
+ --syntax-decorator: #be185d;
292
+
293
+ /* DEPRECATED ALIASES — remove after consuming code is updated */
294
+ --bg-primary: var(--bg-surface-level-1);
295
+ --bg-primary-hover: var(--bg-surface-level-1-hover);
296
+ --bg-primary_hover: var(--bg-primary-hover);
297
+ --bg-secondary: var(--bg-surface-level-2);
298
+ --bg-secondary-hover: var(--bg-surface-level-2-hover);
299
+ --bg-secondary_hover: var(--bg-secondary-hover);
300
+ --bg-tertiary: var(--bg-surface-level-3);
301
+ --bg-quaternary: var(--bg-surface-level-4);
302
+ --bg-popover-urgent: var(--neutral-100);
303
+ --bg-brand-primary: var(--bg-brand);
304
+ --bg-brand-primary_hover: var(--bg-brand-hover);
305
+ --bg-brand-secondary: var(--bg-brand-subtle);
306
+ --bg-brand-secondary_hover: var(--bg-brand-subtle-hover);
307
+ --bg-brand-tertiary: var(--bg-brand-muted);
308
+ --bg-success-primary: var(--bg-success);
309
+ --bg-success-secondary: var(--bg-success-subtle);
310
+ --bg-error-primary: var(--bg-error);
311
+ --bg-error-secondary: var(--bg-error-subtle);
312
+ --bg-warning-primary: var(--bg-warning);
313
+ --bg-warning-secondary: var(--bg-warning-subtle);
314
+ --border-primary: var(--border-default);
315
+ --border-secondary: var(--border-subtle);
316
+ --border-tertiary: var(--border-muted);
317
+ --border-quaternary: var(--border-faint);
318
+ --text-button-primary: var(--white);
319
+
320
+ /* viz-neutral — oklch hue: 256.4° */
321
+ --viz-neutral-10: #f7f8fa;
322
+ --viz-neutral-25: #ecf0f5;
323
+ --viz-neutral-50: #d9e0ea;
324
+ --viz-neutral-75: #c6d0de;
325
+ --viz-neutral-100: #b4c0d1;
326
+ --viz-neutral-150: #a4b1c3;
327
+ --viz-neutral-200: #93a1b4;
328
+ --viz-neutral-300: #76859a;
329
+ --viz-neutral-400: #5f6d82;
330
+ --viz-neutral-500: #4d5b6f;
331
+ --viz-neutral-600: #3b495c;
332
+ --viz-neutral-700: #283547;
333
+ --viz-neutral-800: #1a2738;
334
+ --viz-neutral-900: #0c1828;
335
+ --viz-neutral-950: #040e1d;
336
+
337
+ /* viz-brand — oklch hue: 256.4° */
338
+ --viz-brand-10: #f4f9ff;
339
+ --viz-brand-25: #e6f0ff;
340
+ --viz-brand-50: #cce2ff;
341
+ --viz-brand-75: #b1d2ff;
342
+ --viz-brand-100: #95c2ff;
343
+ --viz-brand-150: #79b2ff;
344
+ --viz-brand-200: #5ba1ff;
345
+ --viz-brand-300: #1380fa;
346
+ --viz-brand-400: #0068d3;
347
+ --viz-brand-500: #0056b2;
348
+ --viz-brand-600: #004591;
349
+ --viz-brand-700: #00326c;
350
+ --viz-brand-800: #002452;
351
+ --viz-brand-900: #001638;
352
+ --viz-brand-950: #000d26;
353
+
354
+ /* viz-purple — oklch hue: 301.4° */
355
+ --viz-purple-10: #faf7ff;
356
+ --viz-purple-25: #f2ebff;
357
+ --viz-purple-50: #e6d8ff;
358
+ --viz-purple-75: #d9c3ff;
359
+ --viz-purple-100: #cdadff;
360
+ --viz-purple-150: #c197ff;
361
+ --viz-purple-200: #b57fff;
362
+ --viz-purple-300: #9b5ce8;
363
+ --viz-purple-400: #8440cf;
364
+ --viz-purple-500: #7128b9;
365
+ --viz-purple-600: #5e0ca1;
366
+ --viz-purple-700: #46007b;
367
+ --viz-purple-800: #34005e;
368
+ --viz-purple-900: #220040;
369
+ --viz-purple-950: #16002c;
370
+
371
+ /* viz-magenta — oklch hue: 346.4° */
372
+ --viz-magenta-10: #fff5fa;
373
+ --viz-magenta-25: #ffe8f3;
374
+ --viz-magenta-50: #ffd0e8;
375
+ --viz-magenta-75: #ffb6dc;
376
+ --viz-magenta-100: #ff99d1;
377
+ --viz-magenta-150: #ff79c7;
378
+ --viz-magenta-200: #f165b8;
379
+ --viz-magenta-300: #d4409d;
380
+ --viz-magenta-400: #b91b84;
381
+ --viz-magenta-500: #9f0070;
382
+ --viz-magenta-600: #81005a;
383
+ --viz-magenta-700: #600042;
384
+ --viz-magenta-800: #490031;
385
+ --viz-magenta-900: #31001f;
386
+ --viz-magenta-950: #210014;
387
+
388
+ /* viz-red — oklch hue: 31.4° */
389
+ --viz-red-10: #fff6f4;
390
+ --viz-red-25: #ffeae6;
391
+ --viz-red-50: #ffd4cc;
392
+ --viz-red-75: #ffbdb0;
393
+ --viz-red-100: #ffa492;
394
+ --viz-red-150: #ff8973;
395
+ --viz-red-200: #ff6951;
396
+ --viz-red-300: #e44029;
397
+ --viz-red-400: #c71d00;
398
+ --viz-red-500: #a71600;
399
+ --viz-red-600: #881000;
400
+ --viz-red-700: #650900;
401
+ --viz-red-800: #4d0500;
402
+ --viz-red-900: #340200;
403
+ --viz-red-950: #230100;
404
+
405
+ /* viz-orange — oklch hue: 76.4° */
406
+ --viz-orange-10: #fff7ec;
407
+ --viz-orange-25: #ffecd2;
408
+ --viz-orange-50: #ffd9a3;
409
+ --viz-orange-75: #ffc468;
410
+ --viz-orange-100: #fcae00;
411
+ --viz-orange-150: #e79f00;
412
+ --viz-orange-200: #d39100;
413
+ --viz-orange-300: #af7800;
414
+ --viz-orange-400: #906200;
415
+ --viz-orange-500: #795100;
416
+ --viz-orange-600: #614100;
417
+ --viz-orange-700: #472e00;
418
+ --viz-orange-800: #352200;
419
+ --viz-orange-900: #231400;
420
+ --viz-orange-950: #160b00;
421
+
422
+ /* viz-acid — oklch hue: 121.4° */
423
+ --viz-acid-10: #f2ffd5;
424
+ --viz-acid-25: #e1fe95;
425
+ --viz-acid-50: #d0ef75;
426
+ --viz-acid-75: #bfdf59;
427
+ --viz-acid-100: #aecf38;
428
+ --viz-acid-150: #9ec000;
429
+ --viz-acid-200: #90af00;
430
+ --viz-acid-300: #779000;
431
+ --viz-acid-400: #617700;
432
+ --viz-acid-500: #516300;
433
+ --viz-acid-600: #404f00;
434
+ --viz-acid-700: #2e3a00;
435
+ --viz-acid-800: #212b00;
436
+ --viz-acid-900: #141b00;
437
+ --viz-acid-950: #0b1000;
438
+
439
+ /* viz-green — oklch hue: 166.4° */
440
+ --viz-green-10: #e7fff4;
441
+ --viz-green-25: #c3ffe5;
442
+ --viz-green-50: #69ffca;
443
+ --viz-green-75: #3cf1b7;
444
+ --viz-green-100: #00e0a7;
445
+ --viz-green-150: #00ce99;
446
+ --viz-green-200: #00bc8c;
447
+ --viz-green-300: #009b73;
448
+ --viz-green-400: #00805e;
449
+ --viz-green-500: #006b4e;
450
+ --viz-green-600: #00563e;
451
+ --viz-green-700: #003f2c;
452
+ --viz-green-800: #002e20;
453
+ --viz-green-900: #001e13;
454
+ --viz-green-950: #00120a;
455
+
456
+ /* viz-sky — oklch hue: 211.4° */
457
+ --viz-sky-10: #ecfcff;
458
+ --viz-sky-25: #d1f7ff;
459
+ --viz-sky-50: #9defff;
460
+ --viz-sky-75: #51e5ff;
461
+ --viz-sky-100: #00d6f3;
462
+ --viz-sky-150: #00c5df;
463
+ --viz-sky-200: #00b4cc;
464
+ --viz-sky-300: #0094a8;
465
+ --viz-sky-400: #007a8b;
466
+ --viz-sky-500: #006674;
467
+ --viz-sky-600: #00525d;
468
+ --viz-sky-700: #003b44;
469
+ --viz-sky-800: #002c33;
470
+ --viz-sky-900: #001c21;
471
+ --viz-sky-950: #001115;
472
+
473
+ /* Semantic data-visualization colors. The categorical order deliberately
474
+ alternates distant hues; consumers must not read the raw viz scales. */
475
+ --chart-categorical-line-1: var(--viz-brand-300);
476
+ --chart-categorical-line-2: var(--viz-orange-100);
477
+ --chart-categorical-line-3: var(--viz-green-200);
478
+ --chart-categorical-line-4: var(--viz-magenta-300);
479
+ --chart-categorical-line-5: var(--viz-acid-150);
480
+ --chart-categorical-line-6: var(--viz-purple-300);
481
+ --chart-categorical-line-7: var(--viz-sky-200);
482
+ --chart-categorical-line-8: var(--viz-red-300);
483
+ --chart-categorical-line-9: var(--viz-brand-150);
484
+ --chart-categorical-line-10: var(--viz-orange-300);
485
+ --chart-categorical-line-11: var(--viz-green-100);
486
+ --chart-categorical-line-12: var(--viz-magenta-150);
487
+ --chart-categorical-line-13: var(--viz-acid-100);
488
+ --chart-categorical-line-14: var(--viz-purple-150);
489
+ --chart-categorical-line-15: var(--viz-sky-100);
490
+ --chart-categorical-line-16: var(--viz-red-150);
491
+ --chart-categorical-line-17: var(--viz-brand-200);
492
+ --chart-categorical-line-18: var(--viz-orange-200);
493
+ --chart-categorical-line-19: var(--viz-green-150);
494
+ --chart-categorical-line-20: var(--viz-magenta-200);
495
+
496
+ /* Filled marks use the same hue order as lines, one scale step lighter. */
497
+ --chart-categorical-fill-1: var(--viz-brand-200);
498
+ --chart-categorical-fill-2: var(--viz-orange-75);
499
+ --chart-categorical-fill-3: var(--viz-green-150);
500
+ --chart-categorical-fill-4: var(--viz-magenta-200);
501
+ --chart-categorical-fill-5: var(--viz-acid-100);
502
+ --chart-categorical-fill-6: var(--viz-purple-200);
503
+ --chart-categorical-fill-7: var(--viz-sky-150);
504
+ --chart-categorical-fill-8: var(--viz-red-200);
505
+ --chart-categorical-fill-9: var(--viz-brand-100);
506
+ --chart-categorical-fill-10: var(--viz-orange-200);
507
+ --chart-categorical-fill-11: var(--viz-green-75);
508
+ --chart-categorical-fill-12: var(--viz-magenta-100);
509
+ --chart-categorical-fill-13: var(--viz-acid-75);
510
+ --chart-categorical-fill-14: var(--viz-purple-100);
511
+ --chart-categorical-fill-15: var(--viz-sky-75);
512
+ --chart-categorical-fill-16: var(--viz-red-100);
513
+ --chart-categorical-fill-17: var(--viz-brand-150);
514
+ --chart-categorical-fill-18: var(--viz-orange-150);
515
+ --chart-categorical-fill-19: var(--viz-green-100);
516
+ --chart-categorical-fill-20: var(--viz-magenta-150);
517
+
518
+ /* Single-hue palette for related chart breakdowns. */
519
+ --chart-brand-1: var(--viz-brand-300);
520
+ --chart-brand-2: var(--viz-brand-100);
521
+ --chart-brand-3: var(--viz-brand-500);
522
+ --chart-brand-4: var(--viz-brand-200);
523
+ --chart-brand-5: var(--viz-brand-400);
524
+ --chart-brand-6: var(--viz-brand-75);
525
+ --chart-brand-7: var(--viz-brand-600);
526
+ --chart-brand-8: var(--viz-brand-150);
527
+ --chart-brand-9: var(--viz-brand-50);
528
+ --chart-brand-10: var(--viz-brand-25);
529
+
530
+ /* Comparison series use lighter shades before stronger shades. */
531
+ --chart-comparison-1: var(--viz-brand-100);
532
+ --chart-comparison-2: var(--viz-brand-300);
533
+ --chart-comparison-3: var(--viz-orange-75);
534
+ --chart-comparison-4: var(--viz-orange-150);
535
+ --chart-comparison-5: var(--viz-magenta-100);
536
+ --chart-comparison-6: var(--viz-magenta-300);
537
+ --chart-comparison-7: var(--viz-acid-100);
538
+ --chart-comparison-8: var(--viz-acid-300);
539
+ --chart-comparison-9: var(--viz-purple-100);
540
+ --chart-comparison-10: var(--viz-purple-300);
541
+
542
+ --chart-single-fill: var(--chart-categorical-fill-1);
543
+ --chart-other: var(--viz-neutral-200);
544
+ --chart-positive: var(--viz-green-200);
545
+ --chart-warning: var(--viz-orange-200);
546
+ --chart-negative: var(--viz-red-300);
547
+ --chart-negative-subtle: var(--viz-red-25);
548
+ --chart-positive-fill: var(--viz-green-200);
549
+ --chart-warning-fill: var(--viz-orange-200);
550
+ --chart-negative-fill: var(--viz-red-300);
551
+ --chart-interaction-contrast: var(--viz-neutral-950);
552
+ --chart-on-color: var(--viz-neutral-10);
553
+ --chart-on-warning: var(--viz-neutral-950);
554
+
555
+ --chart-breakdown-input: var(--chart-brand-1);
556
+ --chart-breakdown-output: var(--chart-brand-4);
557
+ --chart-breakdown-other: var(--chart-brand-6);
558
+
559
+ /* Table heatmaps use muted semantic backgrounds for text-heavy cells. */
560
+ --table-heatmap-negative-1: color-mix(
561
+ in srgb,
562
+ var(--bg-error-subtle) 20%,
563
+ var(--bg-surface-level-1)
564
+ );
565
+ --table-heatmap-negative-2: color-mix(
566
+ in srgb,
567
+ var(--bg-error-subtle) 40%,
568
+ var(--bg-surface-level-1)
569
+ );
570
+ --table-heatmap-negative-3: color-mix(
571
+ in srgb,
572
+ var(--bg-error-subtle) 60%,
573
+ var(--bg-surface-level-1)
574
+ );
575
+ --table-heatmap-negative-4: color-mix(
576
+ in srgb,
577
+ var(--bg-error-subtle) 80%,
578
+ var(--bg-surface-level-1)
579
+ );
580
+ --table-heatmap-negative-5: var(--bg-error-subtle);
581
+ --table-heatmap-neutral: var(--bg-surface-level-1);
582
+ --table-heatmap-positive-1: color-mix(
583
+ in srgb,
584
+ var(--bg-success-subtle) 20%,
585
+ var(--bg-surface-level-1)
586
+ );
587
+ --table-heatmap-positive-2: color-mix(
588
+ in srgb,
589
+ var(--bg-success-subtle) 40%,
590
+ var(--bg-surface-level-1)
591
+ );
592
+ --table-heatmap-positive-3: color-mix(
593
+ in srgb,
594
+ var(--bg-success-subtle) 60%,
595
+ var(--bg-surface-level-1)
596
+ );
597
+ --table-heatmap-positive-4: color-mix(
598
+ in srgb,
599
+ var(--bg-success-subtle) 80%,
600
+ var(--bg-surface-level-1)
601
+ );
602
+ --table-heatmap-positive-5: var(--bg-success-subtle);
603
+ }
604
+ html.dark,
605
+ .dark[data-theme-scope] {
606
+ --popover: 240 7.32% 8.04%; /* gray-iron-950 */
607
+ --background: 240 7.32% 8.04%; /* --gray-25 */
608
+
609
+ /* colors */
610
+ /* gray */
611
+ --gray-25: #131316;
612
+ --gray-50: #1a1a1e;
613
+ --gray-100: #26272b;
614
+ --gray-200: #3f3f46;
615
+ --gray-300: #51525c;
616
+ --gray-400: #70707b;
617
+ --gray-500: #a0a0ab;
618
+ --gray-600: #d1d1d6;
619
+ --gray-700: #e4e4e7;
620
+ --gray-800: #f4f4f5;
621
+ --gray-900: #fafafa;
622
+ --gray-950: #fcfcfc;
623
+
624
+ /* neutral */
625
+ --neutral-25: #09090f;
626
+ --neutral-35: #0d0f18;
627
+ --neutral-50: #111521;
628
+ --neutral-100: #1b2030;
629
+ --neutral-200: #282e42;
630
+ --neutral-300: #393f55;
631
+ --neutral-400: #555d78;
632
+ --neutral-500: #8790ab;
633
+ --neutral-600: #cbd5e1;
634
+ --neutral-700: #e2e8f0;
635
+ --neutral-800: #edf2f7;
636
+ --neutral-900: #f5f8fb;
637
+ --neutral-950: #fafbfd;
638
+
639
+ --white: #131316;
640
+ --black: #ffffff;
641
+
642
+ /* Brand colors */
643
+ --brand-10: #101a30;
644
+ --brand-25: #102656;
645
+ --brand-50: #0c336a;
646
+ --brand-75: #0c3871;
647
+ --brand-100: #0d3d77;
648
+ --brand-200: #145095;
649
+ --brand-300: #1566b8;
650
+ --brand-400: #006ddd;
651
+ --brand-500: #0078f1;
652
+ --brand-600: #008dff;
653
+ --brand-700: #5fbef8;
654
+ --brand-800: #cce9ff;
655
+ --brand-900: #e5f4ff;
656
+ --brand-950: #f2faff;
657
+
658
+ /* red colors */
659
+ --red-25: #55160c;
660
+ --red-50: #7a271a;
661
+ --red-100: #912018;
662
+ --red-200: #b42318;
663
+ --red-300: #d92d20;
664
+ --red-400: #f04438;
665
+ --red-500: #f97066;
666
+ --red-600: #fda29b;
667
+ --red-700: #fecdca;
668
+ --red-800: #fee4e2;
669
+ --red-900: #fef3f2;
670
+ --red-950: #fffbfa;
671
+
672
+ /* orange colors */
673
+ --orange-25: #4c2400;
674
+ --orange-50: #6d3300;
675
+ --orange-100: #894101;
676
+ --orange-200: #ac5305;
677
+ --orange-300: #cd6002;
678
+ --orange-400: #f79009;
679
+ --orange-500: #fdb022;
680
+ --orange-600: #fec84b;
681
+ --orange-700: #fedf89;
682
+ --orange-800: #fef0c7;
683
+ --orange-900: #fffaeb;
684
+ --orange-950: #fffcf5;
685
+
686
+ /* green colors */
687
+ --green-25: #053321;
688
+ --green-50: #084d31;
689
+ --green-100: #065d3a;
690
+ --green-200: #047647;
691
+ --green-300: #079455;
692
+ --green-400: #19b26b;
693
+ --green-500: #46cd89;
694
+ --green-600: #75e0a7;
695
+ --green-700: #acefc6;
696
+ --green-800: #dcfae6;
697
+ --green-900: #ecfdf3;
698
+ --green-950: #f5fef9;
699
+
700
+ /* acid */
701
+ --acid-10: #0b1000;
702
+ --acid-25: #141a00;
703
+ --acid-50: #232c00;
704
+ --acid-100: #354200;
705
+ --acid-200: #495a00;
706
+ --acid-300: #607500;
707
+ --acid-400: #799200;
708
+ --acid-500: #93b000;
709
+ --acid-600: #aecf1a;
710
+ --acid-700: #cceb50;
711
+ --acid-800: #e3f797;
712
+ --acid-900: #f2fcc8;
713
+ --acid-950: #fafee8;
714
+
715
+ /* purple colors */
716
+ --purple-10: #0f0822;
717
+ --purple-25: #190d38;
718
+ --purple-50: #291753;
719
+ --purple-100: #3b2560;
720
+ --purple-200: #4e3487;
721
+ --purple-300: #6244a0;
722
+ --purple-400: #7655b8;
723
+ --purple-500: #8b71cc;
724
+ --purple-600: #a691df;
725
+ --purple-700: #c5b4f0;
726
+ --purple-800: #e3d9ff;
727
+ --purple-900: #f1ecff;
728
+ --purple-950: #f9f7ff;
729
+
730
+ /* BACKGROUND COLORS */
731
+ --bg-surface-level-1: var(--neutral-25);
732
+ --bg-surface-level-1-hover: var(--neutral-50);
733
+ --bg-surface-level-2: var(--neutral-50);
734
+ --bg-surface-level-2-hover: var(--neutral-100);
735
+ --bg-surface-level-3: var(--neutral-100);
736
+ --bg-surface-level-4: var(--neutral-200);
737
+ --bg-disabled: var(--neutral-100);
738
+ --bg-elevated: var(--neutral-35);
739
+ --bg-elevated-hover: var(--neutral-100);
740
+ --bg-elevated-selected: var(--neutral-200);
741
+ --bg-overlay: rgba(0, 0, 0, 0.7);
742
+
743
+ /* BRAND */
744
+ --bg-brand: var(--brand-500);
745
+ --bg-brand-hover: var(--brand-400);
746
+ --bg-brand-subtle: var(--brand-50);
747
+ --bg-brand-subtle-hover: var(--brand-100);
748
+ --bg-brand-subtle-gradient: linear-gradient(
749
+ to bottom right,
750
+ var(--brand-25),
751
+ var(--brand-10)
752
+ );
753
+ --bg-brand-illustration: var(--brand-10);
754
+ --bg-brand-muted: var(--brand-10);
755
+ --bg-purple: var(--purple-25);
756
+
757
+ /* INTENT */
758
+ --bg-success: var(--green-25);
759
+ --bg-success-subtle: var(--green-100);
760
+ --bg-success-strong: var(--green-600);
761
+ --bg-error: var(--red-25);
762
+ --bg-error-subtle: var(--red-100);
763
+ --bg-error-strong: var(--red-400);
764
+ --bg-warning: var(--orange-25);
765
+ --bg-warning-subtle: var(--orange-100);
766
+ --bg-warning-strong: var(--orange-600);
767
+
768
+ /* CONTROL */
769
+ --bg-control-active: var(--brand-500);
770
+ --bg-control-active-hover: var(--brand-600);
771
+ --bg-control-thumb: var(--black);
772
+ --bg-control-disabled: var(--neutral-200);
773
+ --text-control-active-foreground: var(--bg-control-thumb);
774
+
775
+ /* SELECTED */
776
+ --bg-selected: var(--brand-50);
777
+ --bg-selected-hover: var(--brand-100);
778
+
779
+ /* BORDER */
780
+ --border-default: var(--neutral-300);
781
+ --border-subtle: var(--neutral-200);
782
+ --border-muted: var(--neutral-100);
783
+ --border-faint: var(--neutral-50);
784
+ --border-strong: var(--neutral-600);
785
+ --border-disabled: var(--neutral-200);
786
+ --border-focus: var(--brand-500);
787
+ --border-error: var(--red-200);
788
+ --border-error-strong: var(--red-600);
789
+ --border-brand: var(--brand-400);
790
+ --border-brand-strong: var(--brand-600);
791
+ --border-brand-subtle: var(--brand-50);
792
+ --border-warning: var(--orange-300);
793
+ --border-success: var(--green-200);
794
+ --border-purple: var(--purple-200);
795
+
796
+ /* TEXT */
797
+ --text-primary: var(--neutral-900);
798
+ --text-secondary: var(--neutral-700);
799
+ --text-secondary-hover: var(--neutral-800);
800
+ --text-tertiary: var(--neutral-600);
801
+ --text-tertiary-hover: var(--neutral-700);
802
+ --text-quaternary: var(--neutral-500);
803
+ --text-disabled: var(--neutral-400);
804
+ --text-placeholder: var(--neutral-400);
805
+ --text-error-primary: var(--red-700);
806
+ --text-error-secondary: var(--red-600);
807
+ --text-error-tertiary: var(--red-500);
808
+ --text-warning-primary: var(--orange-700);
809
+ --text-warning-secondary: var(--orange-600);
810
+ --text-warning-tertiary: var(--orange-500);
811
+ --text-success-primary: var(--green-700);
812
+ --text-success-secondary: var(--green-600);
813
+ --text-success-tertiary: var(--green-500);
814
+ --text-brand-primary: var(--brand-700);
815
+ --text-brand-secondary: var(--brand-600);
816
+ --text-brand-tertiary: var(--brand-500);
817
+ --text-brand-disabled: var(--brand-300);
818
+ --text-brand-on-fill: var(--black);
819
+ --text-link: var(--brand-700);
820
+ --text-link-hover: var(--brand-800);
821
+ --text-purple: var(--purple-700);
822
+
823
+ /* ICON */
824
+ --icon-primary: var(--neutral-900);
825
+ --icon-secondary: var(--neutral-700);
826
+ --icon-tertiary: var(--neutral-500);
827
+ --icon-disabled: var(--neutral-400);
828
+ --icon-brand: var(--brand-500);
829
+ --icon-brand-fill: #161f34;
830
+ --icon-brand-background: #7fc8ff;
831
+ --icon-error: var(--red-600);
832
+ --icon-success: var(--green-600);
833
+ --icon-warning: var(--orange-600);
834
+
835
+ /* STATUS */
836
+ --text-status-green: #0fc966;
837
+ --text-status-yellow: #e6a81b;
838
+ --text-status-red: var(--red-400);
839
+ --text-status-orange: #ff5d1b;
840
+ --border-status-green: #064c21;
841
+ --border-status-yellow: #5b4300;
842
+ --border-status-red: #500601;
843
+ --border-status-orange: #7c2b09;
844
+
845
+ /* SHADOW — more opaque in dark mode */
846
+ /* Low-elevation shadow color for custom composed shadows. */
847
+ --shadow-color-subtle: rgba(16, 24, 40, 0.05);
848
+ --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.5), 0 1px 2px rgba(0, 0, 0, 0.4);
849
+ --shadow-md:
850
+ 0 4px 6px -1px rgba(0, 0, 0, 0.5), 0 2px 4px -1px rgba(0, 0, 0, 0.4);
851
+ --shadow-lg:
852
+ 0 10px 15px -3px rgba(0, 0, 0, 0.5), 0 4px 6px -2px rgba(0, 0, 0, 0.3);
853
+
854
+ /* SCROLLBAR */
855
+ --scrollbar-thumb: rgba(255, 255, 255, 0.3);
856
+ --scrollbar-thumb-hover: rgba(255, 255, 255, 0.5);
857
+
858
+ /* Syntax colors for code blocks. */
859
+ --syntax-plain: #cbd5e1;
860
+ --syntax-keyword: #60a5fa;
861
+ --syntax-string: #4ade80;
862
+ --syntax-number: #fb923c;
863
+ --syntax-comment: #64748b;
864
+ --syntax-function: #c4b5fd;
865
+ --syntax-type: #67e8f9;
866
+ --syntax-property: #93c5fd;
867
+ --syntax-constant: #fcd34d;
868
+ --syntax-operator: #94a3b8;
869
+ --syntax-tag: #60a5fa;
870
+ --syntax-decorator: #f472b6;
871
+
872
+ /* DEPRECATED ALIASES — remove after consuming code is updated */
873
+ --bg-primary: var(--bg-surface-level-1);
874
+ --bg-primary-hover: var(--bg-surface-level-1-hover);
875
+ --bg-primary_hover: var(--bg-primary-hover);
876
+ --bg-secondary: var(--bg-surface-level-2);
877
+ --bg-secondary-hover: var(--bg-surface-level-2-hover);
878
+ --bg-secondary_hover: var(--bg-secondary-hover);
879
+ --bg-tertiary: var(--bg-surface-level-3);
880
+ --bg-quaternary: var(--bg-surface-level-4);
881
+ --bg-popover-urgent: var(--neutral-100);
882
+ --bg-brand-primary: var(--bg-brand);
883
+ --bg-brand-primary_hover: var(--bg-brand-hover);
884
+ --bg-brand-secondary: var(--bg-brand-subtle);
885
+ --bg-brand-secondary_hover: var(--bg-brand-subtle-hover);
886
+ --bg-brand-tertiary: var(--bg-brand-muted);
887
+ --bg-success-primary: var(--bg-success);
888
+ --bg-success-secondary: var(--bg-success-subtle);
889
+ --bg-error-primary: var(--bg-error);
890
+ --bg-error-secondary: var(--bg-error-subtle);
891
+ --bg-warning-primary: var(--bg-warning);
892
+ --bg-warning-secondary: var(--bg-warning-subtle);
893
+ --border-primary: var(--border-default);
894
+ --border-secondary: var(--border-subtle);
895
+ --border-tertiary: var(--border-muted);
896
+ --border-quaternary: var(--border-faint);
897
+ --text-button-primary: var(--black);
898
+
899
+ --chart-categorical-line-1: var(--viz-brand-150);
900
+ --chart-categorical-line-2: var(--viz-orange-100);
901
+ --chart-categorical-line-3: var(--viz-green-150);
902
+ --chart-categorical-line-4: var(--viz-magenta-150);
903
+ --chart-categorical-line-5: var(--viz-acid-150);
904
+ --chart-categorical-line-6: var(--viz-purple-150);
905
+ --chart-categorical-line-7: var(--viz-sky-150);
906
+ --chart-categorical-line-8: var(--viz-red-150);
907
+ --chart-categorical-line-9: var(--viz-brand-300);
908
+ --chart-categorical-line-10: var(--viz-orange-300);
909
+ --chart-categorical-line-11: var(--viz-green-75);
910
+ --chart-categorical-line-12: var(--viz-magenta-300);
911
+ --chart-categorical-line-13: var(--viz-acid-75);
912
+ --chart-categorical-line-14: var(--viz-purple-300);
913
+ --chart-categorical-line-15: var(--viz-sky-300);
914
+ --chart-categorical-line-16: var(--viz-red-300);
915
+ --chart-categorical-line-17: var(--viz-brand-75);
916
+ --chart-categorical-line-18: var(--viz-orange-200);
917
+ --chart-categorical-line-19: var(--viz-green-300);
918
+ --chart-categorical-line-20: var(--viz-magenta-75);
919
+
920
+ /* Filled marks use the same hue order as lines, one scale step darker. */
921
+ --chart-categorical-fill-1: var(--viz-brand-200);
922
+ --chart-categorical-fill-2: var(--viz-orange-150);
923
+ --chart-categorical-fill-3: var(--viz-green-200);
924
+ --chart-categorical-fill-4: var(--viz-magenta-200);
925
+ --chart-categorical-fill-5: var(--viz-acid-200);
926
+ --chart-categorical-fill-6: var(--viz-purple-200);
927
+ --chart-categorical-fill-7: var(--viz-sky-200);
928
+ --chart-categorical-fill-8: var(--viz-red-200);
929
+ --chart-categorical-fill-9: var(--viz-brand-400);
930
+ --chart-categorical-fill-10: var(--viz-orange-400);
931
+ --chart-categorical-fill-11: var(--viz-green-100);
932
+ --chart-categorical-fill-12: var(--viz-magenta-400);
933
+ --chart-categorical-fill-13: var(--viz-acid-100);
934
+ --chart-categorical-fill-14: var(--viz-purple-400);
935
+ --chart-categorical-fill-15: var(--viz-sky-400);
936
+ --chart-categorical-fill-16: var(--viz-red-400);
937
+ --chart-categorical-fill-17: var(--viz-brand-100);
938
+ --chart-categorical-fill-18: var(--viz-orange-300);
939
+ --chart-categorical-fill-19: var(--viz-green-400);
940
+ --chart-categorical-fill-20: var(--viz-magenta-100);
941
+
942
+ --chart-brand-1: var(--viz-brand-150);
943
+ --chart-brand-2: var(--viz-brand-400);
944
+ --chart-brand-3: var(--viz-brand-75);
945
+ --chart-brand-4: var(--viz-brand-300);
946
+ --chart-brand-5: var(--viz-brand-100);
947
+ --chart-brand-6: var(--viz-brand-500);
948
+ --chart-brand-7: var(--viz-brand-200);
949
+ --chart-brand-8: var(--viz-brand-50);
950
+ --chart-brand-9: var(--viz-brand-25);
951
+ --chart-brand-10: var(--viz-brand-10);
952
+
953
+ --chart-comparison-1: var(--viz-brand-150);
954
+ --chart-comparison-2: var(--viz-brand-400);
955
+ --chart-comparison-3: var(--viz-orange-100);
956
+ --chart-comparison-4: var(--viz-orange-200);
957
+ --chart-comparison-5: var(--viz-magenta-150);
958
+ --chart-comparison-6: var(--viz-magenta-400);
959
+ --chart-comparison-7: var(--viz-acid-150);
960
+ --chart-comparison-8: var(--viz-acid-400);
961
+ --chart-comparison-9: var(--viz-purple-150);
962
+ --chart-comparison-10: var(--viz-purple-400);
963
+
964
+ --chart-other: var(--viz-neutral-300);
965
+ --chart-positive: var(--viz-green-50);
966
+ --chart-warning: var(--viz-orange-50);
967
+ --chart-negative: var(--viz-red-50);
968
+ --chart-negative-subtle: var(--viz-red-950);
969
+ --chart-positive-fill: var(--viz-green-150);
970
+ --chart-warning-fill: var(--viz-orange-150);
971
+ --chart-negative-fill: var(--viz-red-150);
972
+ --chart-interaction-contrast: var(--viz-neutral-10);
973
+ --chart-on-color: var(--viz-neutral-950);
974
+ --chart-on-warning: var(--viz-neutral-950);
975
+
976
+ --chart-breakdown-input: var(--chart-brand-1);
977
+ --chart-breakdown-output: var(--chart-brand-4);
978
+ --chart-breakdown-other: var(--chart-brand-6);
979
+ }