@x12i/ui 0.0.0-stage → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,4373 @@
1
+ /*
2
+ * @x12i/ui styles.
3
+ *
4
+ * Tokens only: no hard-coded colors, spacing or font sizes (a test enforces
5
+ * this). Requires the kit variables, for example:
6
+ *
7
+ * @import "@x12i/themes/themes.css";
8
+ * @import "@x12i/ui/styles.css";
9
+ *
10
+ * Every selector sits inside :where(), so it has zero specificity and any app
11
+ * class overrides it without a specificity fight. Components expose styling
12
+ * hooks as data attributes (data-variant, data-size, data-disabled, ...).
13
+ * Layout uses logical properties, so right-to-left works without extra CSS.
14
+ */
15
+
16
+ /* ---------------------------------------------------------------- Button */
17
+
18
+ :where([data-kit="button"]) {
19
+ /* Tone: accent (default) */
20
+ --_solid: var(--kit-color-accent-default);
21
+ --_solid-hover: var(--kit-color-accent-hover);
22
+ --_solid-active: var(--kit-color-accent-active);
23
+ --_on-solid: var(--kit-color-accent-on-accent);
24
+ --_text: var(--kit-color-text-link);
25
+ --_edge: var(--kit-color-accent-default);
26
+ --_subtle: var(--kit-color-accent-subtle);
27
+
28
+ /* Size: md (default) */
29
+ --_height: var(--kit-button-height-md);
30
+ --_pad: var(--kit-button-padding-inline-md);
31
+ --_font-size: var(--kit-text-label-size);
32
+ --_line-height: var(--kit-text-label-line-height);
33
+
34
+ /* Variant: solid (default) */
35
+ --_bg: var(--_solid);
36
+ --_bg-hover: var(--_solid-hover);
37
+ --_bg-active: var(--_solid-active);
38
+ --_fg: var(--_on-solid);
39
+ --_bd: transparent;
40
+
41
+ position: relative;
42
+ box-sizing: border-box;
43
+ display: inline-flex;
44
+ align-items: center;
45
+ justify-content: center;
46
+ gap: var(--kit-button-gap);
47
+ block-size: var(--_height);
48
+ min-block-size: var(--kit-size-target-min);
49
+ min-inline-size: var(--kit-size-target-min);
50
+ padding-block: 0;
51
+ padding-inline: var(--_pad);
52
+ margin: 0;
53
+ border: var(--kit-border-width-default) solid var(--_bd);
54
+ border-radius: var(--kit-radius-control);
55
+ background-color: var(--_bg);
56
+ color: var(--_fg);
57
+ font-family: var(--kit-font-family-sans);
58
+ font-size: var(--_font-size);
59
+ font-weight: var(--kit-text-label-weight);
60
+ line-height: var(--_line-height);
61
+ text-decoration: none;
62
+ white-space: nowrap;
63
+ cursor: pointer;
64
+ user-select: none;
65
+ -webkit-tap-highlight-color: transparent;
66
+ transition:
67
+ background-color var(--kit-duration-instant) var(--kit-easing-standard),
68
+ border-color var(--kit-duration-instant) var(--kit-easing-standard),
69
+ color var(--kit-duration-instant) var(--kit-easing-standard);
70
+ }
71
+
72
+ /* Tone */
73
+ :where([data-kit="button"][data-tone="neutral"]) {
74
+ --_solid: var(--kit-color-bg-inverse);
75
+ --_solid-hover: color-mix(in srgb, var(--kit-color-bg-inverse) 88%, var(--kit-color-bg-canvas));
76
+ --_solid-active: color-mix(in srgb, var(--kit-color-bg-inverse) 76%, var(--kit-color-bg-canvas));
77
+ --_on-solid: var(--kit-color-text-inverse);
78
+ --_text: var(--kit-color-text-primary);
79
+ --_edge: var(--kit-color-border-default);
80
+ --_subtle: color-mix(in srgb, var(--kit-color-text-primary) 8%, transparent);
81
+ }
82
+
83
+ /* Variants */
84
+ :where([data-kit="button"][data-variant="solid"]) {
85
+ --_bg: var(--_solid);
86
+ --_bg-hover: var(--_solid-hover);
87
+ --_bg-active: var(--_solid-active);
88
+ --_fg: var(--_on-solid);
89
+ --_bd: transparent;
90
+ }
91
+
92
+ :where([data-kit="button"][data-variant="soft"]) {
93
+ --_bg: var(--_subtle);
94
+ --_bg-hover: color-mix(in srgb, var(--_subtle), var(--_text) 10%);
95
+ --_bg-active: color-mix(in srgb, var(--_subtle), var(--_text) 18%);
96
+ --_fg: var(--_text);
97
+ --_bd: transparent;
98
+ }
99
+
100
+ :where([data-kit="button"][data-variant="outline"]) {
101
+ --_bg: transparent;
102
+ --_bg-hover: var(--_subtle);
103
+ --_bg-active: color-mix(in srgb, var(--_subtle), var(--_text) 10%);
104
+ --_fg: var(--_text);
105
+ --_bd: var(--_edge);
106
+ }
107
+
108
+ :where([data-kit="button"][data-variant="ghost"]) {
109
+ --_bg: transparent;
110
+ --_bg-hover: var(--_subtle);
111
+ --_bg-active: color-mix(in srgb, var(--_subtle), var(--_text) 10%);
112
+ --_fg: var(--_text);
113
+ --_bd: transparent;
114
+ }
115
+
116
+ /* Sizes */
117
+ :where([data-kit="button"][data-size="xs"]) {
118
+ --_height: var(--kit-button-height-xs);
119
+ --_pad: var(--kit-button-padding-inline-xs);
120
+ --_font-size: var(--kit-text-caption-size);
121
+ --_line-height: var(--kit-text-caption-line-height);
122
+ }
123
+
124
+ :where([data-kit="button"][data-size="sm"]) {
125
+ --_height: var(--kit-button-height-sm);
126
+ --_pad: var(--kit-button-padding-inline-sm);
127
+ }
128
+
129
+ :where([data-kit="button"][data-size="lg"]) {
130
+ --_height: var(--kit-button-height-lg);
131
+ --_pad: var(--kit-button-padding-inline-lg);
132
+ --_font-size: var(--kit-text-body-size);
133
+ --_line-height: var(--kit-text-body-line-height);
134
+ }
135
+
136
+ :where([data-kit="button"][data-size="xl"]) {
137
+ --_height: var(--kit-button-height-xl);
138
+ --_pad: var(--kit-button-padding-inline-xl);
139
+ --_font-size: var(--kit-text-body-size);
140
+ --_line-height: var(--kit-text-body-line-height);
141
+ }
142
+
143
+ /* Icon-only buttons are square. */
144
+ :where([data-kit="button"][data-icon-only]) {
145
+ inline-size: var(--_height);
146
+ padding-inline: 0;
147
+ }
148
+
149
+ /* States */
150
+ :where([data-kit="button"]):hover {
151
+ background-color: var(--_bg-hover);
152
+ }
153
+
154
+ :where([data-kit="button"]):active {
155
+ background-color: var(--_bg-active);
156
+ }
157
+
158
+ :where([data-kit="button"]):focus-visible {
159
+ outline: var(--kit-border-width-focus) solid var(--kit-color-border-focus);
160
+ outline-offset: var(--kit-space-0-5);
161
+ }
162
+
163
+ :where([data-kit="button"][data-loading]) {
164
+ cursor: progress;
165
+ }
166
+
167
+ :where([data-kit="button"]):is(:disabled, [data-disabled]:not([data-loading])) {
168
+ --_bg: transparent;
169
+ --_bg-hover: var(--_bg);
170
+ --_bg-active: var(--_bg);
171
+ --_fg: var(--kit-color-text-disabled);
172
+ --_bd: var(--kit-color-border-subtle);
173
+ cursor: not-allowed;
174
+ }
175
+
176
+ :where([data-kit="button"][data-variant="solid"]):is(:disabled, [data-disabled]:not([data-loading])) {
177
+ --_bg: var(--kit-color-border-subtle);
178
+ }
179
+
180
+ /* Slots: the content stays in layout while loading, so the width never jumps. */
181
+ :where([data-kit="button"] > [data-kit-slot="content"]) {
182
+ display: inline-flex;
183
+ align-items: center;
184
+ justify-content: center;
185
+ gap: var(--kit-button-gap);
186
+ }
187
+
188
+ :where([data-kit="button"][data-loading] > [data-kit-slot="content"]) {
189
+ visibility: hidden;
190
+ }
191
+
192
+ :where([data-kit="button"] > [data-kit-slot="spinner"]) {
193
+ position: absolute;
194
+ inset: 0;
195
+ display: grid;
196
+ place-items: center;
197
+ }
198
+
199
+ @media (forced-colors: active) {
200
+ :where([data-kit="button"]) {
201
+ border-color: ButtonText;
202
+ }
203
+
204
+ :where([data-kit="button"]):is(:disabled, [data-disabled]:not([data-loading])) {
205
+ border-color: GrayText;
206
+ }
207
+ }
208
+
209
+ /* ----------------------------------------------------------------- Badge */
210
+
211
+ :where([data-kit="badge"]) {
212
+ --_bg: color-mix(in srgb, var(--kit-color-text-primary) 8%, transparent);
213
+ --_fg: var(--kit-color-text-primary);
214
+ --_bd: var(--kit-color-border-default);
215
+ --_height: var(--kit-badge-height-md);
216
+ --_pad: var(--kit-space-2);
217
+
218
+ box-sizing: border-box;
219
+ display: inline-flex;
220
+ align-items: center;
221
+ gap: var(--kit-space-1);
222
+ block-size: var(--_height);
223
+ padding-inline: var(--_pad);
224
+ border: var(--kit-border-width-default) solid transparent;
225
+ border-radius: var(--kit-radius-pill);
226
+ background-color: var(--_bg);
227
+ color: var(--_fg);
228
+ font-family: var(--kit-font-family-sans);
229
+ font-size: var(--kit-text-caption-size);
230
+ font-weight: var(--kit-text-label-weight);
231
+ line-height: var(--kit-text-caption-line-height);
232
+ white-space: nowrap;
233
+ font-variant-numeric: tabular-nums;
234
+ }
235
+
236
+ :where([data-kit="badge"][data-size="sm"]) {
237
+ --_height: var(--kit-badge-height-sm);
238
+ --_pad: var(--kit-space-1);
239
+ }
240
+
241
+ /* Tone sets a soft palette: background, foreground, edge. */
242
+ :where([data-kit="badge"][data-tone="accent"]) {
243
+ --_bg: var(--kit-color-accent-subtle);
244
+ --_fg: var(--kit-color-text-link);
245
+ --_bd: var(--kit-color-accent-default);
246
+ }
247
+
248
+ :where([data-kit="badge"][data-tone="success"]) {
249
+ --_bg: var(--kit-color-status-success-background);
250
+ --_fg: var(--kit-color-status-success-foreground);
251
+ --_bd: var(--kit-color-status-success-border);
252
+ }
253
+
254
+ :where([data-kit="badge"][data-tone="warning"]) {
255
+ --_bg: var(--kit-color-status-warning-background);
256
+ --_fg: var(--kit-color-status-warning-foreground);
257
+ --_bd: var(--kit-color-status-warning-border);
258
+ }
259
+
260
+ :where([data-kit="badge"][data-tone="danger"]) {
261
+ --_bg: var(--kit-color-status-danger-background);
262
+ --_fg: var(--kit-color-status-danger-foreground);
263
+ --_bd: var(--kit-color-status-danger-border);
264
+ }
265
+
266
+ :where([data-kit="badge"][data-tone="info"]) {
267
+ --_bg: var(--kit-color-status-info-background);
268
+ --_fg: var(--kit-color-status-info-foreground);
269
+ --_bd: var(--kit-color-status-info-border);
270
+ }
271
+
272
+ /* Variants: soft shows the palette, solid inverts it, outline keeps only the edge. */
273
+ :where([data-kit="badge"][data-variant="soft"]) {
274
+ border-color: transparent;
275
+ }
276
+
277
+ :where([data-kit="badge"][data-variant="outline"]) {
278
+ background-color: transparent;
279
+ border-color: var(--_bd);
280
+ }
281
+
282
+ :where([data-kit="badge"][data-variant="solid"]) {
283
+ background-color: var(--_fg);
284
+ color: var(--_bg);
285
+ border-color: transparent;
286
+ }
287
+
288
+ :where([data-kit="badge"][data-variant="solid"][data-tone="neutral"]) {
289
+ background-color: var(--kit-color-bg-inverse);
290
+ color: var(--kit-color-text-inverse);
291
+ }
292
+
293
+ :where([data-kit="badge"][data-variant="solid"][data-tone="accent"]) {
294
+ background-color: var(--kit-color-accent-default);
295
+ color: var(--kit-color-accent-on-accent);
296
+ }
297
+
298
+ @media (forced-colors: active) {
299
+ :where([data-kit="badge"]) {
300
+ border-color: CanvasText;
301
+ }
302
+ }
303
+
304
+ /* ---------------------------------------------------------- Stack, Inline */
305
+
306
+ :where([data-kit="stack"]),
307
+ :where([data-kit="inline"]) {
308
+ display: flex;
309
+ box-sizing: border-box;
310
+ min-inline-size: 0;
311
+ }
312
+
313
+ :where([data-kit="stack"]) {
314
+ flex-direction: column;
315
+ }
316
+
317
+ :where([data-kit="inline"]) {
318
+ flex-direction: row;
319
+ }
320
+
321
+ :where([data-kit="inline"][data-wrap]) {
322
+ flex-wrap: wrap;
323
+ }
324
+
325
+ :where([data-kit="stack"], [data-kit="inline"])[data-align="start"] {
326
+ align-items: flex-start;
327
+ }
328
+
329
+ :where([data-kit="stack"], [data-kit="inline"])[data-align="center"] {
330
+ align-items: center;
331
+ }
332
+
333
+ :where([data-kit="stack"], [data-kit="inline"])[data-align="end"] {
334
+ align-items: flex-end;
335
+ }
336
+
337
+ :where([data-kit="stack"], [data-kit="inline"])[data-align="stretch"] {
338
+ align-items: stretch;
339
+ }
340
+
341
+ :where([data-kit="stack"], [data-kit="inline"])[data-align="baseline"] {
342
+ align-items: baseline;
343
+ }
344
+
345
+ :where([data-kit="stack"], [data-kit="inline"])[data-justify="start"] {
346
+ justify-content: flex-start;
347
+ }
348
+
349
+ :where([data-kit="stack"], [data-kit="inline"])[data-justify="center"] {
350
+ justify-content: center;
351
+ }
352
+
353
+ :where([data-kit="stack"], [data-kit="inline"])[data-justify="end"] {
354
+ justify-content: flex-end;
355
+ }
356
+
357
+ :where([data-kit="stack"], [data-kit="inline"])[data-justify="between"] {
358
+ justify-content: space-between;
359
+ }
360
+
361
+ :where([data-kit="stack"], [data-kit="inline"])[data-justify="around"] {
362
+ justify-content: space-around;
363
+ }
364
+
365
+ /* --------------------------------------------------------------- Divider */
366
+
367
+ :where([data-kit="divider"]) {
368
+ box-sizing: border-box;
369
+ flex-shrink: 0;
370
+ margin: 0;
371
+ border: 0;
372
+ background-color: var(--kit-color-border-subtle);
373
+ }
374
+
375
+ :where([data-kit="divider"][data-orientation="horizontal"]) {
376
+ inline-size: 100%;
377
+ block-size: var(--kit-border-width-default);
378
+ }
379
+
380
+ :where([data-kit="divider"][data-orientation="vertical"]) {
381
+ align-self: stretch;
382
+ inline-size: var(--kit-border-width-default);
383
+ block-size: auto;
384
+ min-block-size: var(--kit-size-16);
385
+ }
386
+
387
+ @media (forced-colors: active) {
388
+ :where([data-kit="divider"]) {
389
+ background-color: GrayText;
390
+ }
391
+ }
392
+
393
+ /* --------------------------------------------------------------- Spinner */
394
+
395
+ :where([data-kit="spinner"]) {
396
+ --_size: var(--kit-size-icon-md);
397
+
398
+ display: inline-flex;
399
+ flex-shrink: 0;
400
+ inline-size: var(--_size);
401
+ block-size: var(--_size);
402
+ color: inherit;
403
+ }
404
+
405
+ :where([data-kit="spinner"][data-size="xs"]) {
406
+ --_size: var(--kit-size-icon-xs);
407
+ }
408
+
409
+ :where([data-kit="spinner"][data-size="sm"]) {
410
+ --_size: var(--kit-size-icon-sm);
411
+ }
412
+
413
+ :where([data-kit="spinner"][data-size="lg"]) {
414
+ --_size: var(--kit-size-icon-lg);
415
+ }
416
+
417
+ :where([data-kit="spinner"] > svg) {
418
+ inline-size: 100%;
419
+ block-size: 100%;
420
+ animation: kit-spin calc(var(--kit-duration-slow) * 2) linear infinite;
421
+ }
422
+
423
+ :where([data-kit="spinner"] circle) {
424
+ stroke: currentcolor;
425
+ stroke-width: var(--kit-icon-stroke-width);
426
+ stroke-linecap: round;
427
+ }
428
+
429
+ :where([data-kit="spinner"] [data-kit-slot="spinner-track"]) {
430
+ opacity: 0.25;
431
+ }
432
+
433
+ :where([data-kit="spinner"] [data-kit-slot="spinner-arc"]) {
434
+ stroke-dasharray: 14 100;
435
+ }
436
+
437
+ @keyframes kit-spin {
438
+ to {
439
+ transform: rotate(1turn);
440
+ }
441
+ }
442
+
443
+ /* Reduced motion: the arc stays visible without spinning. */
444
+ @media (prefers-reduced-motion: reduce) {
445
+ :where([data-kit="spinner"] > svg) {
446
+ animation: none;
447
+ }
448
+ }
449
+
450
+ /* --------------------------------------------------------- VisuallyHidden */
451
+
452
+ /*
453
+ * The 1px clip is the standard technique, expressed with the hairline token so
454
+ * no raw length appears here.
455
+ */
456
+ :where([data-kit="visually-hidden"]) {
457
+ position: absolute;
458
+ inline-size: var(--kit-border-width-default);
459
+ block-size: var(--kit-border-width-default);
460
+ margin: calc(var(--kit-border-width-default) * -1);
461
+ padding: 0;
462
+ overflow: hidden;
463
+ clip-path: inset(50%);
464
+ white-space: nowrap;
465
+ border: 0;
466
+ }
467
+
468
+ /* -------------------------------------------------------------- Providers */
469
+
470
+ :where([data-kit="theme-provider"]),
471
+ :where([data-kit="density-provider"]) {
472
+ display: contents;
473
+ }
474
+
475
+ /* An explicit theme paints its own surface so the subtree actually switches. */
476
+ :where([data-kit="theme-provider"][data-theme]) {
477
+ display: block;
478
+ background-color: var(--kit-color-bg-canvas);
479
+ color: var(--kit-color-text-primary);
480
+ }
481
+
482
+ /* ----------------------------------------------------------- ButtonGroup */
483
+
484
+ :where([data-kit="button-group"]) {
485
+ display: inline-flex;
486
+ align-items: stretch;
487
+ box-sizing: border-box;
488
+ }
489
+
490
+ :where([data-kit="button-group"][data-orientation="vertical"]) {
491
+ flex-direction: column;
492
+ }
493
+
494
+ :where([data-kit="button-group"]:not([data-attached])) {
495
+ gap: var(--kit-space-control-gap);
496
+ }
497
+
498
+ /* Attached: shared borders, only the outer corners stay round. */
499
+ :where([data-kit="button-group"][data-attached]) > :where(*) {
500
+ border-radius: 0;
501
+ }
502
+
503
+ :where([data-kit="button-group"][data-attached][data-orientation="horizontal"]) > :where(*:not(:first-child)) {
504
+ margin-inline-start: calc(var(--kit-border-width-default) * -1);
505
+ }
506
+
507
+ :where([data-kit="button-group"][data-attached][data-orientation="vertical"]) > :where(*:not(:first-child)) {
508
+ margin-block-start: calc(var(--kit-border-width-default) * -1);
509
+ }
510
+
511
+ :where([data-kit="button-group"][data-attached][data-orientation="horizontal"]) > :where(*:first-child) {
512
+ border-start-start-radius: var(--kit-radius-control);
513
+ border-end-start-radius: var(--kit-radius-control);
514
+ }
515
+
516
+ :where([data-kit="button-group"][data-attached][data-orientation="horizontal"]) > :where(*:last-child) {
517
+ border-start-end-radius: var(--kit-radius-control);
518
+ border-end-end-radius: var(--kit-radius-control);
519
+ }
520
+
521
+ :where([data-kit="button-group"][data-attached][data-orientation="vertical"]) > :where(*:first-child) {
522
+ border-start-start-radius: var(--kit-radius-control);
523
+ border-start-end-radius: var(--kit-radius-control);
524
+ }
525
+
526
+ :where([data-kit="button-group"][data-attached][data-orientation="vertical"]) > :where(*:last-child) {
527
+ border-end-start-radius: var(--kit-radius-control);
528
+ border-end-end-radius: var(--kit-radius-control);
529
+ }
530
+
531
+ /* The hovered or focused button draws its whole border over its neighbours. */
532
+ :where([data-kit="button-group"][data-attached]) > :where(*:hover, *:focus-visible, *[data-pressed]) {
533
+ position: relative;
534
+ z-index: 1;
535
+ }
536
+
537
+ /* ---------------------------------------------------------------- Toggle */
538
+
539
+ :where([data-kit="toggle"]) {
540
+ --_height: var(--kit-button-height-md);
541
+ --_pad: var(--kit-button-padding-inline-md);
542
+ --_font-size: var(--kit-text-label-size);
543
+ --_line-height: var(--kit-text-label-line-height);
544
+ --_bg: transparent;
545
+ --_bg-hover: color-mix(in srgb, var(--kit-color-text-primary) 8%, transparent);
546
+ --_fg: var(--kit-color-text-primary);
547
+ --_bd: var(--kit-color-border-default);
548
+
549
+ position: relative;
550
+ box-sizing: border-box;
551
+ display: inline-flex;
552
+ align-items: center;
553
+ justify-content: center;
554
+ gap: var(--kit-button-gap);
555
+ block-size: var(--_height);
556
+ min-block-size: var(--kit-size-target-min);
557
+ min-inline-size: var(--kit-size-target-min);
558
+ padding-block: 0;
559
+ padding-inline: var(--_pad);
560
+ margin: 0;
561
+ border: var(--kit-border-width-default) solid var(--_bd);
562
+ border-radius: var(--kit-radius-control);
563
+ background-color: var(--_bg);
564
+ color: var(--_fg);
565
+ font-family: var(--kit-font-family-sans);
566
+ font-size: var(--_font-size);
567
+ font-weight: var(--kit-text-label-weight);
568
+ line-height: var(--_line-height);
569
+ white-space: nowrap;
570
+ cursor: pointer;
571
+ user-select: none;
572
+ -webkit-tap-highlight-color: transparent;
573
+ transition:
574
+ background-color var(--kit-duration-instant) var(--kit-easing-standard),
575
+ border-color var(--kit-duration-instant) var(--kit-easing-standard),
576
+ color var(--kit-duration-instant) var(--kit-easing-standard);
577
+ }
578
+
579
+ :where([data-kit="toggle"][data-variant="ghost"]) {
580
+ --_bd: transparent;
581
+ }
582
+
583
+ :where([data-kit="toggle"][data-variant="soft"]) {
584
+ --_bg: color-mix(in srgb, var(--kit-color-text-primary) 6%, transparent);
585
+ --_bd: transparent;
586
+ }
587
+
588
+ :where([data-kit="toggle"][data-size="xs"]) {
589
+ --_height: var(--kit-button-height-xs);
590
+ --_pad: var(--kit-button-padding-inline-xs);
591
+ --_font-size: var(--kit-text-caption-size);
592
+ --_line-height: var(--kit-text-caption-line-height);
593
+ }
594
+
595
+ :where([data-kit="toggle"][data-size="sm"]) {
596
+ --_height: var(--kit-button-height-sm);
597
+ --_pad: var(--kit-button-padding-inline-sm);
598
+ }
599
+
600
+ :where([data-kit="toggle"][data-size="lg"]) {
601
+ --_height: var(--kit-button-height-lg);
602
+ --_pad: var(--kit-button-padding-inline-lg);
603
+ --_font-size: var(--kit-text-body-size);
604
+ --_line-height: var(--kit-text-body-line-height);
605
+ }
606
+
607
+ :where([data-kit="toggle"][data-size="xl"]) {
608
+ --_height: var(--kit-button-height-xl);
609
+ --_pad: var(--kit-button-padding-inline-xl);
610
+ --_font-size: var(--kit-text-body-size);
611
+ --_line-height: var(--kit-text-body-line-height);
612
+ }
613
+
614
+ :where([data-kit="toggle"]):hover {
615
+ background-color: var(--_bg-hover);
616
+ }
617
+
618
+ /*
619
+ * Pressed is shown three ways: tinted background, accent border and a bar
620
+ * along the bottom edge, so it still reads without color.
621
+ */
622
+ :where([data-kit="toggle"][data-pressed]) {
623
+ --_bg: var(--kit-color-accent-subtle);
624
+ --_bg-hover: var(--kit-color-accent-subtle);
625
+ --_fg: var(--kit-color-text-link);
626
+ --_bd: var(--kit-color-accent-default);
627
+
628
+ box-shadow: inset 0 calc(var(--kit-border-width-emphasis) * -1) 0 0 currentcolor;
629
+ }
630
+
631
+ :where([data-kit="toggle"]):focus-visible {
632
+ outline: var(--kit-border-width-focus) solid var(--kit-color-border-focus);
633
+ outline-offset: var(--kit-space-0-5);
634
+ }
635
+
636
+ :where([data-kit="toggle"][data-disabled]) {
637
+ --_bg: transparent;
638
+ --_bg-hover: transparent;
639
+ --_fg: var(--kit-color-text-disabled);
640
+ --_bd: var(--kit-color-border-subtle);
641
+
642
+ cursor: not-allowed;
643
+ }
644
+
645
+ :where([data-kit="toggle-group"]) {
646
+ display: inline-flex;
647
+ align-items: stretch;
648
+ box-sizing: border-box;
649
+ }
650
+
651
+ :where([data-kit="toggle-group"][data-orientation="vertical"]) {
652
+ flex-direction: column;
653
+ }
654
+
655
+ :where([data-kit="toggle-group"]:not([data-attached])) {
656
+ gap: var(--kit-space-control-gap);
657
+ }
658
+
659
+ :where([data-kit="toggle-group"][data-attached]) > :where(*) {
660
+ border-radius: 0;
661
+ }
662
+
663
+ :where([data-kit="toggle-group"][data-attached][data-orientation="horizontal"]) > :where(*:not(:first-child)) {
664
+ margin-inline-start: calc(var(--kit-border-width-default) * -1);
665
+ }
666
+
667
+ :where([data-kit="toggle-group"][data-attached][data-orientation="vertical"]) > :where(*:not(:first-child)) {
668
+ margin-block-start: calc(var(--kit-border-width-default) * -1);
669
+ }
670
+
671
+ :where([data-kit="toggle-group"][data-attached][data-orientation="horizontal"]) > :where(*:first-child) {
672
+ border-start-start-radius: var(--kit-radius-control);
673
+ border-end-start-radius: var(--kit-radius-control);
674
+ }
675
+
676
+ :where([data-kit="toggle-group"][data-attached][data-orientation="horizontal"]) > :where(*:last-child) {
677
+ border-start-end-radius: var(--kit-radius-control);
678
+ border-end-end-radius: var(--kit-radius-control);
679
+ }
680
+
681
+ :where([data-kit="toggle-group"][data-attached][data-orientation="vertical"]) > :where(*:first-child) {
682
+ border-start-start-radius: var(--kit-radius-control);
683
+ border-start-end-radius: var(--kit-radius-control);
684
+ }
685
+
686
+ :where([data-kit="toggle-group"][data-attached][data-orientation="vertical"]) > :where(*:last-child) {
687
+ border-end-start-radius: var(--kit-radius-control);
688
+ border-end-end-radius: var(--kit-radius-control);
689
+ }
690
+
691
+ :where([data-kit="toggle-group"][data-attached]) > :where(*:hover, *:focus-visible, *[data-pressed]) {
692
+ position: relative;
693
+ z-index: 1;
694
+ }
695
+
696
+ @media (forced-colors: active) {
697
+ :where([data-kit="toggle"]) {
698
+ border-color: ButtonText;
699
+ }
700
+
701
+ :where([data-kit="toggle"][data-pressed]) {
702
+ background-color: Highlight;
703
+ color: HighlightText;
704
+ border-color: Highlight;
705
+ }
706
+
707
+ :where([data-kit="toggle"][data-disabled]) {
708
+ border-color: GrayText;
709
+ }
710
+ }
711
+
712
+ /* ------------------------------------------------------------------ Link */
713
+
714
+ :where([data-kit="link"]) {
715
+ display: inline;
716
+ color: var(--kit-color-text-link);
717
+ font: inherit;
718
+ text-decoration-line: underline;
719
+ text-decoration-thickness: var(--kit-border-width-default);
720
+ text-underline-offset: var(--kit-space-0-5);
721
+ cursor: pointer;
722
+ border-radius: var(--kit-radius-2);
723
+ }
724
+
725
+ :where([data-kit="link"][data-tone="neutral"]) {
726
+ color: inherit;
727
+ }
728
+
729
+ :where([data-kit="link"][data-underline="hover"]) {
730
+ text-decoration-line: none;
731
+ }
732
+
733
+ :where([data-kit="link"][data-underline="hover"]):hover {
734
+ text-decoration-line: underline;
735
+ }
736
+
737
+ :where([data-kit="link"][data-underline="none"]) {
738
+ text-decoration-line: none;
739
+ }
740
+
741
+ :where([data-kit="link"]):hover {
742
+ text-decoration-thickness: var(--kit-border-width-emphasis);
743
+ }
744
+
745
+ :where([data-kit="link"]):focus-visible {
746
+ outline: var(--kit-border-width-focus) solid var(--kit-color-border-focus);
747
+ outline-offset: var(--kit-space-0-5);
748
+ }
749
+
750
+ :where([data-kit="link"] [data-kit-slot="external-icon"]) {
751
+ display: inline-block;
752
+ margin-inline-start: var(--kit-space-0-5);
753
+ vertical-align: baseline;
754
+ }
755
+
756
+ /* ------------------------------------------------------------------- Kbd */
757
+
758
+ :where([data-kit="kbd"]) {
759
+ display: inline-flex;
760
+ align-items: center;
761
+ justify-content: center;
762
+ box-sizing: border-box;
763
+ min-inline-size: var(--kit-size-20);
764
+ block-size: var(--kit-size-20);
765
+ padding-inline: var(--kit-space-1);
766
+ border: var(--kit-border-width-default) solid var(--kit-color-border-default);
767
+ border-block-end-width: var(--kit-border-width-emphasis);
768
+ border-radius: var(--kit-radius-4);
769
+ background-color: var(--kit-color-bg-raised);
770
+ color: var(--kit-color-text-secondary);
771
+ font-family: var(--kit-font-family-mono);
772
+ font-size: var(--kit-text-caption-size);
773
+ font-weight: var(--kit-text-label-weight);
774
+ line-height: 1;
775
+ white-space: nowrap;
776
+ }
777
+
778
+ :where([data-kit="kbd-group"]) {
779
+ display: inline-flex;
780
+ align-items: center;
781
+ gap: var(--kit-space-0-5);
782
+ }
783
+
784
+ :where([data-kit="kbd-group"] [data-kit-slot="kbd-item"]) {
785
+ display: inline-flex;
786
+ align-items: center;
787
+ gap: var(--kit-space-0-5);
788
+ }
789
+
790
+ :where([data-kit="kbd-group"] [data-kit-slot="kbd-separator"]) {
791
+ color: var(--kit-color-text-tertiary);
792
+ font-size: var(--kit-text-caption-size);
793
+ }
794
+
795
+ /* ------------------------------------------------------------ CopyButton */
796
+
797
+ :where([data-kit-copy][data-status="copied"]) {
798
+ --_text: var(--kit-color-status-success-foreground);
799
+ }
800
+
801
+ :where([data-kit-copy][data-status="failed"]) {
802
+ --_text: var(--kit-color-status-danger-foreground);
803
+ }
804
+
805
+ /* =========================================================================
806
+ * Forms
807
+ *
808
+ * Text-like controls share one surface (border, radius, height by size, focus
809
+ * ring, invalid and disabled states) so an Input, a Select, a Combobox and a
810
+ * NumberInput line up in the same row at every density.
811
+ * ========================================================================= */
812
+
813
+ /* ----------------------------------------------------------- Shared surface */
814
+
815
+ :where(
816
+ [data-kit="input"],
817
+ [data-kit="textarea"],
818
+ [data-kit="select"],
819
+ [data-kit="input-group"],
820
+ [data-kit="number-input"],
821
+ [data-kit="combobox"]
822
+ ) {
823
+ --_height: var(--kit-size-control-md);
824
+ --_pad: var(--kit-space-control-inline-md);
825
+ --_bd: var(--kit-color-border-default);
826
+ --_bg: var(--kit-color-bg-surface);
827
+ --_fg: var(--kit-color-text-primary);
828
+ --_font-size: var(--kit-text-body-size);
829
+ --_line-height: var(--kit-text-body-line-height);
830
+
831
+ box-sizing: border-box;
832
+ min-block-size: var(--_height);
833
+ margin: 0;
834
+ border: var(--kit-border-width-default) solid var(--_bd);
835
+ border-radius: var(--kit-radius-control);
836
+ background-color: var(--_bg);
837
+ color: var(--_fg);
838
+ font-family: var(--kit-font-family-sans);
839
+ font-size: var(--_font-size);
840
+ line-height: var(--_line-height);
841
+ transition:
842
+ border-color var(--kit-duration-instant) var(--kit-easing-standard),
843
+ background-color var(--kit-duration-instant) var(--kit-easing-standard);
844
+ }
845
+
846
+ :where([data-size="xs"]:is([data-kit="input"], [data-kit="textarea"], [data-kit="select"], [data-kit="input-group"], [data-kit="number-input"], [data-kit="combobox"])) {
847
+ --_height: var(--kit-size-control-xs);
848
+ --_pad: var(--kit-space-control-inline-xs);
849
+ --_font-size: var(--kit-text-caption-size);
850
+ --_line-height: var(--kit-text-caption-line-height);
851
+ }
852
+
853
+ :where([data-size="sm"]:is([data-kit="input"], [data-kit="textarea"], [data-kit="select"], [data-kit="input-group"], [data-kit="number-input"], [data-kit="combobox"])) {
854
+ --_height: var(--kit-size-control-sm);
855
+ --_pad: var(--kit-space-control-inline-sm);
856
+ }
857
+
858
+ :where([data-size="lg"]:is([data-kit="input"], [data-kit="textarea"], [data-kit="select"], [data-kit="input-group"], [data-kit="number-input"], [data-kit="combobox"])) {
859
+ --_height: var(--kit-size-control-lg);
860
+ --_pad: var(--kit-space-control-inline-lg);
861
+ }
862
+
863
+ :where([data-size="xl"]:is([data-kit="input"], [data-kit="textarea"], [data-kit="select"], [data-kit="input-group"], [data-kit="number-input"], [data-kit="combobox"])) {
864
+ --_height: var(--kit-size-control-xl);
865
+ --_pad: var(--kit-space-control-inline-xl);
866
+ }
867
+
868
+ :where([data-kit="input"], [data-kit="textarea"], [data-kit="select"], [data-kit="input-group"], [data-kit="number-input"], [data-kit="combobox"]):hover {
869
+ --_bd: var(--kit-color-border-strong);
870
+ }
871
+
872
+ :where([data-kit="input"], [data-kit="textarea"], [data-kit="select"]):focus-visible,
873
+ :where([data-kit="input-group"], [data-kit="number-input"], [data-kit="combobox"]):focus-within {
874
+ --_bd: var(--kit-color-border-focus);
875
+
876
+ outline: var(--kit-border-width-focus) solid var(--kit-color-border-focus);
877
+ outline-offset: 0;
878
+ }
879
+
880
+ :where([data-kit="input"], [data-kit="textarea"], [data-kit="select"], [data-kit="input-group"], [data-kit="number-input"], [data-kit="combobox"])[data-invalid],
881
+ :where([data-kit="input"], [data-kit="textarea"], [data-kit="select"])[aria-invalid="true"] {
882
+ --_bd: var(--kit-color-status-danger-foreground);
883
+ }
884
+
885
+ :where([data-kit="input"], [data-kit="textarea"], [data-kit="select"], [data-kit="input-group"], [data-kit="number-input"], [data-kit="combobox"])[data-disabled],
886
+ :where([data-kit="input"], [data-kit="textarea"], [data-kit="select"]):disabled {
887
+ --_bg: var(--kit-color-bg-canvas);
888
+ --_bd: var(--kit-color-border-subtle);
889
+ --_fg: var(--kit-color-text-disabled);
890
+
891
+ cursor: not-allowed;
892
+ }
893
+
894
+ :where([data-kit="input"], [data-kit="textarea"], [data-kit="combobox"] [data-kit-slot="combobox-input"], [data-kit="number-input"] [data-kit-slot="number-control"])::placeholder {
895
+ color: var(--kit-color-text-tertiary);
896
+ opacity: 1;
897
+ }
898
+
899
+ /* ----------------------------------------------------------------- Input */
900
+
901
+ :where([data-kit="input"]) {
902
+ inline-size: 100%;
903
+ padding-block: 0;
904
+ padding-inline: var(--_pad);
905
+ }
906
+
907
+ :where([data-kit="input"])::-webkit-search-cancel-button {
908
+ appearance: none;
909
+ }
910
+
911
+ /* ------------------------------------------------------------- Textarea */
912
+
913
+ :where([data-kit="textarea"]) {
914
+ inline-size: 100%;
915
+ padding-block: var(--kit-space-2);
916
+ padding-inline: var(--_pad);
917
+ resize: vertical;
918
+ }
919
+
920
+ :where([data-kit="textarea"][data-auto-resize]) {
921
+ field-sizing: content;
922
+ resize: none;
923
+ }
924
+
925
+ /* --------------------------------------------- InputGroup and InputAddon */
926
+
927
+ :where([data-kit="input-group"], [data-kit="number-input"]) {
928
+ display: flex;
929
+ align-items: stretch;
930
+ inline-size: 100%;
931
+ overflow: hidden;
932
+ }
933
+
934
+ /* Inside a group the group draws the border and ring; the input goes bare. */
935
+ :where([data-kit="input-group"] > [data-kit="input"]) {
936
+ flex: 1 1 auto;
937
+ min-inline-size: 0;
938
+ min-block-size: 0;
939
+ border: 0;
940
+ border-radius: 0;
941
+ background-color: transparent;
942
+ box-shadow: none;
943
+ }
944
+
945
+ :where([data-kit="input-group"] > [data-kit="input"]):focus-visible {
946
+ outline-color: transparent;
947
+ }
948
+
949
+ :where([data-kit="input-addon"]) {
950
+ display: inline-flex;
951
+ flex-shrink: 0;
952
+ align-items: center;
953
+ padding-inline: var(--_pad);
954
+ color: var(--kit-color-text-secondary);
955
+ white-space: nowrap;
956
+ }
957
+
958
+ :where([data-kit="input-group"] > [data-kit="input-addon"] + [data-kit="input"]) {
959
+ padding-inline-start: 0;
960
+ }
961
+
962
+ :where([data-kit="input-group"] > [data-kit="button"]) {
963
+ align-self: center;
964
+ margin-inline-end: var(--kit-space-0-5);
965
+ }
966
+
967
+ /* ----------------------------------------------------------- NumberInput */
968
+
969
+ :where([data-kit="number-input"] [data-kit-slot="number-control"]) {
970
+ flex: 1 1 auto;
971
+ min-inline-size: 0;
972
+ padding: 0;
973
+ border: 0;
974
+ border-radius: 0;
975
+ background-color: transparent;
976
+ color: inherit;
977
+ font: inherit;
978
+ font-variant-numeric: tabular-nums;
979
+ text-align: center;
980
+ }
981
+
982
+ :where([data-kit="number-input"] [data-kit-slot="number-control"]):focus-visible {
983
+ outline-color: transparent;
984
+ }
985
+
986
+ :where([data-kit="number-input"] :is([data-kit-slot="number-decrement"], [data-kit-slot="number-increment"])) {
987
+ display: inline-flex;
988
+ flex-shrink: 0;
989
+ align-items: center;
990
+ justify-content: center;
991
+ box-sizing: border-box;
992
+ min-inline-size: var(--kit-size-target-min);
993
+ padding: 0;
994
+ border: 0;
995
+ background-color: transparent;
996
+ color: var(--kit-color-text-secondary);
997
+ cursor: pointer;
998
+ }
999
+
1000
+ :where([data-kit="number-input"] [data-kit-slot="number-decrement"]) {
1001
+ border-inline-end: var(--kit-border-width-default) solid var(--kit-color-border-subtle);
1002
+ }
1003
+
1004
+ :where([data-kit="number-input"] [data-kit-slot="number-increment"]) {
1005
+ border-inline-start: var(--kit-border-width-default) solid var(--kit-color-border-subtle);
1006
+ }
1007
+
1008
+ :where([data-kit="number-input"] :is([data-kit-slot="number-decrement"], [data-kit-slot="number-increment"])):hover {
1009
+ background-color: color-mix(in srgb, var(--kit-color-text-primary) 8%, transparent);
1010
+ color: var(--kit-color-text-primary);
1011
+ }
1012
+
1013
+ :where([data-kit="number-input"] :is([data-kit-slot="number-decrement"], [data-kit-slot="number-increment"])):focus-visible {
1014
+ outline: var(--kit-border-width-focus) solid var(--kit-color-border-focus);
1015
+ outline-offset: calc(var(--kit-border-width-focus) * -1);
1016
+ }
1017
+
1018
+ :where([data-kit="number-input"] :is([data-kit-slot="number-decrement"], [data-kit-slot="number-increment"])[data-disabled]) {
1019
+ color: var(--kit-color-text-disabled);
1020
+ cursor: not-allowed;
1021
+ }
1022
+
1023
+ /* ---------------------------------------------------------------- Select */
1024
+
1025
+ :where([data-kit="select"]) {
1026
+ display: inline-flex;
1027
+ align-items: center;
1028
+ justify-content: space-between;
1029
+ gap: var(--kit-space-2);
1030
+ min-inline-size: calc(var(--kit-size-56) * 3);
1031
+ padding-block: 0;
1032
+ padding-inline: var(--_pad);
1033
+ text-align: start;
1034
+ cursor: pointer;
1035
+ }
1036
+
1037
+ :where([data-kit="select"] [data-kit-slot="select-value"]) {
1038
+ flex: 1 1 auto;
1039
+ min-inline-size: 0;
1040
+ overflow: hidden;
1041
+ text-overflow: ellipsis;
1042
+ white-space: nowrap;
1043
+ }
1044
+
1045
+ :where([data-kit="select"] [data-kit-slot="select-value"][data-placeholder]) {
1046
+ color: var(--kit-color-text-tertiary);
1047
+ }
1048
+
1049
+ :where([data-kit="select"] [data-kit-slot="select-icon"]) {
1050
+ display: inline-flex;
1051
+ flex-shrink: 0;
1052
+ color: var(--kit-color-text-secondary);
1053
+ }
1054
+
1055
+ :where([data-kit="select"][data-popup-open] [data-kit-slot="select-icon"]) {
1056
+ transform: rotate(0.5turn);
1057
+ }
1058
+
1059
+ /* -------------------------------------------------------------- Combobox */
1060
+
1061
+ :where([data-kit="combobox"]) {
1062
+ display: flex;
1063
+ align-items: center;
1064
+ inline-size: 100%;
1065
+ padding-inline: var(--_pad) var(--kit-space-1);
1066
+ gap: var(--kit-space-1);
1067
+ }
1068
+
1069
+ :where([data-kit="combobox"] [data-kit-slot="combobox-input"]) {
1070
+ flex: 1 1 auto;
1071
+ min-inline-size: calc(var(--kit-size-56) / 2);
1072
+ min-block-size: calc(var(--_height) - var(--kit-border-width-default) * 2);
1073
+ padding: 0;
1074
+ border: 0;
1075
+ background-color: transparent;
1076
+ color: inherit;
1077
+ font: inherit;
1078
+ }
1079
+
1080
+ :where([data-kit="combobox"] [data-kit-slot="combobox-input"]):focus-visible {
1081
+ outline-color: transparent;
1082
+ }
1083
+
1084
+ :where([data-kit="combobox"] :is([data-kit-slot="combobox-clear"], [data-kit-slot="combobox-trigger"])) {
1085
+ display: inline-flex;
1086
+ flex-shrink: 0;
1087
+ align-items: center;
1088
+ justify-content: center;
1089
+ box-sizing: border-box;
1090
+ inline-size: var(--kit-size-target-min);
1091
+ block-size: var(--kit-size-target-min);
1092
+ padding: 0;
1093
+ border: 0;
1094
+ border-radius: var(--kit-radius-control);
1095
+ background-color: transparent;
1096
+ color: var(--kit-color-text-secondary);
1097
+ cursor: pointer;
1098
+ }
1099
+
1100
+ :where([data-kit="combobox"] :is([data-kit-slot="combobox-clear"], [data-kit-slot="combobox-trigger"])):hover {
1101
+ background-color: color-mix(in srgb, var(--kit-color-text-primary) 8%, transparent);
1102
+ color: var(--kit-color-text-primary);
1103
+ }
1104
+
1105
+ :where([data-kit="combobox"] :is([data-kit-slot="combobox-clear"], [data-kit-slot="combobox-trigger"])):focus-visible {
1106
+ outline: var(--kit-border-width-focus) solid var(--kit-color-border-focus);
1107
+ outline-offset: calc(var(--kit-border-width-focus) * -1);
1108
+ }
1109
+
1110
+ /* Multiple: chips and the input share a wrapping row. */
1111
+ :where([data-kit="combobox"][data-multiple]) {
1112
+ flex-wrap: wrap;
1113
+ align-items: center;
1114
+ padding-block: var(--kit-space-0-5);
1115
+ min-block-size: var(--_height);
1116
+ }
1117
+
1118
+ :where([data-kit="combobox"] [data-kit-slot="combobox-chip"]) {
1119
+ display: inline-flex;
1120
+ align-items: center;
1121
+ gap: var(--kit-space-0-5);
1122
+ box-sizing: border-box;
1123
+ block-size: var(--kit-badge-height-md);
1124
+ padding-inline: var(--kit-space-2) var(--kit-space-0-5);
1125
+ border: var(--kit-border-width-default) solid var(--kit-color-border-default);
1126
+ border-radius: var(--kit-radius-pill);
1127
+ background-color: color-mix(in srgb, var(--kit-color-text-primary) 8%, transparent);
1128
+ font-size: var(--kit-text-caption-size);
1129
+ line-height: var(--kit-text-caption-line-height);
1130
+ }
1131
+
1132
+ :where([data-kit="combobox"] [data-kit-slot="combobox-chip"]):is([data-highlighted], :focus-visible) {
1133
+ border-color: var(--kit-color-border-focus);
1134
+ outline: var(--kit-border-width-focus) solid var(--kit-color-border-focus);
1135
+ outline-offset: 0;
1136
+ }
1137
+
1138
+ :where([data-kit="combobox"] [data-kit-slot="combobox-chip-remove"]) {
1139
+ display: inline-flex;
1140
+ align-items: center;
1141
+ justify-content: center;
1142
+ box-sizing: border-box;
1143
+ inline-size: var(--kit-size-icon-sm);
1144
+ block-size: var(--kit-size-icon-sm);
1145
+ padding: 0;
1146
+ border: 0;
1147
+ border-radius: var(--kit-radius-full);
1148
+ background-color: transparent;
1149
+ color: var(--kit-color-text-secondary);
1150
+ cursor: pointer;
1151
+ }
1152
+
1153
+ :where([data-kit="combobox"] [data-kit-slot="combobox-chip-remove"]):hover {
1154
+ background-color: color-mix(in srgb, var(--kit-color-text-primary) 14%, transparent);
1155
+ color: var(--kit-color-text-primary);
1156
+ }
1157
+
1158
+ /* ------------------------------------------------------------- OTPInput */
1159
+
1160
+ :where([data-kit="otp-input"]) {
1161
+ --_size: var(--kit-size-control-lg);
1162
+
1163
+ display: inline-flex;
1164
+ gap: var(--kit-space-2);
1165
+ }
1166
+
1167
+ :where([data-kit="otp-input"][data-size="xs"]) {
1168
+ --_size: var(--kit-size-control-xs);
1169
+ }
1170
+
1171
+ :where([data-kit="otp-input"][data-size="sm"]) {
1172
+ --_size: var(--kit-size-control-sm);
1173
+ }
1174
+
1175
+ :where([data-kit="otp-input"][data-size="md"]) {
1176
+ --_size: var(--kit-size-control-md);
1177
+ }
1178
+
1179
+ :where([data-kit="otp-input"][data-size="xl"]) {
1180
+ --_size: var(--kit-size-control-xl);
1181
+ }
1182
+
1183
+ :where([data-kit="otp-input"] [data-kit-slot="otp-box"]) {
1184
+ box-sizing: border-box;
1185
+ inline-size: var(--_size);
1186
+ block-size: var(--_size);
1187
+ padding: 0;
1188
+ border: var(--kit-border-width-default) solid var(--kit-color-border-default);
1189
+ border-radius: var(--kit-radius-control);
1190
+ background-color: var(--kit-color-bg-surface);
1191
+ color: var(--kit-color-text-primary);
1192
+ font-family: var(--kit-font-family-mono);
1193
+ font-size: var(--kit-text-body-size);
1194
+ font-variant-numeric: tabular-nums;
1195
+ text-align: center;
1196
+ }
1197
+
1198
+ :where([data-kit="otp-input"] [data-kit-slot="otp-box"]):hover {
1199
+ border-color: var(--kit-color-border-strong);
1200
+ }
1201
+
1202
+ :where([data-kit="otp-input"] [data-kit-slot="otp-box"]):focus-visible {
1203
+ border-color: var(--kit-color-border-focus);
1204
+ outline: var(--kit-border-width-focus) solid var(--kit-color-border-focus);
1205
+ outline-offset: 0;
1206
+ }
1207
+
1208
+ :where([data-kit="otp-input"][data-invalid] [data-kit-slot="otp-box"]) {
1209
+ border-color: var(--kit-color-status-danger-foreground);
1210
+ }
1211
+
1212
+ :where([data-kit="otp-input"][data-disabled] [data-kit-slot="otp-box"]) {
1213
+ border-color: var(--kit-color-border-subtle);
1214
+ background-color: var(--kit-color-bg-canvas);
1215
+ color: var(--kit-color-text-disabled);
1216
+ }
1217
+
1218
+ /* -------------------------------------------- Checkbox, Radio and Switch */
1219
+
1220
+ :where([data-kit="choice"]) {
1221
+ display: inline-flex;
1222
+ align-items: flex-start;
1223
+ gap: var(--kit-space-2);
1224
+ min-block-size: var(--kit-size-target-min);
1225
+ color: var(--kit-color-text-primary);
1226
+ font-family: var(--kit-font-family-sans);
1227
+ font-size: var(--kit-text-body-size);
1228
+ line-height: var(--kit-text-body-line-height);
1229
+ cursor: pointer;
1230
+ }
1231
+
1232
+ :where([data-kit="choice"][data-disabled]) {
1233
+ color: var(--kit-color-text-disabled);
1234
+ cursor: not-allowed;
1235
+ }
1236
+
1237
+ :where([data-kit="choice"] [data-kit-slot="choice-text"]) {
1238
+ display: flex;
1239
+ flex-direction: column;
1240
+ min-inline-size: 0;
1241
+ }
1242
+
1243
+ :where([data-kit="choice"] [data-kit-slot="choice-description"]) {
1244
+ color: var(--kit-color-text-secondary);
1245
+ font-size: var(--kit-text-caption-size);
1246
+ line-height: var(--kit-text-caption-line-height);
1247
+ }
1248
+
1249
+ :where([data-kit="choice"][data-disabled] [data-kit-slot="choice-description"]) {
1250
+ color: var(--kit-color-text-disabled);
1251
+ }
1252
+
1253
+ /* The box is vertically centred on the first line of text. */
1254
+ :where([data-kit="choice"] > :is([data-kit="checkbox"], [data-kit="radio"])) {
1255
+ margin-block-start: calc((var(--kit-text-body-line-height) - var(--kit-size-icon-sm)) / 2);
1256
+ }
1257
+
1258
+ :where([data-kit="choice"] > [data-kit="switch"]) {
1259
+ margin-block-start: calc((var(--kit-text-body-line-height) - var(--kit-size-icon-md)) / 2);
1260
+ }
1261
+
1262
+ :where([data-kit="checkbox"], [data-kit="radio"]) {
1263
+ position: relative;
1264
+ display: inline-flex;
1265
+ flex-shrink: 0;
1266
+ align-items: center;
1267
+ justify-content: center;
1268
+ box-sizing: border-box;
1269
+ inline-size: var(--kit-size-icon-sm);
1270
+ block-size: var(--kit-size-icon-sm);
1271
+ margin: 0;
1272
+ padding: 0;
1273
+ border: var(--kit-border-width-default) solid var(--kit-color-border-strong);
1274
+ border-radius: var(--kit-radius-4);
1275
+ background-color: var(--kit-color-bg-surface);
1276
+ color: var(--kit-color-accent-on-accent);
1277
+ cursor: pointer;
1278
+ -webkit-tap-highlight-color: transparent;
1279
+ transition:
1280
+ background-color var(--kit-duration-instant) var(--kit-easing-standard),
1281
+ border-color var(--kit-duration-instant) var(--kit-easing-standard);
1282
+ }
1283
+
1284
+ /* A larger invisible hit area meets the minimum target size without a bigger box. */
1285
+ :where([data-kit="checkbox"], [data-kit="radio"])::before {
1286
+ content: "";
1287
+ position: absolute;
1288
+ inset: calc((var(--kit-size-target-min) - var(--kit-size-icon-sm)) / -2);
1289
+ }
1290
+
1291
+ :where([data-kit="radio"]) {
1292
+ border-radius: var(--kit-radius-full);
1293
+ }
1294
+
1295
+ :where([data-kit="checkbox"], [data-kit="radio"]):hover {
1296
+ border-color: var(--kit-color-text-primary);
1297
+ }
1298
+
1299
+ :where([data-kit="checkbox"], [data-kit="radio"]):is([data-checked], [data-indeterminate]) {
1300
+ border-color: var(--kit-color-accent-default);
1301
+ background-color: var(--kit-color-accent-default);
1302
+ }
1303
+
1304
+ :where([data-kit="checkbox"], [data-kit="radio"]):focus-visible {
1305
+ outline: var(--kit-border-width-focus) solid var(--kit-color-border-focus);
1306
+ outline-offset: var(--kit-space-0-5);
1307
+ }
1308
+
1309
+ :where([data-kit="checkbox"], [data-kit="radio"])[data-invalid] {
1310
+ border-color: var(--kit-color-status-danger-foreground);
1311
+ }
1312
+
1313
+ :where([data-kit="checkbox"], [data-kit="radio"]):is([data-disabled], [aria-disabled="true"]) {
1314
+ border-color: var(--kit-color-border-subtle);
1315
+ background-color: var(--kit-color-bg-canvas);
1316
+ color: var(--kit-color-text-disabled);
1317
+ cursor: not-allowed;
1318
+ }
1319
+
1320
+ :where([data-kit="checkbox"], [data-kit="radio"]):is([data-disabled], [aria-disabled="true"]):is([data-checked], [data-indeterminate]) {
1321
+ border-color: var(--kit-color-text-disabled);
1322
+ background-color: var(--kit-color-text-disabled);
1323
+ color: var(--kit-color-bg-canvas);
1324
+ }
1325
+
1326
+ /* Check or dash: the indeterminate state shows a dash, not a check. */
1327
+ :where([data-kit="checkbox"] [data-kit-slot="checkbox-indicator"]) {
1328
+ display: inline-flex;
1329
+ align-items: center;
1330
+ justify-content: center;
1331
+ }
1332
+
1333
+ :where([data-kit="checkbox"][data-indeterminate] [data-kit-slot="checkbox-check"]) {
1334
+ display: none;
1335
+ }
1336
+
1337
+ :where([data-kit="checkbox"]:not([data-indeterminate]) [data-kit-slot="checkbox-dash"]) {
1338
+ display: none;
1339
+ }
1340
+
1341
+ /* The radio's dot. */
1342
+ :where([data-kit="radio"] [data-kit-slot="radio-indicator"]) {
1343
+ display: block;
1344
+ inline-size: var(--kit-space-2);
1345
+ block-size: var(--kit-space-2);
1346
+ border-radius: var(--kit-radius-full);
1347
+ background-color: currentcolor;
1348
+ }
1349
+
1350
+ :where([data-kit="checkbox-group"]),
1351
+ :where([data-kit="radio-group"]) {
1352
+ display: flex;
1353
+ flex-direction: column;
1354
+ gap: var(--kit-space-2);
1355
+ }
1356
+
1357
+ :where([data-kit="radio-group"][data-orientation="horizontal"]) {
1358
+ flex-flow: row wrap;
1359
+ gap: var(--kit-space-2) var(--kit-space-4);
1360
+ }
1361
+
1362
+ /* Switch: a track and a thumb that slides along it, in either text direction. */
1363
+ :where([data-kit="switch"]) {
1364
+ --_track-w: var(--kit-size-32);
1365
+ --_track-h: var(--kit-size-icon-md);
1366
+ --_thumb: var(--kit-size-icon-sm);
1367
+ --_inset: var(--kit-space-0-5);
1368
+
1369
+ position: relative;
1370
+ display: inline-flex;
1371
+ flex-shrink: 0;
1372
+ align-items: center;
1373
+ box-sizing: border-box;
1374
+ inline-size: var(--_track-w);
1375
+ block-size: var(--_track-h);
1376
+ margin: 0;
1377
+ padding: 0;
1378
+ border: var(--kit-border-width-default) solid var(--kit-color-border-strong);
1379
+ border-radius: var(--kit-radius-full);
1380
+ background-color: var(--kit-color-bg-canvas);
1381
+ cursor: pointer;
1382
+ -webkit-tap-highlight-color: transparent;
1383
+ transition:
1384
+ background-color var(--kit-duration-fast) var(--kit-easing-standard),
1385
+ border-color var(--kit-duration-fast) var(--kit-easing-standard);
1386
+ }
1387
+
1388
+ :where([data-kit="switch"])::before {
1389
+ content: "";
1390
+ position: absolute;
1391
+ inset-inline: 0;
1392
+ inset-block: calc((var(--kit-size-target-min) - var(--_track-h)) / -2);
1393
+ }
1394
+
1395
+ :where([data-kit="switch"] [data-kit-slot="switch-thumb"]) {
1396
+ position: absolute;
1397
+ inset-inline-start: var(--_inset);
1398
+ box-sizing: border-box;
1399
+ inline-size: var(--_thumb);
1400
+ block-size: var(--_thumb);
1401
+ border-radius: var(--kit-radius-full);
1402
+ background-color: var(--kit-color-border-strong);
1403
+ transition:
1404
+ inset-inline-start var(--kit-duration-fast) var(--kit-easing-standard),
1405
+ background-color var(--kit-duration-fast) var(--kit-easing-standard);
1406
+ }
1407
+
1408
+ :where([data-kit="switch"][data-checked]) {
1409
+ border-color: var(--kit-color-accent-default);
1410
+ background-color: var(--kit-color-accent-default);
1411
+ }
1412
+
1413
+ :where([data-kit="switch"][data-checked] [data-kit-slot="switch-thumb"]) {
1414
+ inset-inline-start: calc(100% - var(--_thumb) - var(--_inset));
1415
+ background-color: var(--kit-color-accent-on-accent);
1416
+ }
1417
+
1418
+ :where([data-kit="switch"]):hover:not([data-checked]) {
1419
+ border-color: var(--kit-color-text-primary);
1420
+ }
1421
+
1422
+ :where([data-kit="switch"]):focus-visible {
1423
+ outline: var(--kit-border-width-focus) solid var(--kit-color-border-focus);
1424
+ outline-offset: var(--kit-space-0-5);
1425
+ }
1426
+
1427
+ :where([data-kit="switch"][data-disabled]) {
1428
+ border-color: var(--kit-color-border-subtle);
1429
+ cursor: not-allowed;
1430
+ }
1431
+
1432
+ :where([data-kit="switch"][data-disabled] [data-kit-slot="switch-thumb"]) {
1433
+ background-color: var(--kit-color-border-subtle);
1434
+ }
1435
+
1436
+ :where([data-kit="switch"][data-disabled][data-checked]) {
1437
+ background-color: var(--kit-color-text-disabled);
1438
+ }
1439
+
1440
+ /* ---------------------------------------------------------------- Slider */
1441
+
1442
+ :where([data-kit="slider"]) {
1443
+ --_thumb: var(--kit-size-icon-md);
1444
+ --_track: var(--kit-space-1);
1445
+
1446
+ display: flex;
1447
+ align-items: center;
1448
+ gap: var(--kit-space-3);
1449
+ inline-size: 100%;
1450
+ min-block-size: var(--kit-size-target-min);
1451
+ color: var(--kit-color-text-primary);
1452
+ font-family: var(--kit-font-family-sans);
1453
+ font-size: var(--kit-text-caption-size);
1454
+ touch-action: none;
1455
+ user-select: none;
1456
+ }
1457
+
1458
+ :where([data-kit="slider"] [data-kit-slot="slider-control"]) {
1459
+ position: relative;
1460
+ display: flex;
1461
+ flex: 1 1 auto;
1462
+ align-items: center;
1463
+ block-size: var(--_thumb);
1464
+ min-inline-size: 0;
1465
+ /* Thumbs are centred on the track ends, so inset by half a thumb to keep them inside. */
1466
+ padding-inline: calc(var(--_thumb) / 2);
1467
+ cursor: pointer;
1468
+ }
1469
+
1470
+ :where([data-kit="slider"] [data-kit-slot="slider-track"]) {
1471
+ position: relative;
1472
+ inline-size: 100%;
1473
+ block-size: var(--_track);
1474
+ border-radius: var(--kit-radius-full);
1475
+ background-color: var(--kit-color-border-default);
1476
+ }
1477
+
1478
+ :where([data-kit="slider"] [data-kit-slot="slider-indicator"]) {
1479
+ border-radius: var(--kit-radius-full);
1480
+ background-color: var(--kit-color-accent-default);
1481
+ }
1482
+
1483
+ :where([data-kit="slider"] [data-kit-slot="slider-thumb"]) {
1484
+ box-sizing: border-box;
1485
+ inline-size: var(--_thumb);
1486
+ block-size: var(--_thumb);
1487
+ border: var(--kit-border-width-emphasis) solid var(--kit-color-accent-default);
1488
+ border-radius: var(--kit-radius-full);
1489
+ background-color: var(--kit-color-bg-surface);
1490
+ box-shadow: var(--kit-shadow-raised);
1491
+ transition: transform var(--kit-duration-instant) var(--kit-easing-standard);
1492
+ }
1493
+
1494
+ :where([data-kit="slider"] [data-kit-slot="slider-thumb"]):hover {
1495
+ transform: scale(1.1);
1496
+ }
1497
+
1498
+ :where([data-kit="slider"] [data-kit-slot="slider-thumb"]:has(:focus-visible)) {
1499
+ outline: var(--kit-border-width-focus) solid var(--kit-color-border-focus);
1500
+ outline-offset: var(--kit-space-0-5);
1501
+ }
1502
+
1503
+ :where([data-kit="slider"][data-dragging] [data-kit-slot="slider-thumb"]) {
1504
+ transform: scale(1.1);
1505
+ }
1506
+
1507
+ :where([data-kit="slider"] [data-kit-slot="slider-value"]) {
1508
+ flex-shrink: 0;
1509
+ min-inline-size: var(--kit-size-32);
1510
+ color: var(--kit-color-text-secondary);
1511
+ font-variant-numeric: tabular-nums;
1512
+ text-align: end;
1513
+ }
1514
+
1515
+ :where([data-kit="slider"][data-disabled]) {
1516
+ cursor: not-allowed;
1517
+ }
1518
+
1519
+ :where([data-kit="slider"][data-disabled] [data-kit-slot="slider-indicator"]) {
1520
+ background-color: var(--kit-color-text-disabled);
1521
+ }
1522
+
1523
+ :where([data-kit="slider"][data-disabled] [data-kit-slot="slider-thumb"]) {
1524
+ border-color: var(--kit-color-text-disabled);
1525
+ box-shadow: none;
1526
+ }
1527
+
1528
+ :where([data-kit="slider"][data-orientation="vertical"]) {
1529
+ flex-direction: column;
1530
+ inline-size: auto;
1531
+ block-size: 100%;
1532
+ }
1533
+
1534
+ :where([data-kit="slider"][data-orientation="vertical"] [data-kit-slot="slider-control"]) {
1535
+ flex-direction: column;
1536
+ inline-size: var(--_thumb);
1537
+ block-size: 100%;
1538
+ }
1539
+
1540
+ :where([data-kit="slider"][data-orientation="vertical"] [data-kit-slot="slider-track"]) {
1541
+ inline-size: var(--_track);
1542
+ block-size: 100%;
1543
+ }
1544
+
1545
+ /* ----------------------------------------------------------------- Field */
1546
+
1547
+ :where([data-kit="field"]) {
1548
+ display: flex;
1549
+ flex-direction: column;
1550
+ gap: var(--kit-space-1);
1551
+ min-inline-size: 0;
1552
+ font-family: var(--kit-font-family-sans);
1553
+ }
1554
+
1555
+ :where([data-kit="field"] [data-kit-slot="field-label"]) {
1556
+ color: var(--kit-color-text-primary);
1557
+ font-size: var(--kit-text-label-size);
1558
+ font-weight: var(--kit-text-label-weight);
1559
+ line-height: var(--kit-text-label-line-height);
1560
+ }
1561
+
1562
+ :where([data-kit="field"] [data-kit-slot="field-required"]) {
1563
+ margin-inline-start: var(--kit-space-0-5);
1564
+ color: var(--kit-color-status-danger-foreground);
1565
+ }
1566
+
1567
+ :where([data-kit="field"] [data-kit-slot="field-description"]) {
1568
+ color: var(--kit-color-text-secondary);
1569
+ font-size: var(--kit-text-caption-size);
1570
+ line-height: var(--kit-text-caption-line-height);
1571
+ }
1572
+
1573
+ :where([data-kit="field"] [data-kit-slot="field-control"]) {
1574
+ display: flex;
1575
+ flex-direction: column;
1576
+ min-inline-size: 0;
1577
+ }
1578
+
1579
+ :where([data-kit="field"] [data-kit-slot="field-error"]) {
1580
+ color: var(--kit-color-status-danger-foreground);
1581
+ font-size: var(--kit-text-caption-size);
1582
+ line-height: var(--kit-text-caption-line-height);
1583
+ }
1584
+
1585
+ :where([data-kit="field"][data-disabled] [data-kit-slot="field-label"]) {
1586
+ color: var(--kit-color-text-disabled);
1587
+ }
1588
+
1589
+ /* Horizontal: the control sits first, the text beside it. */
1590
+ :where([data-kit="field"][data-orientation="horizontal"]) {
1591
+ display: grid;
1592
+ grid-template-columns: auto 1fr;
1593
+ column-gap: var(--kit-space-2);
1594
+ align-items: start;
1595
+ }
1596
+
1597
+ :where([data-kit="field"][data-orientation="horizontal"] [data-kit-slot="field-control"]) {
1598
+ grid-column: 1;
1599
+ grid-row: 1 / span 3;
1600
+ }
1601
+
1602
+ :where([data-kit="field"][data-orientation="horizontal"] :is([data-kit-slot="field-label"], [data-kit-slot="field-description"], [data-kit-slot="field-error"])) {
1603
+ grid-column: 2;
1604
+ }
1605
+
1606
+ /* -------------------------------------------------------------- Fieldset */
1607
+
1608
+ :where([data-kit="fieldset"]) {
1609
+ display: flex;
1610
+ flex-direction: column;
1611
+ gap: var(--kit-space-2);
1612
+ min-inline-size: 0;
1613
+ margin: 0;
1614
+ padding: 0;
1615
+ border: 0;
1616
+ font-family: var(--kit-font-family-sans);
1617
+ }
1618
+
1619
+ :where([data-kit="fieldset"] [data-kit-slot="fieldset-legend"]) {
1620
+ padding: 0;
1621
+ color: var(--kit-color-text-primary);
1622
+ font-size: var(--kit-text-label-size);
1623
+ font-weight: var(--kit-text-label-weight);
1624
+ line-height: var(--kit-text-label-line-height);
1625
+ }
1626
+
1627
+ :where([data-kit="fieldset"] [data-kit-slot="fieldset-description"]) {
1628
+ margin: 0;
1629
+ color: var(--kit-color-text-secondary);
1630
+ font-size: var(--kit-text-caption-size);
1631
+ line-height: var(--kit-text-caption-line-height);
1632
+ }
1633
+
1634
+ :where([data-kit="fieldset"] [data-kit-slot="fieldset-body"]) {
1635
+ display: flex;
1636
+ flex-direction: column;
1637
+ gap: var(--kit-space-3);
1638
+ }
1639
+
1640
+ /* ------------------------------------------------- Reduced motion, forced */
1641
+
1642
+ @media (prefers-reduced-motion: reduce) {
1643
+ :where([data-kit="switch"], [data-kit="switch"] [data-kit-slot="switch-thumb"], [data-kit="slider"] [data-kit-slot="slider-thumb"], [data-kit="checkbox"], [data-kit="radio"]) {
1644
+ transition: none;
1645
+ }
1646
+ }
1647
+
1648
+ @media (forced-colors: active) {
1649
+ :where([data-kit="input"], [data-kit="textarea"], [data-kit="select"], [data-kit="input-group"], [data-kit="number-input"], [data-kit="combobox"]) {
1650
+ border-color: FieldText;
1651
+ }
1652
+
1653
+ :where([data-kit="checkbox"], [data-kit="radio"], [data-kit="switch"]) {
1654
+ border-color: ButtonText;
1655
+ }
1656
+
1657
+ :where([data-kit="checkbox"], [data-kit="radio"]):is([data-checked], [data-indeterminate]) {
1658
+ border-color: Highlight;
1659
+ background-color: Highlight;
1660
+ color: HighlightText;
1661
+ }
1662
+
1663
+ :where([data-kit="switch"][data-checked]) {
1664
+ border-color: Highlight;
1665
+ background-color: Highlight;
1666
+ }
1667
+
1668
+ :where([data-kit="switch"] [data-kit-slot="switch-thumb"]) {
1669
+ background-color: ButtonText;
1670
+ }
1671
+
1672
+ :where([data-kit="switch"][data-checked] [data-kit-slot="switch-thumb"]) {
1673
+ background-color: HighlightText;
1674
+ }
1675
+
1676
+ :where([data-kit="slider"] [data-kit-slot="slider-thumb"]) {
1677
+ border-color: Highlight;
1678
+ background-color: Canvas;
1679
+ }
1680
+
1681
+ :where([data-kit="slider"] [data-kit-slot="slider-indicator"]) {
1682
+ background-color: Highlight;
1683
+ }
1684
+
1685
+ :where([data-kit="slider"] [data-kit-slot="slider-track"]) {
1686
+ background-color: GrayText;
1687
+ }
1688
+ }
1689
+
1690
+ /* =========================================================================
1691
+ * Feedback: Alert, Callout, Progress, Meter, Skeleton, EmptyState
1692
+ *
1693
+ * Tone is never carried by color alone: every tone also has its own icon and
1694
+ * usually a title, so the meaning survives forced colors and color blindness.
1695
+ * ========================================================================= */
1696
+
1697
+ /* ------------------------------------------------------- Alert and Callout */
1698
+
1699
+ :where([data-kit="alert"], [data-kit="callout"]) {
1700
+ --_bg: var(--kit-color-bg-raised);
1701
+ --_bd: var(--kit-color-border-default);
1702
+ --_accent: var(--kit-color-text-secondary);
1703
+
1704
+ display: flex;
1705
+ align-items: flex-start;
1706
+ gap: var(--kit-space-3);
1707
+ box-sizing: border-box;
1708
+ margin: 0;
1709
+ padding: var(--kit-space-3) var(--kit-space-4);
1710
+ border: var(--kit-border-width-default) solid var(--_bd);
1711
+ border-radius: var(--kit-radius-panel);
1712
+ background-color: var(--_bg);
1713
+ color: var(--kit-color-text-primary);
1714
+ font-family: var(--kit-font-family-sans);
1715
+ font-size: var(--kit-text-body-size);
1716
+ line-height: var(--kit-text-body-line-height);
1717
+ }
1718
+
1719
+ :where([data-kit="alert"][data-tone="accent"], [data-kit="callout"][data-tone="accent"]) {
1720
+ --_bg: var(--kit-color-accent-subtle);
1721
+ --_bd: var(--kit-color-accent-default);
1722
+ --_accent: var(--kit-color-accent-default);
1723
+ }
1724
+
1725
+ :where([data-kit="alert"][data-tone="success"], [data-kit="callout"][data-tone="success"]) {
1726
+ --_bg: var(--kit-color-status-success-background);
1727
+ --_bd: var(--kit-color-status-success-border);
1728
+ --_accent: var(--kit-color-status-success-foreground);
1729
+ }
1730
+
1731
+ :where([data-kit="alert"][data-tone="warning"], [data-kit="callout"][data-tone="warning"]) {
1732
+ --_bg: var(--kit-color-status-warning-background);
1733
+ --_bd: var(--kit-color-status-warning-border);
1734
+ --_accent: var(--kit-color-status-warning-foreground);
1735
+ }
1736
+
1737
+ :where([data-kit="alert"][data-tone="danger"], [data-kit="callout"][data-tone="danger"]) {
1738
+ --_bg: var(--kit-color-status-danger-background);
1739
+ --_bd: var(--kit-color-status-danger-border);
1740
+ --_accent: var(--kit-color-status-danger-foreground);
1741
+ }
1742
+
1743
+ :where([data-kit="alert"][data-tone="info"], [data-kit="callout"][data-tone="info"]) {
1744
+ --_bg: var(--kit-color-status-info-background);
1745
+ --_bd: var(--kit-color-status-info-border);
1746
+ --_accent: var(--kit-color-status-info-foreground);
1747
+ }
1748
+
1749
+ /* A callout is a note inside content, so it reads as an aside with a rule. */
1750
+ :where([data-kit="callout"]) {
1751
+ border-inline-start-width: var(--kit-border-width-emphasis);
1752
+ border-inline-start-color: var(--_accent);
1753
+ border-start-start-radius: var(--kit-radius-control);
1754
+ border-end-start-radius: var(--kit-radius-control);
1755
+ }
1756
+
1757
+ :where([data-kit-slot="alert-icon"], [data-kit-slot="callout-icon"]) {
1758
+ display: inline-flex;
1759
+ flex: none;
1760
+ align-items: center;
1761
+ justify-content: center;
1762
+ block-size: var(--kit-text-body-line-height);
1763
+ color: var(--_accent);
1764
+ }
1765
+
1766
+ :where([data-kit-slot="alert-body"], [data-kit-slot="callout-body"]) {
1767
+ display: grid;
1768
+ flex: 1 1 auto;
1769
+ gap: var(--kit-space-1);
1770
+ min-inline-size: 0;
1771
+ }
1772
+
1773
+ :where([data-kit-slot="alert-title"], [data-kit-slot="callout-title"]) {
1774
+ font-weight: var(--kit-font-weight-semibold);
1775
+ }
1776
+
1777
+ :where([data-kit-slot="alert-message"], [data-kit-slot="callout-content"]) {
1778
+ color: var(--kit-color-text-primary);
1779
+ }
1780
+
1781
+ :where([data-kit-slot="alert-action"]) {
1782
+ display: inline-flex;
1783
+ flex: none;
1784
+ align-items: center;
1785
+ align-self: center;
1786
+ gap: var(--kit-space-2);
1787
+ }
1788
+
1789
+ /* The dismiss button sits in the corner without growing the alert. */
1790
+ :where([data-kit="alert"] > [data-kit="button"]) {
1791
+ flex: none;
1792
+ margin-block: calc(var(--kit-space-1) * -1);
1793
+ margin-inline-end: calc(var(--kit-space-2) * -1);
1794
+ }
1795
+
1796
+ @media (forced-colors: active) {
1797
+ :where([data-kit="alert"], [data-kit="callout"]) {
1798
+ border-color: CanvasText;
1799
+ }
1800
+ }
1801
+
1802
+ /* ------------------------------------------------------- Progress and Meter */
1803
+
1804
+ :where([data-kit="progress"], [data-kit="meter"]) {
1805
+ --_track-height: var(--kit-space-2);
1806
+ --_fill: var(--kit-color-accent-default);
1807
+
1808
+ display: grid;
1809
+ gap: var(--kit-space-1);
1810
+ box-sizing: border-box;
1811
+ inline-size: 100%;
1812
+ font-family: var(--kit-font-family-sans);
1813
+ font-size: var(--kit-text-label-size);
1814
+ line-height: var(--kit-text-label-line-height);
1815
+ color: var(--kit-color-text-primary);
1816
+ }
1817
+
1818
+ :where([data-size="sm"]:is([data-kit="progress"], [data-kit="meter"])) {
1819
+ --_track-height: var(--kit-space-1);
1820
+ }
1821
+
1822
+ :where([data-size="lg"]:is([data-kit="progress"], [data-kit="meter"])) {
1823
+ --_track-height: var(--kit-space-3);
1824
+ }
1825
+
1826
+ :where([data-tone="neutral"]:is([data-kit="progress"], [data-kit="meter"])) {
1827
+ --_fill: var(--kit-color-text-secondary);
1828
+ }
1829
+
1830
+ :where([data-tone="success"]:is([data-kit="progress"], [data-kit="meter"])) {
1831
+ --_fill: var(--kit-color-status-success-foreground);
1832
+ }
1833
+
1834
+ :where([data-tone="warning"]:is([data-kit="progress"], [data-kit="meter"])) {
1835
+ --_fill: var(--kit-color-status-warning-foreground);
1836
+ }
1837
+
1838
+ :where([data-tone="danger"]:is([data-kit="progress"], [data-kit="meter"])) {
1839
+ --_fill: var(--kit-color-status-danger-foreground);
1840
+ }
1841
+
1842
+ :where([data-tone="info"]:is([data-kit="progress"], [data-kit="meter"])) {
1843
+ --_fill: var(--kit-color-status-info-foreground);
1844
+ }
1845
+
1846
+ :where([data-kit-slot="progress-header"]) {
1847
+ display: flex;
1848
+ align-items: baseline;
1849
+ justify-content: space-between;
1850
+ gap: var(--kit-space-3);
1851
+ }
1852
+
1853
+ :where([data-kit-slot="progress-label"]) {
1854
+ font-weight: var(--kit-text-label-weight);
1855
+ }
1856
+
1857
+ :where([data-kit-slot="progress-value"]) {
1858
+ color: var(--kit-color-text-secondary);
1859
+ font-variant-numeric: tabular-nums;
1860
+ }
1861
+
1862
+ :where([data-kit-slot="progress-track"]) {
1863
+ position: relative;
1864
+ box-sizing: border-box;
1865
+ overflow: hidden;
1866
+ block-size: var(--_track-height);
1867
+ border-radius: var(--kit-radius-pill);
1868
+ background-color: color-mix(in srgb, var(--kit-color-text-primary) 14%, transparent);
1869
+ }
1870
+
1871
+ :where([data-kit-slot="progress-indicator"]) {
1872
+ display: block;
1873
+ block-size: 100%;
1874
+ border-radius: inherit;
1875
+ background-color: var(--_fill);
1876
+ transition: width var(--kit-duration-base) var(--kit-easing-standard);
1877
+ }
1878
+
1879
+ /* Without a known value the fill sweeps across the track. */
1880
+ :where([data-kit="progress"][data-indeterminate] [data-kit-slot="progress-indicator"]) {
1881
+ position: absolute;
1882
+ inset-block: 0;
1883
+ inline-size: 40%;
1884
+ animation: kit-progress-sweep 1400ms var(--kit-easing-standard) infinite;
1885
+ }
1886
+
1887
+ @keyframes kit-progress-sweep {
1888
+ from {
1889
+ inset-inline-start: -40%;
1890
+ }
1891
+
1892
+ to {
1893
+ inset-inline-start: 100%;
1894
+ }
1895
+ }
1896
+
1897
+ @media (prefers-reduced-motion: reduce) {
1898
+ :where([data-kit-slot="progress-indicator"]) {
1899
+ transition: none;
1900
+ }
1901
+
1902
+ :where([data-kit="progress"][data-indeterminate] [data-kit-slot="progress-indicator"]) {
1903
+ inset-inline-start: 0;
1904
+ animation: none;
1905
+ }
1906
+ }
1907
+
1908
+ @media (forced-colors: active) {
1909
+ :where([data-kit-slot="progress-track"]) {
1910
+ border: var(--kit-border-width-default) solid CanvasText;
1911
+ }
1912
+
1913
+ :where([data-kit-slot="progress-indicator"]) {
1914
+ background-color: Highlight;
1915
+ }
1916
+ }
1917
+
1918
+ /* ---------------------------------------------------------- Progress circle */
1919
+
1920
+ /*
1921
+ * The ring is drawn in a 100 wide box, so its geometry is unitless (a stroke of
1922
+ * 8 is 8% of the diameter) and it scales with the size token. The component
1923
+ * sets pathLength to 100, so a dash unit is a percent and the fill is simply
1924
+ * "100 minus the percent" off the start of the stroke.
1925
+ */
1926
+ :where([data-kit="progress-circle"]) {
1927
+ --_diameter: var(--kit-size-56);
1928
+ --_thickness: 8;
1929
+ --_fill: var(--kit-color-accent-default);
1930
+ --_font-size: var(--kit-text-caption-size);
1931
+
1932
+ display: inline-grid;
1933
+ justify-items: center;
1934
+ gap: var(--kit-space-2);
1935
+ box-sizing: border-box;
1936
+ font-family: var(--kit-font-family-sans);
1937
+ font-size: var(--kit-text-label-size);
1938
+ line-height: var(--kit-text-label-line-height);
1939
+ color: var(--kit-color-text-primary);
1940
+ }
1941
+
1942
+ :where([data-kit="progress-circle"][data-size="sm"]) {
1943
+ --_diameter: var(--kit-size-32);
1944
+ --_thickness: 10;
1945
+ }
1946
+
1947
+ :where([data-kit="progress-circle"][data-size="lg"]) {
1948
+ --_diameter: calc(var(--kit-size-56) * 1.5);
1949
+ --_thickness: 7;
1950
+ --_font-size: var(--kit-text-h4-size);
1951
+ }
1952
+
1953
+ :where([data-kit="progress-circle"][data-tone="success"]) {
1954
+ --_fill: var(--kit-color-status-success-foreground);
1955
+ }
1956
+
1957
+ :where([data-kit="progress-circle"][data-tone="warning"]) {
1958
+ --_fill: var(--kit-color-status-warning-foreground);
1959
+ }
1960
+
1961
+ :where([data-kit="progress-circle"][data-tone="danger"]) {
1962
+ --_fill: var(--kit-color-status-danger-foreground);
1963
+ }
1964
+
1965
+ :where([data-kit-slot="progress-circle-ring"]) {
1966
+ position: relative;
1967
+ inline-size: var(--_diameter);
1968
+ block-size: var(--_diameter);
1969
+ }
1970
+
1971
+ :where([data-kit-slot="progress-circle-svg"]) {
1972
+ display: block;
1973
+ inline-size: 100%;
1974
+ block-size: 100%;
1975
+ }
1976
+
1977
+ :where([data-kit-slot="progress-circle-track"], [data-kit-slot="progress-circle-indicator"]) {
1978
+ fill: none;
1979
+ stroke-width: var(--_thickness);
1980
+ }
1981
+
1982
+ :where([data-kit-slot="progress-circle-track"]) {
1983
+ stroke: color-mix(in srgb, var(--kit-color-text-primary) 14%, transparent);
1984
+ }
1985
+
1986
+ /* The ring starts at the top and runs clockwise, in every writing direction. */
1987
+ :where([data-kit-slot="progress-circle-indicator"]) {
1988
+ stroke: var(--_fill);
1989
+ stroke-linecap: round;
1990
+ stroke-dasharray: 100;
1991
+ stroke-dashoffset: calc(100 - var(--_percent, 0));
1992
+ transform: rotate(-90deg);
1993
+ transform-origin: center;
1994
+ transition: stroke-dashoffset var(--kit-duration-base) var(--kit-easing-standard);
1995
+ }
1996
+
1997
+ :where([data-kit-slot="progress-circle-center"]) {
1998
+ position: absolute;
1999
+ inset: 0;
2000
+ display: grid;
2001
+ place-items: center;
2002
+ font-size: var(--_font-size);
2003
+ font-weight: var(--kit-text-label-weight);
2004
+ font-variant-numeric: tabular-nums;
2005
+ }
2006
+
2007
+ :where([data-kit-slot="progress-circle-label"]) {
2008
+ font-weight: var(--kit-text-label-weight);
2009
+ }
2010
+
2011
+ /* Without a known value a short arc turns around the ring. */
2012
+ :where([data-kit="progress-circle"][data-indeterminate] [data-kit-slot="progress-circle-svg"]) {
2013
+ animation: kit-progress-circle-spin calc(var(--kit-duration-slow) * 3) linear infinite;
2014
+ }
2015
+
2016
+ :where([data-kit="progress-circle"][data-indeterminate] [data-kit-slot="progress-circle-indicator"]) {
2017
+ transition: none;
2018
+ }
2019
+
2020
+ @keyframes kit-progress-circle-spin {
2021
+ to {
2022
+ transform: rotate(360deg);
2023
+ }
2024
+ }
2025
+
2026
+ @media (prefers-reduced-motion: reduce) {
2027
+ :where([data-kit-slot="progress-circle-indicator"]) {
2028
+ transition: none;
2029
+ }
2030
+
2031
+ :where([data-kit="progress-circle"][data-indeterminate] [data-kit-slot="progress-circle-svg"]) {
2032
+ animation: none;
2033
+ }
2034
+ }
2035
+
2036
+ @media (forced-colors: active) {
2037
+ :where([data-kit-slot="progress-circle-track"]) {
2038
+ stroke: GrayText;
2039
+ }
2040
+
2041
+ :where([data-kit-slot="progress-circle-indicator"]) {
2042
+ stroke: Highlight;
2043
+ }
2044
+ }
2045
+
2046
+ /* ----------------------------------------------------------------- Skeleton */
2047
+
2048
+ :where([data-kit="skeleton"]) {
2049
+ display: block;
2050
+ box-sizing: border-box;
2051
+ background-color: color-mix(in srgb, var(--kit-color-text-primary) 10%, transparent);
2052
+ animation: kit-skeleton-pulse 1600ms var(--kit-easing-standard) infinite;
2053
+ }
2054
+
2055
+ :where([data-kit="skeleton"][data-variant="text"]) {
2056
+ inline-size: 100%;
2057
+ block-size: var(--kit-space-4);
2058
+ border-radius: var(--kit-radius-control);
2059
+ }
2060
+
2061
+ :where([data-kit="skeleton"][data-variant="rect"]) {
2062
+ inline-size: 100%;
2063
+ block-size: var(--kit-space-16);
2064
+ border-radius: var(--kit-radius-panel);
2065
+ }
2066
+
2067
+ :where([data-kit="skeleton"][data-variant="circle"]) {
2068
+ inline-size: var(--kit-size-40);
2069
+ block-size: var(--kit-size-40);
2070
+ border-radius: var(--kit-radius-full);
2071
+ }
2072
+
2073
+ :where([data-kit="skeleton-text"]) {
2074
+ display: grid;
2075
+ gap: var(--kit-space-2);
2076
+ inline-size: 100%;
2077
+ }
2078
+
2079
+ :where([data-kit="skeleton-text"] > [data-kit="skeleton"]:last-child:not(:only-child)) {
2080
+ inline-size: 60%;
2081
+ }
2082
+
2083
+ @keyframes kit-skeleton-pulse {
2084
+ 0%,
2085
+ 100% {
2086
+ opacity: 1;
2087
+ }
2088
+
2089
+ 50% {
2090
+ opacity: 0.5;
2091
+ }
2092
+ }
2093
+
2094
+ @media (prefers-reduced-motion: reduce) {
2095
+ :where([data-kit="skeleton"]) {
2096
+ animation: none;
2097
+ }
2098
+ }
2099
+
2100
+ @media (forced-colors: active) {
2101
+ :where([data-kit="skeleton"]) {
2102
+ background-color: GrayText;
2103
+ opacity: 0.4;
2104
+ animation: none;
2105
+ }
2106
+ }
2107
+
2108
+ /* --------------------------------------------------------------- EmptyState */
2109
+
2110
+ :where([data-kit="empty-state"]) {
2111
+ display: flex;
2112
+ flex-direction: column;
2113
+ align-items: center;
2114
+ gap: var(--kit-space-2);
2115
+ box-sizing: border-box;
2116
+ padding: var(--kit-space-10) var(--kit-space-6);
2117
+ text-align: center;
2118
+ color: var(--kit-color-text-primary);
2119
+ font-family: var(--kit-font-family-sans);
2120
+ }
2121
+
2122
+ :where([data-kit-slot="empty-icon"]) {
2123
+ display: inline-flex;
2124
+ align-items: center;
2125
+ justify-content: center;
2126
+ inline-size: var(--kit-size-48);
2127
+ block-size: var(--kit-size-48);
2128
+ margin-block-end: var(--kit-space-2);
2129
+ border-radius: var(--kit-radius-full);
2130
+ background-color: var(--kit-color-bg-raised);
2131
+ color: var(--kit-color-text-secondary);
2132
+ }
2133
+
2134
+ :where([data-kit-slot="empty-title"]) {
2135
+ margin: 0;
2136
+ font-size: var(--kit-text-h4-size);
2137
+ line-height: var(--kit-text-h4-line-height);
2138
+ font-weight: var(--kit-text-h4-weight);
2139
+ }
2140
+
2141
+ :where([data-kit-slot="empty-description"]) {
2142
+ margin: 0;
2143
+ max-inline-size: calc(var(--kit-size-56) * 7);
2144
+ color: var(--kit-color-text-secondary);
2145
+ font-size: var(--kit-text-body-size);
2146
+ line-height: var(--kit-text-body-line-height);
2147
+ }
2148
+
2149
+ :where([data-kit-slot="empty-action"]) {
2150
+ display: flex;
2151
+ flex-wrap: wrap;
2152
+ justify-content: center;
2153
+ gap: var(--kit-space-2);
2154
+ margin-block-start: var(--kit-space-3);
2155
+ }
2156
+
2157
+ /* =========================================================================
2158
+ * Data display: Card, Avatar, Tag, Stat, Table, ScrollArea, Collapsible
2159
+ * ========================================================================= */
2160
+
2161
+ /* --------------------------------------------------------------------- Card */
2162
+
2163
+ :where([data-kit="card"]) {
2164
+ --_pad: var(--kit-space-4);
2165
+
2166
+ display: flex;
2167
+ flex-direction: column;
2168
+ gap: var(--kit-space-3);
2169
+ box-sizing: border-box;
2170
+ min-inline-size: 0;
2171
+ padding: var(--_pad);
2172
+ border: var(--kit-border-width-default) solid var(--kit-color-border-default);
2173
+ border-radius: var(--kit-radius-panel);
2174
+ background-color: var(--kit-color-bg-surface);
2175
+ color: var(--kit-color-text-primary);
2176
+ font-family: var(--kit-font-family-sans);
2177
+ font-size: var(--kit-text-body-size);
2178
+ line-height: var(--kit-text-body-line-height);
2179
+ text-decoration: none;
2180
+ }
2181
+
2182
+ :where([data-kit="card"][data-variant="raised"]) {
2183
+ border-color: var(--kit-color-border-subtle);
2184
+ background-color: var(--kit-color-bg-raised);
2185
+ box-shadow: var(--kit-shadow-raised);
2186
+ }
2187
+
2188
+ :where([data-kit="card"][data-variant="flat"]) {
2189
+ border-color: transparent;
2190
+ background-color: var(--kit-color-bg-raised);
2191
+ }
2192
+
2193
+ :where([data-kit="card"][data-padding="none"]) {
2194
+ --_pad: var(--kit-space-0);
2195
+ }
2196
+
2197
+ :where([data-kit="card"][data-padding="sm"]) {
2198
+ --_pad: var(--kit-space-3);
2199
+ }
2200
+
2201
+ :where([data-kit="card"][data-padding="lg"]) {
2202
+ --_pad: var(--kit-space-6);
2203
+ }
2204
+
2205
+ :where([data-kit="card"][data-interactive]) {
2206
+ cursor: pointer;
2207
+ transition:
2208
+ border-color var(--kit-duration-fast) var(--kit-easing-standard),
2209
+ box-shadow var(--kit-duration-fast) var(--kit-easing-standard);
2210
+ }
2211
+
2212
+ :where([data-kit="card"][data-interactive]):hover {
2213
+ border-color: var(--kit-color-border-strong);
2214
+ box-shadow: var(--kit-shadow-raised);
2215
+ }
2216
+
2217
+ :where([data-kit="card"][data-interactive]):focus-visible {
2218
+ outline: var(--kit-border-width-focus) solid var(--kit-color-border-focus);
2219
+ outline-offset: var(--kit-space-0-5);
2220
+ }
2221
+
2222
+ :where([data-kit-slot="card-header"]) {
2223
+ display: grid;
2224
+ gap: var(--kit-space-1);
2225
+ }
2226
+
2227
+ :where([data-kit-slot="card-title"]) {
2228
+ margin: 0;
2229
+ font-size: var(--kit-text-h4-size);
2230
+ line-height: var(--kit-text-h4-line-height);
2231
+ font-weight: var(--kit-text-h4-weight);
2232
+ }
2233
+
2234
+ :where([data-kit-slot="card-description"]) {
2235
+ margin: 0;
2236
+ color: var(--kit-color-text-secondary);
2237
+ }
2238
+
2239
+ :where([data-kit-slot="card-content"]) {
2240
+ min-inline-size: 0;
2241
+ }
2242
+
2243
+ :where([data-kit-slot="card-footer"]) {
2244
+ display: flex;
2245
+ flex-wrap: wrap;
2246
+ align-items: center;
2247
+ justify-content: flex-end;
2248
+ gap: var(--kit-space-2);
2249
+ }
2250
+
2251
+ /* ------------------------------------------------------------------- Avatar */
2252
+
2253
+ :where([data-kit="avatar"]) {
2254
+ --_size: var(--kit-size-40);
2255
+ --_font-size: var(--kit-font-size-14);
2256
+
2257
+ display: inline-flex;
2258
+ flex: none;
2259
+ align-items: center;
2260
+ justify-content: center;
2261
+ box-sizing: border-box;
2262
+ overflow: hidden;
2263
+ inline-size: var(--_size);
2264
+ block-size: var(--_size);
2265
+ border-radius: var(--kit-radius-full);
2266
+ background-color: var(--kit-color-accent-subtle);
2267
+ color: var(--kit-color-text-primary);
2268
+ font-family: var(--kit-font-family-sans);
2269
+ font-size: var(--_font-size);
2270
+ font-weight: var(--kit-font-weight-semibold);
2271
+ line-height: 1;
2272
+ vertical-align: middle;
2273
+ user-select: none;
2274
+ }
2275
+
2276
+ :where([data-kit="avatar"][data-size="xs"]) {
2277
+ --_size: var(--kit-size-24);
2278
+ --_font-size: var(--kit-font-size-12);
2279
+ }
2280
+
2281
+ :where([data-kit="avatar"][data-size="sm"]) {
2282
+ --_size: var(--kit-size-32);
2283
+ --_font-size: var(--kit-font-size-13);
2284
+ }
2285
+
2286
+ :where([data-kit="avatar"][data-size="lg"]) {
2287
+ --_size: var(--kit-size-48);
2288
+ --_font-size: var(--kit-font-size-16);
2289
+ }
2290
+
2291
+ :where([data-kit="avatar"][data-size="xl"]) {
2292
+ --_size: var(--kit-size-56);
2293
+ --_font-size: var(--kit-font-size-20);
2294
+ }
2295
+
2296
+ :where([data-kit="avatar"][data-shape="square"]) {
2297
+ border-radius: var(--kit-radius-control);
2298
+ }
2299
+
2300
+ :where([data-kit-slot="avatar-image"]) {
2301
+ inline-size: 100%;
2302
+ block-size: 100%;
2303
+ object-fit: cover;
2304
+ }
2305
+
2306
+ :where([data-kit-slot="avatar-fallback"]) {
2307
+ display: inline-flex;
2308
+ align-items: center;
2309
+ justify-content: center;
2310
+ inline-size: 100%;
2311
+ block-size: 100%;
2312
+ }
2313
+
2314
+ :where([data-kit="avatar-group"]) {
2315
+ display: inline-flex;
2316
+ align-items: center;
2317
+ isolation: isolate;
2318
+ }
2319
+
2320
+ :where([data-kit="avatar-group"] > [data-kit="avatar"]) {
2321
+ box-shadow: 0 0 0 var(--kit-border-width-2) var(--kit-color-bg-surface);
2322
+ }
2323
+
2324
+ :where([data-kit="avatar-group"] > [data-kit="avatar"] + [data-kit="avatar"]) {
2325
+ margin-inline-start: calc(var(--kit-space-2) * -1);
2326
+ }
2327
+
2328
+ :where([data-kit="avatar"][data-overflow]) {
2329
+ background-color: var(--kit-color-bg-raised);
2330
+ color: var(--kit-color-text-secondary);
2331
+ }
2332
+
2333
+ /* ---------------------------------------------------------------------- Tag */
2334
+
2335
+ :where([data-kit="tag"]) {
2336
+ --_height: var(--kit-size-24);
2337
+ --_bg: var(--kit-color-bg-raised);
2338
+ --_bd: var(--kit-color-border-default);
2339
+ --_fg: var(--kit-color-text-primary);
2340
+
2341
+ display: inline-flex;
2342
+ align-items: center;
2343
+ gap: var(--kit-space-1);
2344
+ box-sizing: border-box;
2345
+ min-block-size: var(--_height);
2346
+ padding-inline: var(--kit-space-2);
2347
+ border: var(--kit-border-width-default) solid var(--_bd);
2348
+ border-radius: var(--kit-radius-control);
2349
+ background-color: var(--_bg);
2350
+ color: var(--_fg);
2351
+ font-family: var(--kit-font-family-sans);
2352
+ font-size: var(--kit-text-caption-size);
2353
+ font-weight: var(--kit-font-weight-medium);
2354
+ line-height: var(--kit-text-caption-line-height);
2355
+ vertical-align: middle;
2356
+ }
2357
+
2358
+ :where([data-kit="tag"][data-size="sm"]) {
2359
+ --_height: var(--kit-badge-height-md);
2360
+ }
2361
+
2362
+ :where([data-kit="tag"][data-tone="accent"]) {
2363
+ --_bg: var(--kit-color-accent-subtle);
2364
+ --_bd: var(--kit-color-accent-default);
2365
+ }
2366
+
2367
+ :where([data-kit="tag"][data-tone="success"]) {
2368
+ --_bg: var(--kit-color-status-success-background);
2369
+ --_bd: var(--kit-color-status-success-border);
2370
+ --_fg: var(--kit-color-status-success-foreground);
2371
+ }
2372
+
2373
+ :where([data-kit="tag"][data-tone="warning"]) {
2374
+ --_bg: var(--kit-color-status-warning-background);
2375
+ --_bd: var(--kit-color-status-warning-border);
2376
+ --_fg: var(--kit-color-status-warning-foreground);
2377
+ }
2378
+
2379
+ :where([data-kit="tag"][data-tone="danger"]) {
2380
+ --_bg: var(--kit-color-status-danger-background);
2381
+ --_bd: var(--kit-color-status-danger-border);
2382
+ --_fg: var(--kit-color-status-danger-foreground);
2383
+ }
2384
+
2385
+ :where([data-kit="tag"][data-tone="info"]) {
2386
+ --_bg: var(--kit-color-status-info-background);
2387
+ --_bd: var(--kit-color-status-info-border);
2388
+ --_fg: var(--kit-color-status-info-foreground);
2389
+ }
2390
+
2391
+ :where([data-kit-slot="tag-icon"]) {
2392
+ display: inline-flex;
2393
+ align-items: center;
2394
+ }
2395
+
2396
+ /* The remove button keeps the 24px minimum target without growing the tag. */
2397
+ :where([data-kit-slot="tag-remove"]) {
2398
+ display: inline-flex;
2399
+ align-items: center;
2400
+ justify-content: center;
2401
+ box-sizing: border-box;
2402
+ min-inline-size: var(--kit-size-target-min);
2403
+ min-block-size: var(--kit-size-target-min);
2404
+ margin-block: calc((var(--_height) - var(--kit-size-target-min)) / 2);
2405
+ margin-inline: calc(var(--kit-space-1) * -1) calc(var(--kit-space-2) * -1);
2406
+ padding: 0;
2407
+ border: 0;
2408
+ border-radius: var(--kit-radius-control);
2409
+ background-color: transparent;
2410
+ color: inherit;
2411
+ cursor: pointer;
2412
+ }
2413
+
2414
+ :where([data-kit-slot="tag-remove"]):hover {
2415
+ background-color: color-mix(in srgb, currentcolor 14%, transparent);
2416
+ }
2417
+
2418
+ :where([data-kit-slot="tag-remove"]):focus-visible {
2419
+ outline: var(--kit-border-width-focus) solid var(--kit-color-border-focus);
2420
+ outline-offset: 0;
2421
+ }
2422
+
2423
+ @media (forced-colors: active) {
2424
+ :where([data-kit="tag"]) {
2425
+ border-color: CanvasText;
2426
+ }
2427
+ }
2428
+
2429
+ /* --------------------------------------------------------------------- Stat */
2430
+
2431
+ :where([data-kit="stat"]) {
2432
+ display: grid;
2433
+ gap: var(--kit-space-1);
2434
+ margin: 0;
2435
+ font-family: var(--kit-font-family-sans);
2436
+ color: var(--kit-color-text-primary);
2437
+ }
2438
+
2439
+ :where([data-kit="stat"] dd) {
2440
+ margin: 0;
2441
+ }
2442
+
2443
+ :where([data-kit-slot="stat-label"]) {
2444
+ color: var(--kit-color-text-secondary);
2445
+ font-size: var(--kit-text-label-size);
2446
+ line-height: var(--kit-text-label-line-height);
2447
+ font-weight: var(--kit-text-label-weight);
2448
+ }
2449
+
2450
+ :where([data-kit-slot="stat-value"]) {
2451
+ font-size: var(--kit-text-h2-size);
2452
+ line-height: var(--kit-text-h2-line-height);
2453
+ font-weight: var(--kit-font-weight-semibold);
2454
+ font-variant-numeric: tabular-nums;
2455
+ }
2456
+
2457
+ :where([data-kit-slot="stat-delta"]) {
2458
+ display: inline-flex;
2459
+ align-items: center;
2460
+ gap: var(--kit-space-1);
2461
+ color: var(--kit-color-text-secondary);
2462
+ font-size: var(--kit-text-caption-size);
2463
+ line-height: var(--kit-text-caption-line-height);
2464
+ font-weight: var(--kit-font-weight-medium);
2465
+ font-variant-numeric: tabular-nums;
2466
+ }
2467
+
2468
+ :where([data-kit-slot="stat-delta"][data-intent="positive"]) {
2469
+ color: var(--kit-color-status-success-foreground);
2470
+ }
2471
+
2472
+ :where([data-kit-slot="stat-delta"][data-intent="negative"]) {
2473
+ color: var(--kit-color-status-danger-foreground);
2474
+ }
2475
+
2476
+ :where([data-kit-slot="stat-help"]) {
2477
+ color: var(--kit-color-text-secondary);
2478
+ font-size: var(--kit-text-caption-size);
2479
+ line-height: var(--kit-text-caption-line-height);
2480
+ }
2481
+
2482
+ /* ----------------------------------------------------------- Animated number */
2483
+
2484
+ /* Tabular digits keep the width still while the number counts. */
2485
+ :where([data-kit="animated-number"]) {
2486
+ font-variant-numeric: tabular-nums;
2487
+ }
2488
+
2489
+ /* -------------------------------------------------------------------- Table */
2490
+
2491
+ :where([data-kit="table-container"]) {
2492
+ overflow: auto;
2493
+ box-sizing: border-box;
2494
+ max-inline-size: 100%;
2495
+ border: var(--kit-border-width-default) solid var(--kit-color-border-default);
2496
+ border-radius: var(--kit-radius-panel);
2497
+ background-color: var(--kit-color-bg-surface);
2498
+ }
2499
+
2500
+ :where([data-kit="table-container"]):focus-visible {
2501
+ outline: var(--kit-border-width-focus) solid var(--kit-color-border-focus);
2502
+ outline-offset: calc(var(--kit-border-width-focus) * -1);
2503
+ }
2504
+
2505
+ :where([data-kit="table"]) {
2506
+ inline-size: 100%;
2507
+ border-collapse: separate;
2508
+ border-spacing: 0;
2509
+ color: var(--kit-color-text-primary);
2510
+ font-family: var(--kit-font-family-sans);
2511
+ font-size: var(--kit-text-body-size);
2512
+ line-height: var(--kit-text-body-line-height);
2513
+ font-variant-numeric: tabular-nums;
2514
+ }
2515
+
2516
+ :where([data-kit-slot="table-caption"]) {
2517
+ padding: var(--kit-space-2) var(--kit-space-3);
2518
+ color: var(--kit-color-text-secondary);
2519
+ font-weight: var(--kit-font-weight-medium);
2520
+ text-align: start;
2521
+ caption-side: top;
2522
+ }
2523
+
2524
+ :where([data-kit-slot="table-header-cell"], [data-kit-slot="table-cell"]) {
2525
+ box-sizing: border-box;
2526
+ block-size: var(--kit-grid-row-height);
2527
+ padding-block: var(--kit-space-1);
2528
+ padding-inline: var(--kit-space-3);
2529
+ border-block-end: var(--kit-border-width-default) solid var(--kit-color-border-subtle);
2530
+ text-align: start;
2531
+ vertical-align: middle;
2532
+ }
2533
+
2534
+ :where([data-kit-slot="table-header-cell"]) {
2535
+ background-color: var(--kit-color-bg-raised);
2536
+ border-block-end-color: var(--kit-color-border-default);
2537
+ color: var(--kit-color-text-secondary);
2538
+ font-size: var(--kit-text-label-size);
2539
+ font-weight: var(--kit-font-weight-semibold);
2540
+ white-space: nowrap;
2541
+ }
2542
+
2543
+ :where([data-kit-slot="table-header-cell"][aria-sort="ascending"], [data-kit-slot="table-header-cell"][aria-sort="descending"]) {
2544
+ color: var(--kit-color-text-primary);
2545
+ }
2546
+
2547
+ :where([data-kit-slot="table-header-cell"][data-align="center"], [data-kit-slot="table-cell"][data-align="center"]) {
2548
+ text-align: center;
2549
+ }
2550
+
2551
+ :where(
2552
+ [data-kit-slot="table-header-cell"][data-align="end"],
2553
+ [data-kit-slot="table-cell"][data-align="end"],
2554
+ [data-kit-slot="table-header-cell"][data-align="numeric"],
2555
+ [data-kit-slot="table-cell"][data-align="numeric"]
2556
+ ) {
2557
+ text-align: end;
2558
+ }
2559
+
2560
+ :where([data-kit-slot="table-body"] > [data-kit-slot="table-row"]:last-child > [data-kit-slot="table-cell"]) {
2561
+ border-block-end: 0;
2562
+ }
2563
+
2564
+ :where([data-kit-slot="table-body"] > [data-kit-slot="table-row"]):hover {
2565
+ background-color: color-mix(in srgb, var(--kit-color-text-primary) 5%, transparent);
2566
+ }
2567
+
2568
+ :where([data-kit="table"][data-striped] [data-kit-slot="table-body"] > [data-kit-slot="table-row"]:nth-child(even)) {
2569
+ background-color: color-mix(in srgb, var(--kit-color-text-primary) 3%, transparent);
2570
+ }
2571
+
2572
+ :where([data-kit-slot="table-row"][data-selected]) {
2573
+ background-color: var(--kit-color-selection);
2574
+ }
2575
+
2576
+ :where([data-kit-slot="table-foot"] > [data-kit-slot="table-row"] > [data-kit-slot="table-cell"]) {
2577
+ border-block-start: var(--kit-border-width-default) solid var(--kit-color-border-default);
2578
+ border-block-end: 0;
2579
+ background-color: var(--kit-color-bg-raised);
2580
+ font-weight: var(--kit-font-weight-semibold);
2581
+ }
2582
+
2583
+ :where([data-kit="table"][data-sticky-header] [data-kit-slot="table-header-cell"]) {
2584
+ position: sticky;
2585
+ inset-block-start: 0;
2586
+ z-index: var(--kit-z-sticky);
2587
+ }
2588
+
2589
+ @media (forced-colors: active) {
2590
+ :where([data-kit-slot="table-row"][data-selected]) {
2591
+ outline: var(--kit-border-width-default) solid Highlight;
2592
+ outline-offset: calc(var(--kit-border-width-default) * -1);
2593
+ }
2594
+ }
2595
+
2596
+ /* --------------------------------------------------------------- ScrollArea */
2597
+
2598
+ :where([data-kit="scroll-area"]) {
2599
+ position: relative;
2600
+ box-sizing: border-box;
2601
+ overflow: hidden;
2602
+ }
2603
+
2604
+ :where([data-kit-slot="scroll-viewport"]) {
2605
+ box-sizing: border-box;
2606
+ inline-size: 100%;
2607
+ block-size: 100%;
2608
+ overscroll-behavior: contain;
2609
+ }
2610
+
2611
+ :where([data-kit-slot="scroll-viewport"]):focus-visible {
2612
+ outline: var(--kit-border-width-focus) solid var(--kit-color-border-focus);
2613
+ outline-offset: calc(var(--kit-border-width-focus) * -1);
2614
+ }
2615
+
2616
+ :where([data-kit-slot="scrollbar"]) {
2617
+ display: flex;
2618
+ box-sizing: border-box;
2619
+ padding: var(--kit-space-0-5);
2620
+ opacity: 0;
2621
+ pointer-events: none;
2622
+ touch-action: none;
2623
+ user-select: none;
2624
+ transition: opacity var(--kit-duration-fast) var(--kit-easing-standard);
2625
+ }
2626
+
2627
+ :where([data-kit-slot="scrollbar"][data-orientation="vertical"]) {
2628
+ inset-block: 0;
2629
+ inset-inline-end: 0;
2630
+ inline-size: var(--kit-space-3);
2631
+ }
2632
+
2633
+ :where([data-kit-slot="scrollbar"][data-orientation="horizontal"]) {
2634
+ inset-inline: 0;
2635
+ inset-block-end: 0;
2636
+ flex-direction: column;
2637
+ block-size: var(--kit-space-3);
2638
+ }
2639
+
2640
+ :where([data-kit-slot="scrollbar"][data-hovering], [data-kit-slot="scrollbar"][data-scrolling]) {
2641
+ opacity: 1;
2642
+ pointer-events: auto;
2643
+ }
2644
+
2645
+ :where([data-kit-slot="scroll-thumb"]) {
2646
+ flex: 1 1 auto;
2647
+ border-radius: var(--kit-radius-pill);
2648
+ background-color: color-mix(in srgb, var(--kit-color-text-primary) 40%, transparent);
2649
+ }
2650
+
2651
+ :where([data-kit-slot="scroll-thumb"]):hover {
2652
+ background-color: color-mix(in srgb, var(--kit-color-text-primary) 60%, transparent);
2653
+ }
2654
+
2655
+ @media (prefers-reduced-motion: reduce) {
2656
+ :where([data-kit-slot="scrollbar"]) {
2657
+ transition: none;
2658
+ }
2659
+ }
2660
+
2661
+ @media (forced-colors: active) {
2662
+ :where([data-kit-slot="scroll-thumb"]) {
2663
+ background-color: CanvasText;
2664
+ }
2665
+ }
2666
+
2667
+ /* -------------------------------------------------------------- Collapsible */
2668
+
2669
+ :where([data-kit="collapsible"]) {
2670
+ box-sizing: border-box;
2671
+ }
2672
+
2673
+ :where([data-kit-slot="collapsible-trigger"]) {
2674
+ display: inline-flex;
2675
+ align-items: center;
2676
+ gap: var(--kit-space-2);
2677
+ box-sizing: border-box;
2678
+ min-block-size: var(--kit-size-target-min);
2679
+ margin: 0;
2680
+ padding-block: var(--kit-space-1);
2681
+ padding-inline: 0;
2682
+ border: 0;
2683
+ border-radius: var(--kit-radius-control);
2684
+ background-color: transparent;
2685
+ color: var(--kit-color-text-primary);
2686
+ font-family: var(--kit-font-family-sans);
2687
+ font-size: var(--kit-text-label-size);
2688
+ font-weight: var(--kit-font-weight-medium);
2689
+ line-height: var(--kit-text-label-line-height);
2690
+ cursor: pointer;
2691
+ }
2692
+
2693
+ :where([data-kit-slot="collapsible-trigger"]):focus-visible {
2694
+ outline: var(--kit-border-width-focus) solid var(--kit-color-border-focus);
2695
+ outline-offset: var(--kit-space-0-5);
2696
+ }
2697
+
2698
+ :where([data-kit-slot="collapsible-chevron"]) {
2699
+ flex: none;
2700
+ transition: transform var(--kit-duration-fast) var(--kit-easing-standard);
2701
+ }
2702
+
2703
+ :where([data-kit-slot="collapsible-trigger"][data-panel-open] [data-kit-slot="collapsible-chevron"]) {
2704
+ transform: rotate(90deg);
2705
+ }
2706
+
2707
+ /* The chevron points toward the end of the line, so it mirrors in RTL. */
2708
+ :where([data-kit-slot="collapsible-chevron"]:dir(rtl)) {
2709
+ transform: scaleX(-1);
2710
+ }
2711
+
2712
+ :where([data-kit-slot="collapsible-trigger"][data-panel-open] [data-kit-slot="collapsible-chevron"]:dir(rtl)) {
2713
+ transform: scaleX(-1) rotate(90deg);
2714
+ }
2715
+
2716
+ :where([data-kit-slot="collapsible-panel"]) {
2717
+ overflow: hidden;
2718
+ block-size: var(--collapsible-panel-height);
2719
+ transition: block-size var(--kit-duration-base) var(--kit-easing-standard);
2720
+ }
2721
+
2722
+ :where([data-kit-slot="collapsible-panel"][data-starting-style], [data-kit-slot="collapsible-panel"][data-ending-style]) {
2723
+ block-size: 0;
2724
+ }
2725
+
2726
+ @media (prefers-reduced-motion: reduce) {
2727
+ :where([data-kit-slot="collapsible-chevron"], [data-kit-slot="collapsible-panel"]) {
2728
+ transition: none;
2729
+ }
2730
+ }
2731
+
2732
+ /* =========================================================================
2733
+ * Navigation: Tabs, Breadcrumb, Pagination, Accordion, SegmentedControl,
2734
+ * Stepper, Toolbar
2735
+ * ========================================================================= */
2736
+
2737
+ /* --------------------------------------------------------------------- Tabs */
2738
+
2739
+ :where([data-kit="tabs"]) {
2740
+ display: flex;
2741
+ flex-direction: column;
2742
+ box-sizing: border-box;
2743
+ font-family: var(--kit-font-family-sans);
2744
+ color: var(--kit-color-text-primary);
2745
+ }
2746
+
2747
+ :where([data-kit-slot="tab-list"]) {
2748
+ position: relative;
2749
+ z-index: 0;
2750
+ display: flex;
2751
+ gap: var(--kit-space-1);
2752
+ box-sizing: border-box;
2753
+ }
2754
+
2755
+ :where([data-kit="tabs"][data-variant="line"] [data-kit-slot="tab-list"]) {
2756
+ border-block-end: var(--kit-border-width-default) solid var(--kit-color-border-default);
2757
+ }
2758
+
2759
+ :where([data-kit="tabs"][data-variant="pill"] [data-kit-slot="tab-list"]) {
2760
+ align-self: flex-start;
2761
+ padding: var(--kit-space-1);
2762
+ border-radius: var(--kit-radius-control);
2763
+ background-color: var(--kit-color-bg-raised);
2764
+ }
2765
+
2766
+ :where([data-kit-slot="tab"]) {
2767
+ position: relative;
2768
+ z-index: 1;
2769
+ display: inline-flex;
2770
+ align-items: center;
2771
+ justify-content: center;
2772
+ gap: var(--kit-space-2);
2773
+ box-sizing: border-box;
2774
+ min-block-size: var(--kit-size-control-md);
2775
+ margin: 0;
2776
+ padding-inline: var(--kit-space-3);
2777
+ border: 0;
2778
+ border-radius: var(--kit-radius-control);
2779
+ background-color: transparent;
2780
+ color: var(--kit-color-text-secondary);
2781
+ font-family: inherit;
2782
+ font-size: var(--kit-text-label-size);
2783
+ font-weight: var(--kit-font-weight-medium);
2784
+ line-height: var(--kit-text-label-line-height);
2785
+ white-space: nowrap;
2786
+ cursor: pointer;
2787
+ transition: color var(--kit-duration-instant) var(--kit-easing-standard);
2788
+ }
2789
+
2790
+ :where([data-kit-slot="tab"]):hover {
2791
+ color: var(--kit-color-text-primary);
2792
+ }
2793
+
2794
+ :where([data-kit-slot="tab"][data-active]) {
2795
+ color: var(--kit-color-text-primary);
2796
+ }
2797
+
2798
+ :where([data-kit-slot="tab"][data-disabled]) {
2799
+ color: var(--kit-color-text-disabled);
2800
+ cursor: not-allowed;
2801
+ }
2802
+
2803
+ :where([data-kit-slot="tab"]):focus-visible {
2804
+ outline: var(--kit-border-width-focus) solid var(--kit-color-border-focus);
2805
+ outline-offset: calc(var(--kit-border-width-focus) * -1);
2806
+ }
2807
+
2808
+ /* The indicator slides between tabs using the measurements Base UI publishes. */
2809
+ :where([data-kit-slot="tab-indicator"]) {
2810
+ position: absolute;
2811
+ z-index: 0;
2812
+ pointer-events: none;
2813
+ transition:
2814
+ inset-inline-start var(--kit-duration-base) var(--kit-easing-standard),
2815
+ inline-size var(--kit-duration-base) var(--kit-easing-standard);
2816
+ inset-inline-start: var(--active-tab-left);
2817
+ inline-size: var(--active-tab-width);
2818
+ }
2819
+
2820
+ :where([data-kit-slot="tab-indicator"]:dir(rtl)) {
2821
+ inset-inline-start: var(--active-tab-right);
2822
+ }
2823
+
2824
+ :where([data-kit="tabs"][data-variant="line"] [data-kit-slot="tab-indicator"]) {
2825
+ inset-block-end: calc(var(--kit-border-width-default) * -1);
2826
+ block-size: var(--kit-border-width-2);
2827
+ background-color: var(--kit-color-accent-default);
2828
+ }
2829
+
2830
+ :where([data-kit="tabs"][data-variant="pill"] [data-kit-slot="tab-indicator"]) {
2831
+ inset-block-start: var(--active-tab-top);
2832
+ block-size: var(--active-tab-height);
2833
+ border-radius: var(--kit-radius-control);
2834
+ background-color: var(--kit-color-bg-surface);
2835
+ box-shadow: var(--kit-shadow-raised);
2836
+ }
2837
+
2838
+ :where([data-kit-slot="tab-panel"]) {
2839
+ box-sizing: border-box;
2840
+ padding-block-start: var(--kit-space-4);
2841
+ }
2842
+
2843
+ :where([data-kit-slot="tab-panel"]):focus-visible {
2844
+ outline: var(--kit-border-width-focus) solid var(--kit-color-border-focus);
2845
+ outline-offset: var(--kit-space-0-5);
2846
+ }
2847
+
2848
+ @media (prefers-reduced-motion: reduce) {
2849
+ :where([data-kit-slot="tab-indicator"], [data-kit-slot="tab"]) {
2850
+ transition: none;
2851
+ }
2852
+ }
2853
+
2854
+ @media (forced-colors: active) {
2855
+ :where([data-kit-slot="tab-indicator"]) {
2856
+ background-color: Highlight;
2857
+ }
2858
+
2859
+ :where([data-kit-slot="tab"][data-active]) {
2860
+ text-decoration: underline;
2861
+ }
2862
+ }
2863
+
2864
+ /* --------------------------------------------------------------- Breadcrumb */
2865
+
2866
+ :where([data-kit="breadcrumb"]) {
2867
+ font-family: var(--kit-font-family-sans);
2868
+ font-size: var(--kit-text-label-size);
2869
+ line-height: var(--kit-text-label-line-height);
2870
+ }
2871
+
2872
+ :where([data-kit-slot="breadcrumb-list"]) {
2873
+ display: flex;
2874
+ flex-wrap: wrap;
2875
+ align-items: center;
2876
+ gap: var(--kit-space-1);
2877
+ margin: 0;
2878
+ padding: 0;
2879
+ list-style: none;
2880
+ }
2881
+
2882
+ :where([data-kit-slot="breadcrumb-item"]) {
2883
+ display: inline-flex;
2884
+ align-items: center;
2885
+ gap: var(--kit-space-1);
2886
+ color: var(--kit-color-text-secondary);
2887
+ }
2888
+
2889
+ :where([data-kit-slot="breadcrumb-item"] a) {
2890
+ color: var(--kit-color-text-secondary);
2891
+ border-radius: var(--kit-radius-control);
2892
+ text-decoration: none;
2893
+ }
2894
+
2895
+ :where([data-kit-slot="breadcrumb-item"] a):hover {
2896
+ color: var(--kit-color-text-primary);
2897
+ text-decoration: underline;
2898
+ }
2899
+
2900
+ :where([data-kit-slot="breadcrumb-item"] a):focus-visible {
2901
+ outline: var(--kit-border-width-focus) solid var(--kit-color-border-focus);
2902
+ outline-offset: var(--kit-space-0-5);
2903
+ }
2904
+
2905
+ :where([data-kit-slot="breadcrumb-page"]) {
2906
+ color: var(--kit-color-text-primary);
2907
+ font-weight: var(--kit-font-weight-medium);
2908
+ }
2909
+
2910
+ :where([data-kit-slot="breadcrumb-separator"]) {
2911
+ display: inline-flex;
2912
+ align-items: center;
2913
+ color: var(--kit-color-text-tertiary);
2914
+ }
2915
+
2916
+ :where([data-kit-slot="breadcrumb-separator"]:dir(rtl)) {
2917
+ transform: scaleX(-1);
2918
+ }
2919
+
2920
+ /* --------------------------------------------------------------- Pagination */
2921
+
2922
+ :where([data-kit="pagination"]) {
2923
+ font-family: var(--kit-font-family-sans);
2924
+ font-size: var(--kit-text-label-size);
2925
+ }
2926
+
2927
+ :where([data-kit-slot="pagination-list"]) {
2928
+ display: flex;
2929
+ flex-wrap: wrap;
2930
+ align-items: center;
2931
+ gap: var(--kit-space-1);
2932
+ margin: 0;
2933
+ padding: 0;
2934
+ list-style: none;
2935
+ }
2936
+
2937
+ :where([data-kit-slot="pagination-page"], [data-kit-slot="pagination-step"]) {
2938
+ display: inline-flex;
2939
+ align-items: center;
2940
+ justify-content: center;
2941
+ box-sizing: border-box;
2942
+ min-inline-size: var(--kit-size-control-md);
2943
+ min-block-size: var(--kit-size-control-md);
2944
+ margin: 0;
2945
+ padding-inline: var(--kit-space-2);
2946
+ border: var(--kit-border-width-default) solid transparent;
2947
+ border-radius: var(--kit-radius-control);
2948
+ background-color: transparent;
2949
+ color: var(--kit-color-text-primary);
2950
+ font-family: inherit;
2951
+ font-size: inherit;
2952
+ font-weight: var(--kit-font-weight-medium);
2953
+ font-variant-numeric: tabular-nums;
2954
+ cursor: pointer;
2955
+ transition: background-color var(--kit-duration-instant) var(--kit-easing-standard);
2956
+ }
2957
+
2958
+ :where([data-kit-slot="pagination-page"], [data-kit-slot="pagination-step"]):hover {
2959
+ background-color: color-mix(in srgb, var(--kit-color-text-primary) 8%, transparent);
2960
+ }
2961
+
2962
+ :where([data-kit-slot="pagination-page"][data-current]) {
2963
+ border-color: var(--kit-color-accent-default);
2964
+ background-color: var(--kit-color-accent-subtle);
2965
+ }
2966
+
2967
+ :where([data-kit-slot="pagination-page"], [data-kit-slot="pagination-step"]):focus-visible {
2968
+ outline: var(--kit-border-width-focus) solid var(--kit-color-border-focus);
2969
+ outline-offset: var(--kit-space-0-5);
2970
+ }
2971
+
2972
+ :where([data-kit-slot="pagination-step"]:disabled) {
2973
+ color: var(--kit-color-text-disabled);
2974
+ background-color: transparent;
2975
+ cursor: not-allowed;
2976
+ }
2977
+
2978
+ :where([data-kit-slot="pagination-step"]:dir(rtl)) {
2979
+ transform: scaleX(-1);
2980
+ }
2981
+
2982
+ :where([data-kit-slot="pagination-ellipsis"]) {
2983
+ display: inline-flex;
2984
+ align-items: center;
2985
+ justify-content: center;
2986
+ min-inline-size: var(--kit-size-control-md);
2987
+ color: var(--kit-color-text-secondary);
2988
+ user-select: none;
2989
+ }
2990
+
2991
+ @media (forced-colors: active) {
2992
+ :where([data-kit-slot="pagination-page"][data-current]) {
2993
+ border-color: Highlight;
2994
+ text-decoration: underline;
2995
+ }
2996
+ }
2997
+
2998
+ /* ---------------------------------------------------------------- Accordion */
2999
+
3000
+ :where([data-kit="accordion"]) {
3001
+ box-sizing: border-box;
3002
+ border-block-start: var(--kit-border-width-default) solid var(--kit-color-border-default);
3003
+ font-family: var(--kit-font-family-sans);
3004
+ color: var(--kit-color-text-primary);
3005
+ }
3006
+
3007
+ :where([data-kit-slot="accordion-item"]) {
3008
+ border-block-end: var(--kit-border-width-default) solid var(--kit-color-border-default);
3009
+ }
3010
+
3011
+ :where([data-kit-slot="accordion-header"]) {
3012
+ margin: 0;
3013
+ font: inherit;
3014
+ }
3015
+
3016
+ :where([data-kit-slot="accordion-trigger"]) {
3017
+ display: flex;
3018
+ align-items: center;
3019
+ justify-content: space-between;
3020
+ gap: var(--kit-space-3);
3021
+ box-sizing: border-box;
3022
+ inline-size: 100%;
3023
+ min-block-size: var(--kit-size-control-lg);
3024
+ margin: 0;
3025
+ padding-block: var(--kit-space-2);
3026
+ padding-inline: var(--kit-space-1);
3027
+ border: 0;
3028
+ background-color: transparent;
3029
+ color: inherit;
3030
+ font-family: inherit;
3031
+ font-size: var(--kit-text-body-size);
3032
+ font-weight: var(--kit-font-weight-medium);
3033
+ line-height: var(--kit-text-body-line-height);
3034
+ text-align: start;
3035
+ cursor: pointer;
3036
+ }
3037
+
3038
+ :where([data-kit-slot="accordion-trigger"]):hover {
3039
+ background-color: color-mix(in srgb, var(--kit-color-text-primary) 4%, transparent);
3040
+ }
3041
+
3042
+ :where([data-kit-slot="accordion-trigger"]):focus-visible {
3043
+ outline: var(--kit-border-width-focus) solid var(--kit-color-border-focus);
3044
+ outline-offset: calc(var(--kit-border-width-focus) * -1);
3045
+ }
3046
+
3047
+ :where([data-kit-slot="accordion-trigger"][data-disabled]) {
3048
+ color: var(--kit-color-text-disabled);
3049
+ cursor: not-allowed;
3050
+ }
3051
+
3052
+ :where([data-kit-slot="accordion-chevron"]) {
3053
+ flex: none;
3054
+ color: var(--kit-color-text-secondary);
3055
+ transition: transform var(--kit-duration-fast) var(--kit-easing-standard);
3056
+ }
3057
+
3058
+ :where([data-kit-slot="accordion-trigger"][data-panel-open] [data-kit-slot="accordion-chevron"]) {
3059
+ transform: rotate(180deg);
3060
+ }
3061
+
3062
+ :where([data-kit-slot="accordion-panel"]) {
3063
+ overflow: hidden;
3064
+ block-size: var(--accordion-panel-height);
3065
+ transition: block-size var(--kit-duration-base) var(--kit-easing-standard);
3066
+ }
3067
+
3068
+ :where([data-kit-slot="accordion-panel"][data-starting-style], [data-kit-slot="accordion-panel"][data-ending-style]) {
3069
+ block-size: 0;
3070
+ }
3071
+
3072
+ :where([data-kit-slot="accordion-content"]) {
3073
+ padding-block: var(--kit-space-1) var(--kit-space-4);
3074
+ padding-inline: var(--kit-space-1);
3075
+ color: var(--kit-color-text-secondary);
3076
+ font-size: var(--kit-text-body-size);
3077
+ line-height: var(--kit-text-body-line-height);
3078
+ }
3079
+
3080
+ @media (prefers-reduced-motion: reduce) {
3081
+ :where([data-kit-slot="accordion-chevron"], [data-kit-slot="accordion-panel"]) {
3082
+ transition: none;
3083
+ }
3084
+ }
3085
+
3086
+ /* --------------------------------------------------------- SegmentedControl */
3087
+
3088
+ :where([data-kit="segmented-control"]) {
3089
+ --_height: var(--kit-size-control-md);
3090
+ --_pad: var(--kit-space-control-inline-md);
3091
+
3092
+ display: inline-flex;
3093
+ box-sizing: border-box;
3094
+ padding: var(--kit-space-0-5);
3095
+ gap: var(--kit-space-0-5);
3096
+ border-radius: var(--kit-radius-control);
3097
+ background-color: var(--kit-color-bg-raised);
3098
+ border: var(--kit-border-width-default) solid var(--kit-color-border-default);
3099
+ font-family: var(--kit-font-family-sans);
3100
+ }
3101
+
3102
+ :where([data-kit="segmented-control"][data-size="xs"]) {
3103
+ --_height: var(--kit-size-control-xs);
3104
+ --_pad: var(--kit-space-control-inline-xs);
3105
+ }
3106
+
3107
+ :where([data-kit="segmented-control"][data-size="sm"]) {
3108
+ --_height: var(--kit-size-control-sm);
3109
+ --_pad: var(--kit-space-control-inline-sm);
3110
+ }
3111
+
3112
+ :where([data-kit="segmented-control"][data-size="lg"]) {
3113
+ --_height: var(--kit-size-control-lg);
3114
+ --_pad: var(--kit-space-control-inline-lg);
3115
+ }
3116
+
3117
+ :where([data-kit="segmented-control"][data-size="xl"]) {
3118
+ --_height: var(--kit-size-control-xl);
3119
+ --_pad: var(--kit-space-control-inline-xl);
3120
+ }
3121
+
3122
+ :where([data-kit="segmented-control"][data-full-width]) {
3123
+ display: flex;
3124
+ }
3125
+
3126
+ :where([data-kit-slot="segment"]) {
3127
+ display: inline-flex;
3128
+ flex: 1 1 auto;
3129
+ align-items: center;
3130
+ justify-content: center;
3131
+ box-sizing: border-box;
3132
+ min-block-size: calc(var(--_height) - var(--kit-space-1));
3133
+ padding-inline: var(--_pad);
3134
+ border: 0;
3135
+ border-radius: calc(var(--kit-radius-control) - var(--kit-space-0-5));
3136
+ background-color: transparent;
3137
+ color: var(--kit-color-text-secondary);
3138
+ font-size: var(--kit-text-label-size);
3139
+ font-weight: var(--kit-font-weight-medium);
3140
+ line-height: var(--kit-text-label-line-height);
3141
+ white-space: nowrap;
3142
+ cursor: pointer;
3143
+ transition: background-color var(--kit-duration-instant) var(--kit-easing-standard);
3144
+ }
3145
+
3146
+ :where([data-kit-slot="segment"]):hover {
3147
+ color: var(--kit-color-text-primary);
3148
+ }
3149
+
3150
+ :where([data-kit-slot="segment"][data-checked]) {
3151
+ background-color: var(--kit-color-bg-surface);
3152
+ box-shadow: var(--kit-shadow-raised);
3153
+ color: var(--kit-color-text-primary);
3154
+ }
3155
+
3156
+ :where([data-kit-slot="segment"]):focus-visible {
3157
+ outline: var(--kit-border-width-focus) solid var(--kit-color-border-focus);
3158
+ outline-offset: var(--kit-space-0-5);
3159
+ }
3160
+
3161
+ :where([data-kit-slot="segment"][data-disabled]) {
3162
+ color: var(--kit-color-text-disabled);
3163
+ cursor: not-allowed;
3164
+ }
3165
+
3166
+ @media (forced-colors: active) {
3167
+ :where([data-kit-slot="segment"][data-checked]) {
3168
+ outline: var(--kit-border-width-2) solid Highlight;
3169
+ outline-offset: calc(var(--kit-border-width-2) * -1);
3170
+ }
3171
+ }
3172
+
3173
+ /* ------------------------------------------------------------------ Stepper */
3174
+
3175
+ :where([data-kit="stepper"]) {
3176
+ --_marker: var(--kit-size-28);
3177
+
3178
+ display: flex;
3179
+ box-sizing: border-box;
3180
+ margin: 0;
3181
+ padding: 0;
3182
+ list-style: none;
3183
+ font-family: var(--kit-font-family-sans);
3184
+ color: var(--kit-color-text-primary);
3185
+ }
3186
+
3187
+ :where([data-kit="stepper"][data-orientation="horizontal"]) {
3188
+ align-items: flex-start;
3189
+ gap: var(--kit-space-3);
3190
+ }
3191
+
3192
+ :where([data-kit="stepper"][data-orientation="vertical"]) {
3193
+ flex-direction: column;
3194
+ }
3195
+
3196
+ :where([data-kit-slot="step"]) {
3197
+ position: relative;
3198
+ display: flex;
3199
+ align-items: flex-start;
3200
+ gap: var(--kit-space-3);
3201
+ min-inline-size: 0;
3202
+ }
3203
+
3204
+ :where([data-kit="stepper"][data-orientation="horizontal"] > [data-kit-slot="step"]) {
3205
+ flex: 1 1 0;
3206
+ }
3207
+
3208
+ :where([data-kit="stepper"][data-orientation="horizontal"] > [data-kit-slot="step"]:last-child) {
3209
+ flex: 0 0 auto;
3210
+ }
3211
+
3212
+ :where([data-kit="stepper"][data-orientation="vertical"] > [data-kit-slot="step"]) {
3213
+ padding-block-end: var(--kit-space-6);
3214
+ }
3215
+
3216
+ :where([data-kit="stepper"][data-orientation="vertical"] > [data-kit-slot="step"]:last-child) {
3217
+ padding-block-end: 0;
3218
+ }
3219
+
3220
+ :where([data-kit-slot="step-marker"]) {
3221
+ display: inline-flex;
3222
+ flex: none;
3223
+ align-items: center;
3224
+ justify-content: center;
3225
+ box-sizing: border-box;
3226
+ inline-size: var(--_marker);
3227
+ block-size: var(--_marker);
3228
+ border: var(--kit-border-width-2) solid var(--kit-color-border-strong);
3229
+ border-radius: var(--kit-radius-full);
3230
+ background-color: var(--kit-color-bg-surface);
3231
+ color: var(--kit-color-text-secondary);
3232
+ font-size: var(--kit-text-label-size);
3233
+ font-weight: var(--kit-font-weight-semibold);
3234
+ font-variant-numeric: tabular-nums;
3235
+ }
3236
+
3237
+ :where([data-kit-slot="step"][data-status="current"] [data-kit-slot="step-marker"]) {
3238
+ border-color: var(--kit-color-accent-default);
3239
+ background-color: var(--kit-color-accent-subtle);
3240
+ color: var(--kit-color-text-primary);
3241
+ }
3242
+
3243
+ :where([data-kit-slot="step"][data-status="complete"] [data-kit-slot="step-marker"]) {
3244
+ border-color: var(--kit-color-accent-default);
3245
+ background-color: var(--kit-color-accent-default);
3246
+ color: var(--kit-color-accent-on-accent);
3247
+ }
3248
+
3249
+ :where([data-kit-slot="step-text"]) {
3250
+ display: grid;
3251
+ gap: var(--kit-space-0-5);
3252
+ min-inline-size: 0;
3253
+ padding-block-start: calc((var(--_marker) - var(--kit-text-label-line-height)) / 2);
3254
+ }
3255
+
3256
+ :where([data-kit-slot="step-label"]) {
3257
+ font-size: var(--kit-text-label-size);
3258
+ font-weight: var(--kit-font-weight-medium);
3259
+ line-height: var(--kit-text-label-line-height);
3260
+ }
3261
+
3262
+ :where([data-kit-slot="step"][data-status="current"] [data-kit-slot="step-label"]) {
3263
+ font-weight: var(--kit-font-weight-semibold);
3264
+ }
3265
+
3266
+ :where([data-kit-slot="step"][data-status="upcoming"] [data-kit-slot="step-label"]) {
3267
+ color: var(--kit-color-text-secondary);
3268
+ }
3269
+
3270
+ :where([data-kit-slot="step-description"]) {
3271
+ color: var(--kit-color-text-secondary);
3272
+ font-size: var(--kit-text-caption-size);
3273
+ line-height: var(--kit-text-caption-line-height);
3274
+ }
3275
+
3276
+ /* The connector between two steps; it takes the accent once the step is done. */
3277
+ :where([data-kit="stepper"][data-orientation="horizontal"] > [data-kit-slot="step"]:not(:last-child))::after {
3278
+ content: "";
3279
+ flex: 1 1 auto;
3280
+ align-self: flex-start;
3281
+ min-inline-size: var(--kit-space-6);
3282
+ margin-block-start: calc(var(--_marker) / 2 - var(--kit-border-width-default));
3283
+ block-size: var(--kit-border-width-2);
3284
+ background-color: var(--kit-color-border-default);
3285
+ }
3286
+
3287
+ :where([data-kit="stepper"][data-orientation="vertical"] > [data-kit-slot="step"]:not(:last-child))::after {
3288
+ content: "";
3289
+ position: absolute;
3290
+ inset-block: calc(var(--_marker) + var(--kit-space-1)) var(--kit-space-1);
3291
+ inset-inline-start: calc(var(--_marker) / 2 - var(--kit-border-width-default));
3292
+ inline-size: var(--kit-border-width-2);
3293
+ background-color: var(--kit-color-border-default);
3294
+ }
3295
+
3296
+ :where([data-kit-slot="step"][data-status="complete"]:not(:last-child))::after {
3297
+ background-color: var(--kit-color-accent-default);
3298
+ }
3299
+
3300
+ @media (forced-colors: active) {
3301
+ :where([data-kit-slot="step"][data-status="complete"] [data-kit-slot="step-marker"]) {
3302
+ border-color: Highlight;
3303
+ background-color: Highlight;
3304
+ color: HighlightText;
3305
+ }
3306
+
3307
+ :where([data-kit-slot="step"][data-status="current"] [data-kit-slot="step-marker"]) {
3308
+ border-color: Highlight;
3309
+ }
3310
+ }
3311
+
3312
+ /* ------------------------------------------------------------------ Toolbar */
3313
+
3314
+ :where([data-kit="toolbar"]) {
3315
+ display: flex;
3316
+ flex-wrap: wrap;
3317
+ align-items: center;
3318
+ gap: var(--kit-space-1);
3319
+ box-sizing: border-box;
3320
+ padding: var(--kit-space-1);
3321
+ border: var(--kit-border-width-default) solid var(--kit-color-border-default);
3322
+ border-radius: var(--kit-radius-panel);
3323
+ background-color: var(--kit-color-bg-surface);
3324
+ }
3325
+
3326
+ :where([data-kit="toolbar"][data-orientation="vertical"]) {
3327
+ flex-direction: column;
3328
+ align-items: stretch;
3329
+ }
3330
+
3331
+ :where([data-kit-slot="toolbar-group"]) {
3332
+ display: inline-flex;
3333
+ align-items: center;
3334
+ gap: var(--kit-space-1);
3335
+ }
3336
+
3337
+ :where([data-kit-slot="toolbar-separator"]) {
3338
+ align-self: stretch;
3339
+ inline-size: var(--kit-border-width-default);
3340
+ margin-block: var(--kit-space-1);
3341
+ background-color: var(--kit-color-border-default);
3342
+ }
3343
+
3344
+ :where([data-kit="toolbar"][data-orientation="vertical"] > [data-kit-slot="toolbar-separator"]) {
3345
+ inline-size: auto;
3346
+ block-size: var(--kit-border-width-default);
3347
+ margin-block: 0;
3348
+ margin-inline: var(--kit-space-1);
3349
+ }
3350
+
3351
+ /* =========================================================================
3352
+ * Overlays: Dialog, AlertDialog, Drawer, Popover, Tooltip, Menu, ContextMenu,
3353
+ * Toast, and the popups of Select and Combobox.
3354
+ *
3355
+ * Floating panels share one surface so a Menu, a Popover, a Select list and a
3356
+ * Combobox list look like one family. Positioners sit at the modal layer: a
3357
+ * popup opened from inside a dialog is mounted after it, so at the same layer
3358
+ * it stacks above the dialog instead of hiding behind its backdrop.
3359
+ * ========================================================================= */
3360
+
3361
+ /* ---------------------------------------------------------- Shared surface */
3362
+
3363
+ :where(
3364
+ [data-kit="popover"],
3365
+ [data-kit="menu"],
3366
+ [data-kit="select-popup"],
3367
+ [data-kit="combobox-popup"]
3368
+ ) {
3369
+ box-sizing: border-box;
3370
+ border: var(--kit-border-width-default) solid var(--kit-color-border-default);
3371
+ border-radius: var(--kit-radius-overlay);
3372
+ background-color: var(--kit-color-bg-overlay);
3373
+ color: var(--kit-color-text-primary);
3374
+ box-shadow: var(--kit-shadow-overlay);
3375
+ font-family: var(--kit-font-family-sans);
3376
+ font-size: var(--kit-text-body-size);
3377
+ line-height: var(--kit-text-body-line-height);
3378
+ transform-origin: var(--transform-origin);
3379
+ transition:
3380
+ opacity var(--kit-duration-fast) var(--kit-easing-enter),
3381
+ transform var(--kit-duration-fast) var(--kit-easing-enter);
3382
+ }
3383
+
3384
+ :where(
3385
+ [data-kit="popover"],
3386
+ [data-kit="menu"],
3387
+ [data-kit="select-popup"],
3388
+ [data-kit="combobox-popup"],
3389
+ [data-kit="tooltip"]
3390
+ )[data-starting-style],
3391
+ :where(
3392
+ [data-kit="popover"],
3393
+ [data-kit="menu"],
3394
+ [data-kit="select-popup"],
3395
+ [data-kit="combobox-popup"],
3396
+ [data-kit="tooltip"]
3397
+ )[data-ending-style] {
3398
+ opacity: 0;
3399
+ transform: scale(0.97);
3400
+ }
3401
+
3402
+ :where(
3403
+ [data-kit="popover-positioner"],
3404
+ [data-kit="menu-positioner"],
3405
+ [data-kit="select-positioner"],
3406
+ [data-kit="combobox-positioner"]
3407
+ ) {
3408
+ z-index: var(--kit-z-modal);
3409
+ }
3410
+
3411
+ :where([data-kit="tooltip-positioner"]) {
3412
+ z-index: var(--kit-z-tooltip);
3413
+ }
3414
+
3415
+ @media (prefers-reduced-motion: reduce) {
3416
+ :where(
3417
+ [data-kit="popover"],
3418
+ [data-kit="menu"],
3419
+ [data-kit="select-popup"],
3420
+ [data-kit="combobox-popup"],
3421
+ [data-kit="tooltip"],
3422
+ [data-kit="dialog"],
3423
+ [data-kit="dialog-backdrop"],
3424
+ [data-kit="drawer"],
3425
+ [data-kit="drawer-backdrop"],
3426
+ [data-kit="toast"]
3427
+ ) {
3428
+ transition: none;
3429
+ }
3430
+ }
3431
+
3432
+ @media (forced-colors: active) {
3433
+ :where(
3434
+ [data-kit="popover"],
3435
+ [data-kit="menu"],
3436
+ [data-kit="select-popup"],
3437
+ [data-kit="combobox-popup"],
3438
+ [data-kit="tooltip"],
3439
+ [data-kit="dialog"],
3440
+ [data-kit="drawer"],
3441
+ [data-kit="toast"]
3442
+ ) {
3443
+ border-color: CanvasText;
3444
+ }
3445
+ }
3446
+
3447
+ /* ----------------------------------------------------------------- Popover */
3448
+
3449
+ :where([data-kit="popover"]) {
3450
+ position: relative;
3451
+ max-inline-size: calc(var(--kit-size-40) * 9);
3452
+ padding: var(--kit-space-4);
3453
+ }
3454
+
3455
+ :where([data-kit-slot="popover-title"]) {
3456
+ margin: 0 0 var(--kit-space-1);
3457
+ font-size: var(--kit-text-label-size);
3458
+ line-height: var(--kit-text-label-line-height);
3459
+ font-weight: var(--kit-font-weight-semibold);
3460
+ }
3461
+
3462
+ :where([data-kit-slot="popover-description"]) {
3463
+ margin: 0 0 var(--kit-space-3);
3464
+ color: var(--kit-color-text-secondary);
3465
+ }
3466
+
3467
+ /*
3468
+ * The arrow is a rotated square that shares the popup's surface. Its position
3469
+ * along the popup is set by the positioner; the side it sits on is set here.
3470
+ * Left and right are physical because the positioner reports them physically.
3471
+ */
3472
+ :where([data-kit-slot="popup-arrow"]) {
3473
+ position: absolute;
3474
+ box-sizing: border-box;
3475
+ inline-size: var(--kit-space-3);
3476
+ block-size: var(--kit-space-3);
3477
+ background-color: var(--kit-color-bg-overlay);
3478
+ border: 0 solid var(--kit-color-border-default);
3479
+ pointer-events: none;
3480
+ }
3481
+
3482
+ :where([data-kit-slot="popup-arrow"][data-side="top"]) {
3483
+ inset-block-end: calc(var(--kit-space-3) / -2);
3484
+ border-block-end-width: var(--kit-border-width-default);
3485
+ border-inline-end-width: var(--kit-border-width-default);
3486
+ transform: rotate(45deg);
3487
+ }
3488
+
3489
+ :where([data-kit-slot="popup-arrow"][data-side="bottom"]) {
3490
+ inset-block-start: calc(var(--kit-space-3) / -2);
3491
+ border-block-start-width: var(--kit-border-width-default);
3492
+ border-inline-start-width: var(--kit-border-width-default);
3493
+ transform: rotate(45deg);
3494
+ }
3495
+
3496
+ :where([data-kit-slot="popup-arrow"][data-side="left"], [data-kit-slot="popup-arrow"][data-side="inline-start"]) {
3497
+ right: calc(var(--kit-space-3) / -2);
3498
+ border-block-start-width: var(--kit-border-width-default);
3499
+ border-inline-end-width: var(--kit-border-width-default);
3500
+ transform: rotate(45deg);
3501
+ }
3502
+
3503
+ :where([data-kit-slot="popup-arrow"][data-side="right"], [data-kit-slot="popup-arrow"][data-side="inline-end"]) {
3504
+ left: calc(var(--kit-space-3) / -2);
3505
+ border-block-end-width: var(--kit-border-width-default);
3506
+ border-inline-start-width: var(--kit-border-width-default);
3507
+ transform: rotate(45deg);
3508
+ }
3509
+
3510
+ /* ----------------------------------------------------------------- Tooltip */
3511
+
3512
+ :where([data-kit="tooltip"]) {
3513
+ box-sizing: border-box;
3514
+ max-inline-size: calc(var(--kit-size-40) * 8);
3515
+ padding: var(--kit-space-1) var(--kit-space-2);
3516
+ border-radius: var(--kit-radius-control);
3517
+ background-color: var(--kit-color-bg-inverse);
3518
+ color: var(--kit-color-text-inverse);
3519
+ font-family: var(--kit-font-family-sans);
3520
+ font-size: var(--kit-text-caption-size);
3521
+ line-height: var(--kit-text-caption-line-height);
3522
+ overflow-wrap: anywhere;
3523
+ transform-origin: var(--transform-origin);
3524
+ transition:
3525
+ opacity var(--kit-duration-instant) var(--kit-easing-enter),
3526
+ transform var(--kit-duration-instant) var(--kit-easing-enter);
3527
+ }
3528
+
3529
+ /* -------------------------------------------------------------------- Menu */
3530
+
3531
+ :where([data-kit="menu"]) {
3532
+ display: flex;
3533
+ flex-direction: column;
3534
+ min-inline-size: calc(var(--kit-size-40) * 5);
3535
+ max-block-size: var(--available-height);
3536
+ padding: var(--kit-space-1);
3537
+ overflow-y: auto;
3538
+ }
3539
+
3540
+ :where([data-kit="menu-item"]) {
3541
+ display: flex;
3542
+ align-items: center;
3543
+ gap: var(--kit-space-2);
3544
+ box-sizing: border-box;
3545
+ min-block-size: var(--kit-size-control-md);
3546
+ padding-block: var(--kit-space-1);
3547
+ padding-inline: var(--kit-space-2);
3548
+ border-radius: var(--kit-radius-control);
3549
+ color: var(--kit-color-text-primary);
3550
+ font-size: var(--kit-text-label-size);
3551
+ line-height: var(--kit-text-label-line-height);
3552
+ cursor: default;
3553
+ user-select: none;
3554
+ }
3555
+
3556
+ :where([data-kit="menu-item"][data-highlighted]),
3557
+ :where([data-kit="menu-item"][data-submenu][data-popup-open]) {
3558
+ background-color: color-mix(in srgb, var(--kit-color-text-primary) 8%, transparent);
3559
+ }
3560
+
3561
+ :where([data-kit="menu-item"][data-tone="danger"]) {
3562
+ color: var(--kit-color-status-danger-foreground);
3563
+ }
3564
+
3565
+ :where([data-kit="menu-item"][data-disabled]) {
3566
+ color: var(--kit-color-text-disabled);
3567
+ cursor: not-allowed;
3568
+ }
3569
+
3570
+ :where([data-kit-slot="menu-item-icon"]) {
3571
+ display: inline-flex;
3572
+ flex: none;
3573
+ align-items: center;
3574
+ justify-content: center;
3575
+ inline-size: var(--kit-size-icon-md);
3576
+ block-size: var(--kit-size-icon-md);
3577
+ color: var(--kit-color-text-secondary);
3578
+ }
3579
+
3580
+ :where([data-kit="menu-item"][data-tone="danger"] [data-kit-slot="menu-item-icon"]) {
3581
+ color: inherit;
3582
+ }
3583
+
3584
+ :where([data-kit-slot="menu-item-text"]) {
3585
+ flex: 1 1 auto;
3586
+ min-inline-size: 0;
3587
+ }
3588
+
3589
+ :where([data-kit-slot="menu-item-shortcut"]) {
3590
+ flex: none;
3591
+ margin-inline-start: var(--kit-space-4);
3592
+ color: var(--kit-color-text-secondary);
3593
+ font-size: var(--kit-text-caption-size);
3594
+ }
3595
+
3596
+ :where([data-kit-slot="menu-item-chevron"]) {
3597
+ display: inline-flex;
3598
+ flex: none;
3599
+ margin-inline-start: var(--kit-space-4);
3600
+ color: var(--kit-color-text-secondary);
3601
+ }
3602
+
3603
+ :where([data-kit-slot="menu-item-chevron"]:dir(rtl)) {
3604
+ transform: scaleX(-1);
3605
+ }
3606
+
3607
+ :where([data-kit-slot="menu-radio-dot"]) {
3608
+ inline-size: var(--kit-space-2);
3609
+ block-size: var(--kit-space-2);
3610
+ border-radius: var(--kit-radius-full);
3611
+ background-color: currentcolor;
3612
+ }
3613
+
3614
+ :where([data-kit-slot="menu-group"]) {
3615
+ display: flex;
3616
+ flex-direction: column;
3617
+ }
3618
+
3619
+ :where([data-kit-slot="menu-label"]) {
3620
+ padding: var(--kit-space-1) var(--kit-space-2);
3621
+ color: var(--kit-color-text-secondary);
3622
+ font-size: var(--kit-text-caption-size);
3623
+ line-height: var(--kit-text-caption-line-height);
3624
+ font-weight: var(--kit-font-weight-semibold);
3625
+ }
3626
+
3627
+ :where([data-kit-slot="menu-separator"]) {
3628
+ block-size: var(--kit-border-width-default);
3629
+ margin-block: var(--kit-space-1);
3630
+ margin-inline: calc(var(--kit-space-1) * -1);
3631
+ background-color: var(--kit-color-border-subtle);
3632
+ }
3633
+
3634
+ @media (forced-colors: active) {
3635
+ :where([data-kit="menu-item"][data-highlighted], [data-kit="select-item"][data-highlighted], [data-kit="combobox-item"][data-highlighted]) {
3636
+ background-color: Highlight;
3637
+ color: HighlightText;
3638
+ }
3639
+ }
3640
+
3641
+ /* ------------------------------------------------- Select and Combobox lists */
3642
+
3643
+ :where([data-kit="select-popup"], [data-kit="combobox-popup"]) {
3644
+ display: flex;
3645
+ flex-direction: column;
3646
+ min-inline-size: var(--anchor-width);
3647
+ max-block-size: var(--available-height);
3648
+ padding: var(--kit-space-1);
3649
+ overflow: hidden;
3650
+ }
3651
+
3652
+ :where([data-kit-slot="select-list"], [data-kit-slot="combobox-list"]) {
3653
+ box-sizing: border-box;
3654
+ max-block-size: inherit;
3655
+ overflow-y: auto;
3656
+ overscroll-behavior: contain;
3657
+ }
3658
+
3659
+ :where([data-kit-slot="select-group"]) {
3660
+ display: block;
3661
+ }
3662
+
3663
+ :where([data-kit-slot="select-group-label"]) {
3664
+ padding: var(--kit-space-1) var(--kit-space-2);
3665
+ color: var(--kit-color-text-secondary);
3666
+ font-size: var(--kit-text-caption-size);
3667
+ line-height: var(--kit-text-caption-line-height);
3668
+ font-weight: var(--kit-font-weight-semibold);
3669
+ }
3670
+
3671
+ :where([data-kit="select-item"], [data-kit="combobox-item"]) {
3672
+ display: grid;
3673
+ grid-template-columns: var(--kit-size-icon-md) minmax(0, 1fr);
3674
+ align-items: center;
3675
+ gap: var(--kit-space-2);
3676
+ box-sizing: border-box;
3677
+ min-block-size: var(--kit-size-control-md);
3678
+ padding-block: var(--kit-space-1);
3679
+ padding-inline: var(--kit-space-2);
3680
+ border-radius: var(--kit-radius-control);
3681
+ color: var(--kit-color-text-primary);
3682
+ font-size: var(--kit-text-body-size);
3683
+ line-height: var(--kit-text-body-line-height);
3684
+ cursor: default;
3685
+ user-select: none;
3686
+ }
3687
+
3688
+ :where([data-kit="select-item"][data-highlighted], [data-kit="combobox-item"][data-highlighted]) {
3689
+ background-color: color-mix(in srgb, var(--kit-color-text-primary) 8%, transparent);
3690
+ }
3691
+
3692
+ :where([data-kit="select-item"][data-disabled], [data-kit="combobox-item"][data-disabled]) {
3693
+ color: var(--kit-color-text-disabled);
3694
+ cursor: not-allowed;
3695
+ }
3696
+
3697
+ :where([data-kit-slot="select-item-indicator"], [data-kit-slot="combobox-item-indicator"]) {
3698
+ display: inline-flex;
3699
+ align-items: center;
3700
+ justify-content: center;
3701
+ grid-column: 1;
3702
+ color: var(--kit-color-accent-default);
3703
+ }
3704
+
3705
+ :where([data-kit-slot="select-item-text"], [data-kit-slot="combobox-item-text"]) {
3706
+ grid-column: 2;
3707
+ min-inline-size: 0;
3708
+ }
3709
+
3710
+ :where([data-kit-slot="combobox-empty"]) {
3711
+ padding: var(--kit-space-3) var(--kit-space-2);
3712
+ color: var(--kit-color-text-secondary);
3713
+ text-align: center;
3714
+ }
3715
+
3716
+ :where([data-kit-slot="combobox-empty"]:empty) {
3717
+ display: none;
3718
+ }
3719
+
3720
+ /* ------------------------------------------------- Dialog and AlertDialog */
3721
+
3722
+ :where([data-kit="dialog-backdrop"], [data-kit="drawer-backdrop"]) {
3723
+ position: fixed;
3724
+ inset: 0;
3725
+ z-index: var(--kit-z-modal);
3726
+ background-color: var(--kit-color-scrim);
3727
+ opacity: 1;
3728
+ transition: opacity var(--kit-duration-base) var(--kit-easing-standard);
3729
+ }
3730
+
3731
+ :where([data-kit="dialog-backdrop"], [data-kit="drawer-backdrop"])[data-starting-style],
3732
+ :where([data-kit="dialog-backdrop"], [data-kit="drawer-backdrop"])[data-ending-style] {
3733
+ opacity: 0;
3734
+ }
3735
+
3736
+ :where([data-kit="dialog-viewport"]) {
3737
+ position: fixed;
3738
+ inset: 0;
3739
+ z-index: var(--kit-z-modal);
3740
+ display: grid;
3741
+ place-items: center;
3742
+ box-sizing: border-box;
3743
+ padding: var(--kit-space-4);
3744
+ overflow-y: auto;
3745
+ }
3746
+
3747
+ :where([data-kit="dialog-viewport"]:has([data-size="full"])) {
3748
+ padding: 0;
3749
+ }
3750
+
3751
+ :where([data-kit="dialog"]) {
3752
+ --_width: calc(var(--kit-size-40) * 13);
3753
+
3754
+ position: relative;
3755
+ display: flex;
3756
+ flex-direction: column;
3757
+ box-sizing: border-box;
3758
+ inline-size: min(var(--_width), 100%);
3759
+ max-block-size: 100%;
3760
+ border: var(--kit-border-width-default) solid var(--kit-color-border-default);
3761
+ border-radius: var(--kit-radius-overlay);
3762
+ background-color: var(--kit-color-bg-overlay);
3763
+ color: var(--kit-color-text-primary);
3764
+ box-shadow: var(--kit-shadow-modal);
3765
+ font-family: var(--kit-font-family-sans);
3766
+ font-size: var(--kit-text-body-size);
3767
+ line-height: var(--kit-text-body-line-height);
3768
+ opacity: 1;
3769
+ transform: none;
3770
+ transition:
3771
+ opacity var(--kit-duration-base) var(--kit-easing-enter),
3772
+ transform var(--kit-duration-base) var(--kit-easing-enter);
3773
+ }
3774
+
3775
+ :where([data-kit="dialog"][data-size="sm"]) {
3776
+ --_width: calc(var(--kit-size-40) * 10);
3777
+ }
3778
+
3779
+ :where([data-kit="dialog"][data-size="lg"]) {
3780
+ --_width: calc(var(--kit-size-40) * 18);
3781
+ }
3782
+
3783
+ :where([data-kit="dialog"][data-size="xl"]) {
3784
+ --_width: calc(var(--kit-size-40) * 24);
3785
+ }
3786
+
3787
+ :where([data-kit="dialog"][data-size="full"]) {
3788
+ --_width: 100%;
3789
+
3790
+ block-size: 100%;
3791
+ border-radius: 0;
3792
+ }
3793
+
3794
+ :where([data-kit="dialog"][data-starting-style], [data-kit="dialog"][data-ending-style]) {
3795
+ opacity: 0;
3796
+ transform: translateY(var(--kit-space-2)) scale(0.98);
3797
+ }
3798
+
3799
+ :where([data-kit="dialog"][data-kind="alert"]) {
3800
+ gap: var(--kit-space-2);
3801
+ padding: var(--kit-space-6);
3802
+ }
3803
+
3804
+ :where([data-kit-slot="dialog-title"], [data-kit-slot="drawer-title"]) {
3805
+ margin: 0;
3806
+ font-size: var(--kit-text-h4-size);
3807
+ line-height: var(--kit-text-h4-line-height);
3808
+ font-weight: var(--kit-text-h4-weight);
3809
+ }
3810
+
3811
+ :where([data-kit-slot="dialog-description"], [data-kit-slot="drawer-description"]) {
3812
+ margin: 0;
3813
+ color: var(--kit-color-text-secondary);
3814
+ }
3815
+
3816
+ :where([data-kit-slot="dialog-header"], [data-kit-slot="drawer-header"]) {
3817
+ display: grid;
3818
+ gap: var(--kit-space-1);
3819
+ padding: var(--kit-space-5) var(--kit-space-6) var(--kit-space-2);
3820
+ padding-inline-end: var(--kit-space-12);
3821
+ }
3822
+
3823
+ :where([data-kit-slot="dialog-body"], [data-kit-slot="drawer-body"]) {
3824
+ flex: 1 1 auto;
3825
+ min-block-size: 0;
3826
+ padding: var(--kit-space-2) var(--kit-space-6);
3827
+ overflow-y: auto;
3828
+ }
3829
+
3830
+ :where([data-kit-slot="dialog-footer"], [data-kit-slot="drawer-footer"]) {
3831
+ display: flex;
3832
+ flex-wrap: wrap;
3833
+ align-items: center;
3834
+ justify-content: flex-end;
3835
+ gap: var(--kit-space-2);
3836
+ padding: var(--kit-space-4) var(--kit-space-6) var(--kit-space-5);
3837
+ }
3838
+
3839
+ :where([data-kit="dialog"][data-kind="alert"] > [data-kit-slot="dialog-footer"]) {
3840
+ padding: 0;
3841
+ margin-block-start: var(--kit-space-4);
3842
+ }
3843
+
3844
+ :where([data-kit-slot="dialog-close"], [data-kit-slot="drawer-close"]) {
3845
+ position: absolute;
3846
+ inset-block-start: var(--kit-space-3);
3847
+ inset-inline-end: var(--kit-space-3);
3848
+ }
3849
+
3850
+ /* ------------------------------------------------------------------ Drawer */
3851
+
3852
+ :where([data-kit="drawer-viewport"]) {
3853
+ position: fixed;
3854
+ inset: 0;
3855
+ z-index: var(--kit-z-modal);
3856
+ pointer-events: none;
3857
+ }
3858
+
3859
+ :where([data-kit="drawer"]) {
3860
+ --_size: calc(var(--kit-size-40) * 10);
3861
+
3862
+ position: fixed;
3863
+ display: flex;
3864
+ flex-direction: column;
3865
+ box-sizing: border-box;
3866
+ border: 0 solid var(--kit-color-border-default);
3867
+ background-color: var(--kit-color-bg-overlay);
3868
+ color: var(--kit-color-text-primary);
3869
+ box-shadow: var(--kit-shadow-modal);
3870
+ font-family: var(--kit-font-family-sans);
3871
+ font-size: var(--kit-text-body-size);
3872
+ line-height: var(--kit-text-body-line-height);
3873
+ pointer-events: auto;
3874
+ transform: translate(var(--drawer-swipe-movement-x, 0), var(--drawer-swipe-movement-y, 0));
3875
+ transition: transform var(--kit-duration-slow) var(--kit-easing-enter);
3876
+ }
3877
+
3878
+ :where([data-kit="drawer"][data-swiping]) {
3879
+ user-select: none;
3880
+ transition: none;
3881
+ }
3882
+
3883
+ :where([data-kit="drawer"][data-side="start"], [data-kit="drawer"][data-side="end"]) {
3884
+ inset-block: 0;
3885
+ inline-size: min(var(--_size), 100%);
3886
+ }
3887
+
3888
+ :where([data-kit="drawer"][data-side="start"]) {
3889
+ inset-inline-start: 0;
3890
+ border-inline-end-width: var(--kit-border-width-default);
3891
+ }
3892
+
3893
+ :where([data-kit="drawer"][data-side="end"]) {
3894
+ inset-inline-end: 0;
3895
+ border-inline-start-width: var(--kit-border-width-default);
3896
+ }
3897
+
3898
+ :where([data-kit="drawer"][data-side="top"], [data-kit="drawer"][data-side="bottom"]) {
3899
+ inset-inline: 0;
3900
+ max-block-size: 90%;
3901
+ }
3902
+
3903
+ :where([data-kit="drawer"][data-side="top"]) {
3904
+ inset-block-start: 0;
3905
+ border-block-end-width: var(--kit-border-width-default);
3906
+ border-end-start-radius: var(--kit-radius-overlay);
3907
+ border-end-end-radius: var(--kit-radius-overlay);
3908
+ }
3909
+
3910
+ :where([data-kit="drawer"][data-side="bottom"]) {
3911
+ inset-block-end: 0;
3912
+ border-block-start-width: var(--kit-border-width-default);
3913
+ border-start-start-radius: var(--kit-radius-overlay);
3914
+ border-start-end-radius: var(--kit-radius-overlay);
3915
+ }
3916
+
3917
+ /* Closed: parked just off the edge it slides from. */
3918
+ :where([data-kit="drawer"][data-side="start"][data-starting-style], [data-kit="drawer"][data-side="start"][data-ending-style]) {
3919
+ transform: translate(-100%, 0);
3920
+ }
3921
+
3922
+ :where([data-kit="drawer"][data-side="end"][data-starting-style], [data-kit="drawer"][data-side="end"][data-ending-style]) {
3923
+ transform: translate(100%, 0);
3924
+ }
3925
+
3926
+ :where([data-kit="drawer"][data-side="start"][data-starting-style]:dir(rtl), [data-kit="drawer"][data-side="start"][data-ending-style]:dir(rtl)) {
3927
+ transform: translate(100%, 0);
3928
+ }
3929
+
3930
+ :where([data-kit="drawer"][data-side="end"][data-starting-style]:dir(rtl), [data-kit="drawer"][data-side="end"][data-ending-style]:dir(rtl)) {
3931
+ transform: translate(-100%, 0);
3932
+ }
3933
+
3934
+ :where([data-kit="drawer"][data-side="top"][data-starting-style], [data-kit="drawer"][data-side="top"][data-ending-style]) {
3935
+ transform: translate(0, -100%);
3936
+ }
3937
+
3938
+ :where([data-kit="drawer"][data-side="bottom"][data-starting-style], [data-kit="drawer"][data-side="bottom"][data-ending-style]) {
3939
+ transform: translate(0, 100%);
3940
+ }
3941
+
3942
+ /* ------------------------------------------------------------------- Toast */
3943
+
3944
+ :where([data-kit="toast-viewport"]) {
3945
+ position: fixed;
3946
+ z-index: var(--kit-z-toast);
3947
+ display: flex;
3948
+ flex-direction: column;
3949
+ gap: var(--kit-space-2);
3950
+ box-sizing: border-box;
3951
+ inline-size: min(calc(var(--kit-size-40) * 10), 100%);
3952
+ padding: var(--kit-space-4);
3953
+ pointer-events: none;
3954
+ }
3955
+
3956
+ :where([data-kit="toast-viewport"][data-placement^="bottom"]) {
3957
+ inset-block-end: 0;
3958
+ }
3959
+
3960
+ :where([data-kit="toast-viewport"][data-placement^="top"]) {
3961
+ inset-block-start: 0;
3962
+ flex-direction: column-reverse;
3963
+ }
3964
+
3965
+ :where([data-kit="toast-viewport"][data-placement$="end"]) {
3966
+ inset-inline-end: 0;
3967
+ }
3968
+
3969
+ :where([data-kit="toast-viewport"][data-placement$="start"]) {
3970
+ inset-inline-start: 0;
3971
+ }
3972
+
3973
+ :where([data-kit="toast-viewport"][data-placement="top"], [data-kit="toast-viewport"][data-placement="bottom"]) {
3974
+ inset-inline-start: 50%;
3975
+ translate: -50% 0;
3976
+ }
3977
+
3978
+ :where([data-kit="toast-viewport"][data-placement="top"]:dir(rtl), [data-kit="toast-viewport"][data-placement="bottom"]:dir(rtl)) {
3979
+ translate: 50% 0;
3980
+ }
3981
+
3982
+ :where([data-kit="toast"]) {
3983
+ --_accent: var(--kit-color-text-secondary);
3984
+
3985
+ display: flex;
3986
+ align-items: flex-start;
3987
+ gap: var(--kit-space-3);
3988
+ box-sizing: border-box;
3989
+ padding: var(--kit-space-3) var(--kit-space-4);
3990
+ border: var(--kit-border-width-default) solid var(--kit-color-border-default);
3991
+ border-inline-start: var(--kit-border-width-emphasis) solid var(--_accent);
3992
+ border-radius: var(--kit-radius-panel);
3993
+ background-color: var(--kit-color-bg-overlay);
3994
+ color: var(--kit-color-text-primary);
3995
+ box-shadow: var(--kit-shadow-toast);
3996
+ font-family: var(--kit-font-family-sans);
3997
+ font-size: var(--kit-text-body-size);
3998
+ line-height: var(--kit-text-body-line-height);
3999
+ pointer-events: auto;
4000
+ opacity: 1;
4001
+ transform: translate(var(--toast-swipe-movement-x, 0), var(--toast-swipe-movement-y, 0));
4002
+ transition:
4003
+ opacity var(--kit-duration-base) var(--kit-easing-enter),
4004
+ transform var(--kit-duration-base) var(--kit-easing-enter);
4005
+ }
4006
+
4007
+ :where([data-kit="toast"][data-tone="accent"]) {
4008
+ --_accent: var(--kit-color-accent-default);
4009
+ }
4010
+
4011
+ :where([data-kit="toast"][data-tone="success"]) {
4012
+ --_accent: var(--kit-color-status-success-foreground);
4013
+ }
4014
+
4015
+ :where([data-kit="toast"][data-tone="warning"]) {
4016
+ --_accent: var(--kit-color-status-warning-foreground);
4017
+ }
4018
+
4019
+ :where([data-kit="toast"][data-tone="danger"]) {
4020
+ --_accent: var(--kit-color-status-danger-foreground);
4021
+ }
4022
+
4023
+ :where([data-kit="toast"][data-tone="info"]) {
4024
+ --_accent: var(--kit-color-status-info-foreground);
4025
+ }
4026
+
4027
+ :where([data-kit="toast"][data-starting-style], [data-kit="toast"][data-ending-style]) {
4028
+ opacity: 0;
4029
+ transform: translateY(var(--kit-space-2));
4030
+ }
4031
+
4032
+ :where([data-kit="toast"][data-swiping]) {
4033
+ transition: none;
4034
+ }
4035
+
4036
+ :where([data-kit-slot="toast-icon"]) {
4037
+ display: inline-flex;
4038
+ flex: none;
4039
+ align-items: center;
4040
+ block-size: var(--kit-text-body-line-height);
4041
+ color: var(--_accent);
4042
+ }
4043
+
4044
+ :where([data-kit-slot="toast-content"]) {
4045
+ display: grid;
4046
+ flex: 1 1 auto;
4047
+ gap: var(--kit-space-1);
4048
+ min-inline-size: 0;
4049
+ }
4050
+
4051
+ :where([data-kit-slot="toast-title"]) {
4052
+ margin: 0;
4053
+ font-size: inherit;
4054
+ font-weight: var(--kit-font-weight-semibold);
4055
+ }
4056
+
4057
+ :where([data-kit-slot="toast-description"]) {
4058
+ margin: 0;
4059
+ color: var(--kit-color-text-secondary);
4060
+ font-size: var(--kit-text-label-size);
4061
+ line-height: var(--kit-text-label-line-height);
4062
+ }
4063
+
4064
+ :where([data-kit-slot="toast-action"]) {
4065
+ justify-self: start;
4066
+ box-sizing: border-box;
4067
+ min-block-size: var(--kit-size-control-sm);
4068
+ margin-block-start: var(--kit-space-1);
4069
+ padding-inline: var(--kit-space-3);
4070
+ border: var(--kit-border-width-default) solid var(--kit-color-border-default);
4071
+ border-radius: var(--kit-radius-control);
4072
+ background-color: transparent;
4073
+ color: var(--kit-color-text-primary);
4074
+ font-family: inherit;
4075
+ font-size: var(--kit-text-label-size);
4076
+ font-weight: var(--kit-font-weight-medium);
4077
+ cursor: pointer;
4078
+ }
4079
+
4080
+ :where([data-kit-slot="toast-action"]):hover {
4081
+ background-color: color-mix(in srgb, var(--kit-color-text-primary) 8%, transparent);
4082
+ }
4083
+
4084
+ :where([data-kit-slot="toast-action"]):focus-visible {
4085
+ outline: var(--kit-border-width-focus) solid var(--kit-color-border-focus);
4086
+ outline-offset: var(--kit-space-0-5);
4087
+ }
4088
+
4089
+ :where([data-kit="toast"] > [data-kit="button"]) {
4090
+ flex: none;
4091
+ margin-block: calc(var(--kit-space-1) * -1);
4092
+ margin-inline-end: calc(var(--kit-space-2) * -1);
4093
+ }
4094
+
4095
+ /* =========================================================================
4096
+ * Date and time: Calendar, RangeCalendar, DateField, TimeField, DatePicker,
4097
+ * DateRangePicker (the `@x12i/ui/date` entry)
4098
+ *
4099
+ * React Aria puts its state on the elements as data attributes
4100
+ * (data-selected, data-today, data-outside-month, data-unavailable,
4101
+ * data-focus-visible, data-selection-start...), which these rules read.
4102
+ * ========================================================================= */
4103
+
4104
+ /* ----------------------------------------------------------------- Calendar */
4105
+
4106
+ :where([data-kit="calendar"]) {
4107
+ --_cell: var(--kit-size-control-md);
4108
+
4109
+ display: inline-flex;
4110
+ flex-direction: column;
4111
+ gap: var(--kit-space-2);
4112
+ box-sizing: border-box;
4113
+ padding: var(--kit-space-3);
4114
+ color: var(--kit-color-text-primary);
4115
+ font-family: var(--kit-font-family-sans);
4116
+ font-size: var(--kit-text-body-size);
4117
+ line-height: var(--kit-text-body-line-height);
4118
+ }
4119
+
4120
+ :where([data-kit-slot="calendar-header"]) {
4121
+ display: flex;
4122
+ align-items: center;
4123
+ justify-content: space-between;
4124
+ gap: var(--kit-space-2);
4125
+ }
4126
+
4127
+ :where([data-kit-slot="calendar-heading"]) {
4128
+ flex: 1 1 auto;
4129
+ margin: 0;
4130
+ font-size: var(--kit-text-label-size);
4131
+ line-height: var(--kit-text-label-line-height);
4132
+ font-weight: var(--kit-font-weight-semibold);
4133
+ text-align: center;
4134
+ }
4135
+
4136
+ /* The arrows point toward the previous and next month, so they mirror in RTL. */
4137
+ :where([data-kit-slot="calendar-nav"]:dir(rtl) svg) {
4138
+ transform: scaleX(-1);
4139
+ }
4140
+
4141
+ :where([data-kit-slot="calendar-grid"]) {
4142
+ border-collapse: collapse;
4143
+ border-spacing: 0;
4144
+ }
4145
+
4146
+ :where([data-kit-slot="calendar-weekday"]) {
4147
+ padding-block: var(--kit-space-1);
4148
+ color: var(--kit-color-text-secondary);
4149
+ font-size: var(--kit-text-caption-size);
4150
+ line-height: var(--kit-text-caption-line-height);
4151
+ font-weight: var(--kit-font-weight-medium);
4152
+ text-align: center;
4153
+ }
4154
+
4155
+ :where([data-kit-slot="calendar-grid"] td) {
4156
+ padding: 0;
4157
+ text-align: center;
4158
+ }
4159
+
4160
+ :where([data-kit-slot="calendar-cell"]) {
4161
+ display: flex;
4162
+ align-items: center;
4163
+ justify-content: center;
4164
+ box-sizing: border-box;
4165
+ inline-size: var(--_cell);
4166
+ block-size: var(--_cell);
4167
+ margin-inline: auto;
4168
+ border-radius: var(--kit-radius-control);
4169
+ color: var(--kit-color-text-primary);
4170
+ font-variant-numeric: tabular-nums;
4171
+ cursor: pointer;
4172
+ user-select: none;
4173
+ transition: background-color var(--kit-duration-instant) var(--kit-easing-standard);
4174
+ }
4175
+
4176
+ :where([data-kit-slot="calendar-cell"]):hover {
4177
+ background-color: color-mix(in srgb, var(--kit-color-text-primary) 8%, transparent);
4178
+ }
4179
+
4180
+ /* Today is marked by weight and an underline, not by color alone. */
4181
+ :where([data-kit-slot="calendar-cell"][data-today]) {
4182
+ font-weight: var(--kit-font-weight-semibold);
4183
+ text-decoration: underline;
4184
+ text-underline-offset: var(--kit-space-0-5);
4185
+ }
4186
+
4187
+ :where([data-kit-slot="calendar-cell"][data-selected]) {
4188
+ background-color: var(--kit-color-accent-default);
4189
+ color: var(--kit-color-accent-on-accent);
4190
+ }
4191
+
4192
+ :where([data-kit-slot="calendar-cell"][data-focus-visible]) {
4193
+ outline: var(--kit-border-width-focus) solid var(--kit-color-border-focus);
4194
+ outline-offset: var(--kit-space-0-5);
4195
+ }
4196
+
4197
+ :where([data-kit-slot="calendar-cell"][data-outside-month]) {
4198
+ visibility: hidden;
4199
+ }
4200
+
4201
+ :where([data-kit-slot="calendar-cell"][data-disabled]) {
4202
+ color: var(--kit-color-text-disabled);
4203
+ cursor: not-allowed;
4204
+ }
4205
+
4206
+ :where([data-kit-slot="calendar-cell"][data-disabled]):hover {
4207
+ background-color: transparent;
4208
+ }
4209
+
4210
+ /* Unavailable dates are struck through so the state is not color alone. */
4211
+ :where([data-kit-slot="calendar-cell"][data-unavailable]) {
4212
+ color: var(--kit-color-text-disabled);
4213
+ text-decoration: line-through;
4214
+ cursor: not-allowed;
4215
+ }
4216
+
4217
+ :where([data-kit-slot="calendar-cell"][data-unavailable]):hover {
4218
+ background-color: transparent;
4219
+ }
4220
+
4221
+ :where([data-kit-slot="calendar-cell"][data-invalid][data-selected]) {
4222
+ background-color: var(--kit-color-status-danger-foreground);
4223
+ color: var(--kit-color-text-inverse);
4224
+ }
4225
+
4226
+ /* A range: the days between the ends carry a tint, the ends are solid. */
4227
+ :where([data-kit="calendar"][data-range] [data-kit-slot="calendar-cell"][data-selected]) {
4228
+ border-radius: 0;
4229
+ background-color: var(--kit-color-selection);
4230
+ color: var(--kit-color-text-primary);
4231
+ }
4232
+
4233
+ :where([data-kit="calendar"][data-range] [data-kit-slot="calendar-cell"][data-selection-start]) {
4234
+ border-start-start-radius: var(--kit-radius-control);
4235
+ border-end-start-radius: var(--kit-radius-control);
4236
+ background-color: var(--kit-color-accent-default);
4237
+ color: var(--kit-color-accent-on-accent);
4238
+ }
4239
+
4240
+ :where([data-kit="calendar"][data-range] [data-kit-slot="calendar-cell"][data-selection-end]) {
4241
+ border-start-end-radius: var(--kit-radius-control);
4242
+ border-end-end-radius: var(--kit-radius-control);
4243
+ background-color: var(--kit-color-accent-default);
4244
+ color: var(--kit-color-accent-on-accent);
4245
+ }
4246
+
4247
+ :where([data-kit="calendar"][data-range] [data-kit-slot="calendar-cell"][data-selected][data-outside-month]) {
4248
+ visibility: hidden;
4249
+ }
4250
+
4251
+ @media (prefers-reduced-motion: reduce) {
4252
+ :where([data-kit-slot="calendar-cell"]) {
4253
+ transition: none;
4254
+ }
4255
+ }
4256
+
4257
+ @media (forced-colors: active) {
4258
+ :where([data-kit-slot="calendar-cell"][data-selected]) {
4259
+ background-color: Highlight;
4260
+ color: HighlightText;
4261
+ }
4262
+
4263
+ :where([data-kit-slot="calendar-cell"][data-unavailable]) {
4264
+ color: GrayText;
4265
+ }
4266
+ }
4267
+
4268
+ /* -------------------------------------------------- Date and time segments */
4269
+
4270
+ :where([data-kit-slot="date-segments"]) {
4271
+ display: flex;
4272
+ flex: 1 1 auto;
4273
+ align-items: center;
4274
+ box-sizing: border-box;
4275
+ min-inline-size: 0;
4276
+ padding-inline: var(--_pad, var(--kit-space-control-inline-md));
4277
+ white-space: nowrap;
4278
+ }
4279
+
4280
+ :where([data-kit-slot="date-segment"]) {
4281
+ box-sizing: content-box;
4282
+ padding-inline: var(--kit-space-0-5);
4283
+ border-radius: var(--kit-radius-control);
4284
+ color: var(--kit-color-text-primary);
4285
+ font-variant-numeric: tabular-nums;
4286
+ text-align: end;
4287
+ /* The focused segment fills with the accent; the transparent outline still shows in forced colors. */
4288
+ outline: var(--kit-border-width-focus) solid transparent;
4289
+ }
4290
+
4291
+ :where([data-kit-slot="date-segment"][data-type="literal"]) {
4292
+ padding-inline: 0;
4293
+ color: var(--kit-color-text-secondary);
4294
+ }
4295
+
4296
+ /* An empty segment shows its name as a placeholder. */
4297
+ :where([data-kit-slot="date-segment"][data-placeholder]) {
4298
+ color: var(--kit-color-text-secondary);
4299
+ }
4300
+
4301
+ :where([data-kit-slot="date-segment"][data-focused]) {
4302
+ background-color: var(--kit-color-accent-default);
4303
+ color: var(--kit-color-accent-on-accent);
4304
+ }
4305
+
4306
+ :where([data-kit-slot="date-segment"][data-disabled]) {
4307
+ color: var(--kit-color-text-disabled);
4308
+ }
4309
+
4310
+ :where([data-kit-slot="date-range-separator"]) {
4311
+ flex: none;
4312
+ color: var(--kit-color-text-secondary);
4313
+ user-select: none;
4314
+ }
4315
+
4316
+ /* The calendar button sits inside the field, at its end. */
4317
+ :where([data-kit="input-group"] > [data-kit="button"][data-icon-only]) {
4318
+ flex: none;
4319
+ }
4320
+
4321
+ @media (forced-colors: active) {
4322
+ :where([data-kit-slot="date-segment"][data-focused]) {
4323
+ background-color: Highlight;
4324
+ color: HighlightText;
4325
+ }
4326
+ }
4327
+
4328
+ /* ------------------------------------------------------------ Date popover */
4329
+
4330
+ :where([data-kit="date-popover"]) {
4331
+ box-sizing: border-box;
4332
+ border: var(--kit-border-width-default) solid var(--kit-color-border-default);
4333
+ border-radius: var(--kit-radius-overlay);
4334
+ background-color: var(--kit-color-bg-overlay);
4335
+ color: var(--kit-color-text-primary);
4336
+ box-shadow: var(--kit-shadow-overlay);
4337
+ }
4338
+
4339
+ :where([data-kit="date-popover"][data-entering]) {
4340
+ animation: kit-date-popover-in var(--kit-duration-fast) var(--kit-easing-enter);
4341
+ }
4342
+
4343
+ :where([data-kit="date-popover"][data-exiting]) {
4344
+ animation: kit-date-popover-in var(--kit-duration-fast) var(--kit-easing-exit) reverse;
4345
+ }
4346
+
4347
+ :where([data-kit-slot="date-dialog"]) {
4348
+ display: block;
4349
+ }
4350
+
4351
+ @keyframes kit-date-popover-in {
4352
+ from {
4353
+ opacity: 0;
4354
+ transform: translateY(calc(var(--kit-space-1) * -1));
4355
+ }
4356
+
4357
+ to {
4358
+ opacity: 1;
4359
+ transform: none;
4360
+ }
4361
+ }
4362
+
4363
+ @media (prefers-reduced-motion: reduce) {
4364
+ :where([data-kit="date-popover"][data-entering], [data-kit="date-popover"][data-exiting]) {
4365
+ animation: none;
4366
+ }
4367
+ }
4368
+
4369
+ @media (forced-colors: active) {
4370
+ :where([data-kit="date-popover"]) {
4371
+ border-color: CanvasText;
4372
+ }
4373
+ }