@blibliki/ui 0.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/styles.css ADDED
@@ -0,0 +1,2041 @@
1
+ @import "./tokens.css";
2
+
3
+ :root {
4
+ --ui-background: var(--ui-color-surface-0);
5
+ --ui-foreground: var(--ui-color-text-primary);
6
+ --ui-input: var(--ui-color-surface-1);
7
+ --ui-border: var(--ui-color-border-subtle);
8
+ }
9
+
10
+ :where(.dark, [data-theme="dark"]) {
11
+ --ui-background: var(--ui-color-surface-0);
12
+ --ui-foreground: var(--ui-color-text-primary);
13
+ --ui-input: var(--ui-color-surface-1);
14
+ --ui-border: var(--ui-color-border-subtle);
15
+ }
16
+
17
+ @layer components {
18
+ :where(.ui-visually-hidden) {
19
+ position: absolute;
20
+ width: 1px;
21
+ height: 1px;
22
+ padding: 0;
23
+ margin: -1px;
24
+ overflow: hidden;
25
+ clip: rect(0, 0, 0, 0);
26
+ white-space: nowrap;
27
+ border: 0;
28
+ }
29
+
30
+ :where(.ui-button) {
31
+ --ui-button-color: var(--ui-color-primary-500);
32
+ --ui-button-color-hover: var(--ui-color-primary-600);
33
+ --ui-button-color-contrast: var(--ui-color-primary-contrast);
34
+ --ui-button-focus: color-mix(
35
+ in oklab,
36
+ var(--ui-button-color),
37
+ transparent 65%
38
+ );
39
+
40
+ display: inline-flex;
41
+ align-items: center;
42
+ justify-content: center;
43
+ gap: 0.5rem;
44
+ border-radius: var(--ui-radius-md);
45
+ border: 1px solid transparent;
46
+ font-size: 0.875rem;
47
+ font-weight: 500;
48
+ line-height: 1;
49
+ cursor: pointer;
50
+ user-select: none;
51
+ transition:
52
+ background-color 120ms ease,
53
+ color 120ms ease,
54
+ border-color 120ms ease,
55
+ transform 120ms ease;
56
+ }
57
+
58
+ /* Allow Tailwind alignment utilities to override default button centering. */
59
+ .ui-button.justify-start {
60
+ justify-content: flex-start;
61
+ }
62
+
63
+ .ui-button.justify-end {
64
+ justify-content: flex-end;
65
+ }
66
+
67
+ .ui-button.justify-between {
68
+ justify-content: space-between;
69
+ }
70
+
71
+ .ui-button.justify-around {
72
+ justify-content: space-around;
73
+ }
74
+
75
+ .ui-button.justify-evenly {
76
+ justify-content: space-evenly;
77
+ }
78
+
79
+ :where(.ui-button):disabled {
80
+ pointer-events: none;
81
+ opacity: 0.5;
82
+ }
83
+
84
+ :where(.ui-button):focus-visible {
85
+ outline: 2px solid transparent;
86
+ box-shadow: 0 0 0 2px var(--ui-button-focus);
87
+ }
88
+
89
+ :where(.ui-button--color-primary) {
90
+ --ui-button-color: var(--ui-color-primary-500);
91
+ --ui-button-color-hover: var(--ui-color-primary-600);
92
+ --ui-button-color-contrast: var(--ui-color-primary-contrast);
93
+ }
94
+
95
+ :where(.ui-button--color-neutral) {
96
+ --ui-button-color: var(--ui-color-surface-raised);
97
+ --ui-button-color-hover: var(--ui-color-surface-raised-hover);
98
+ --ui-button-color-contrast: var(--ui-color-text-primary);
99
+ --ui-button-focus: color-mix(
100
+ in oklab,
101
+ var(--ui-color-text-primary),
102
+ transparent 78%
103
+ );
104
+ }
105
+
106
+ :where(.ui-button--color-secondary) {
107
+ --ui-button-color: var(--ui-color-secondary-500);
108
+ --ui-button-color-hover: var(--ui-color-secondary-600);
109
+ --ui-button-color-contrast: var(--ui-color-secondary-contrast);
110
+ }
111
+
112
+ :where(.ui-button--color-error) {
113
+ --ui-button-color: var(--ui-color-error-500);
114
+ --ui-button-color-hover: var(--ui-color-error-600);
115
+ --ui-button-color-contrast: var(--ui-color-error-contrast);
116
+ }
117
+
118
+ :where(.ui-button--color-warning) {
119
+ --ui-button-color: var(--ui-color-warning-500);
120
+ --ui-button-color-hover: var(--ui-color-warning-600);
121
+ --ui-button-color-contrast: var(--ui-color-warning-contrast);
122
+ }
123
+
124
+ :where(.ui-button--color-info) {
125
+ --ui-button-color: var(--ui-color-info-500);
126
+ --ui-button-color-hover: var(--ui-color-info-600);
127
+ --ui-button-color-contrast: var(--ui-color-info-contrast);
128
+ }
129
+
130
+ :where(.ui-button--color-success) {
131
+ --ui-button-color: var(--ui-color-success-500);
132
+ --ui-button-color-hover: var(--ui-color-success-600);
133
+ --ui-button-color-contrast: var(--ui-color-success-contrast);
134
+ }
135
+
136
+ :where(.ui-button--variant-contained) {
137
+ background: var(--ui-button-color);
138
+ color: var(--ui-button-color-contrast);
139
+ }
140
+
141
+ :where(.ui-button--variant-contained):hover:not(:disabled) {
142
+ background: var(--ui-button-color-hover);
143
+ }
144
+
145
+ :where(.ui-button--variant-outlined) {
146
+ background: transparent;
147
+ color: var(--ui-button-color);
148
+ border-color: var(--ui-button-color);
149
+ }
150
+
151
+ :where(.ui-button--variant-outlined):hover:not(:disabled) {
152
+ background: color-mix(in oklab, var(--ui-button-color), transparent 90%);
153
+ }
154
+
155
+ :where(.ui-button--variant-text) {
156
+ background: transparent;
157
+ color: var(--ui-button-color);
158
+ border-color: transparent;
159
+ }
160
+
161
+ :where(.ui-button--variant-text):hover:not(:disabled) {
162
+ background: color-mix(in oklab, var(--ui-button-color), transparent 92%);
163
+ }
164
+
165
+ :where(.ui-button--color-neutral.ui-button--variant-contained) {
166
+ background: var(--ui-color-surface-raised);
167
+ color: var(--ui-color-text-primary);
168
+ border-color: color-mix(
169
+ in oklab,
170
+ var(--ui-color-surface-raised-hover),
171
+ var(--ui-color-text-primary) 12%
172
+ );
173
+ }
174
+
175
+ :where(.ui-button--color-neutral.ui-button--variant-contained):hover:not(
176
+ :disabled
177
+ ) {
178
+ background: var(--ui-color-surface-raised-hover);
179
+ border-color: color-mix(
180
+ in oklab,
181
+ var(--ui-color-surface-raised-hover),
182
+ var(--ui-color-text-primary) 20%
183
+ );
184
+ }
185
+
186
+ :where(.ui-button--color-neutral.ui-button--variant-outlined) {
187
+ color: var(--ui-color-text-primary);
188
+ border-color: color-mix(
189
+ in oklab,
190
+ var(--ui-color-surface-raised-hover),
191
+ var(--ui-color-text-primary) 18%
192
+ );
193
+ }
194
+
195
+ :where(.ui-button--color-neutral.ui-button--variant-outlined):hover:not(
196
+ :disabled
197
+ ) {
198
+ background: color-mix(
199
+ in oklab,
200
+ var(--ui-color-surface-raised-hover),
201
+ var(--ui-color-text-primary) 8%
202
+ );
203
+ border-color: color-mix(
204
+ in oklab,
205
+ var(--ui-color-surface-raised-hover),
206
+ var(--ui-color-text-primary) 30%
207
+ );
208
+ }
209
+
210
+ :where(.ui-button--color-neutral.ui-button--variant-text) {
211
+ color: var(--ui-color-text-primary);
212
+ }
213
+
214
+ :where(.ui-button--color-neutral.ui-button--variant-text):hover:not(
215
+ :disabled
216
+ ) {
217
+ background: color-mix(
218
+ in oklab,
219
+ var(--ui-color-surface-raised-hover),
220
+ transparent 20%
221
+ );
222
+ }
223
+
224
+ :where(.ui-button--size-md) {
225
+ height: 2.25rem;
226
+ padding: 0.5rem 1rem;
227
+ }
228
+
229
+ :where(.ui-button--size-sm) {
230
+ height: 2rem;
231
+ padding: 0.375rem 0.75rem;
232
+ font-size: 0.75rem;
233
+ }
234
+
235
+ :where(.ui-button--size-lg) {
236
+ height: 2.5rem;
237
+ padding: 0.5rem 1.5rem;
238
+ }
239
+
240
+ :where(.ui-button--size-icon) {
241
+ width: 2.25rem;
242
+ height: 2.25rem;
243
+ padding: 0;
244
+ }
245
+
246
+ :where(.ui-input) {
247
+ box-sizing: border-box;
248
+ width: 100%;
249
+ min-width: 0;
250
+ border: 1px solid var(--ui-color-border-subtle);
251
+ border-radius: var(--ui-radius-md);
252
+ background: var(--ui-color-surface-raised);
253
+ color: var(--ui-color-text-primary);
254
+ font-size: 0.875rem;
255
+ line-height: 1.25rem;
256
+ padding: 0 0.75rem;
257
+ transition:
258
+ background-color 120ms ease,
259
+ border-color 120ms ease,
260
+ color 120ms ease,
261
+ box-shadow 120ms ease;
262
+ }
263
+
264
+ :where(.ui-input)::placeholder {
265
+ color: var(--ui-color-text-muted);
266
+ }
267
+
268
+ :where(.ui-input):hover:not(:disabled) {
269
+ border-color: color-mix(
270
+ in oklab,
271
+ var(--ui-color-border-subtle),
272
+ var(--ui-color-text-primary) 14%
273
+ );
274
+ }
275
+
276
+ :where(.ui-input):focus-visible {
277
+ outline: 2px solid transparent;
278
+ border-color: color-mix(
279
+ in oklab,
280
+ var(--ui-color-border-subtle),
281
+ var(--ui-color-primary-500) 36%
282
+ );
283
+ box-shadow: 0 0 0 2px
284
+ color-mix(in oklab, var(--ui-color-primary-500), transparent 76%);
285
+ }
286
+
287
+ :where(.ui-input):disabled {
288
+ pointer-events: none;
289
+ opacity: 0.5;
290
+ }
291
+
292
+ :where(.ui-input[aria-invalid="true"]) {
293
+ border-color: var(--ui-color-error-500);
294
+ box-shadow: 0 0 0 2px
295
+ color-mix(in oklab, var(--ui-color-error-500), transparent 78%);
296
+ }
297
+
298
+ :where(.ui-input--size-md) {
299
+ height: 2.25rem;
300
+ }
301
+
302
+ :where(.ui-input--size-sm) {
303
+ height: 1.75rem;
304
+ padding: 0 0.625rem;
305
+ font-size: 0.8125rem;
306
+ }
307
+
308
+ :where(.ui-textarea) {
309
+ box-sizing: border-box;
310
+ width: 100%;
311
+ min-width: 0;
312
+ min-height: 4.5rem;
313
+ border: 1px solid var(--ui-color-border-subtle);
314
+ border-radius: var(--ui-radius-md);
315
+ background: var(--ui-color-surface-raised);
316
+ color: var(--ui-color-text-primary);
317
+ font-size: 0.875rem;
318
+ line-height: 1.4;
319
+ padding: 0.5rem 0.75rem;
320
+ font-family: inherit;
321
+ transition:
322
+ background-color 120ms ease,
323
+ border-color 120ms ease,
324
+ color 120ms ease,
325
+ box-shadow 120ms ease;
326
+ }
327
+
328
+ :where(.ui-textarea)::placeholder {
329
+ color: var(--ui-color-text-muted);
330
+ }
331
+
332
+ :where(.ui-textarea):hover:not(:disabled) {
333
+ border-color: color-mix(
334
+ in oklab,
335
+ var(--ui-color-border-subtle),
336
+ var(--ui-color-text-primary) 14%
337
+ );
338
+ }
339
+
340
+ :where(.ui-textarea):focus-visible {
341
+ outline: 2px solid transparent;
342
+ border-color: color-mix(
343
+ in oklab,
344
+ var(--ui-color-border-subtle),
345
+ var(--ui-color-primary-500) 36%
346
+ );
347
+ box-shadow: 0 0 0 2px
348
+ color-mix(in oklab, var(--ui-color-primary-500), transparent 76%);
349
+ }
350
+
351
+ :where(.ui-textarea):disabled {
352
+ pointer-events: none;
353
+ opacity: 0.5;
354
+ }
355
+
356
+ :where(.ui-textarea[aria-invalid="true"]) {
357
+ border-color: var(--ui-color-error-500);
358
+ box-shadow: 0 0 0 2px
359
+ color-mix(in oklab, var(--ui-color-error-500), transparent 78%);
360
+ }
361
+
362
+ :where(.ui-textarea--size-sm) {
363
+ min-height: 3.5rem;
364
+ padding: 0.375rem 0.625rem;
365
+ font-size: 0.8125rem;
366
+ }
367
+
368
+ :where(.ui-textarea--size-md) {
369
+ min-height: 4.5rem;
370
+ }
371
+
372
+ :where(.ui-textarea--resize-none) {
373
+ resize: none;
374
+ }
375
+
376
+ :where(.ui-textarea--resize-vertical) {
377
+ resize: vertical;
378
+ }
379
+
380
+ :where(.ui-textarea--resize-both) {
381
+ resize: both;
382
+ }
383
+
384
+ :where(.ui-text) {
385
+ margin: 0;
386
+ color: var(--ui-color-text-primary);
387
+ line-height: 1.35;
388
+ }
389
+
390
+ :where(.ui-text--tone-primary) {
391
+ color: var(--ui-color-text-primary);
392
+ }
393
+
394
+ :where(.ui-text--tone-secondary) {
395
+ color: var(--ui-color-text-secondary);
396
+ }
397
+
398
+ :where(.ui-text--tone-muted) {
399
+ color: var(--ui-color-text-muted);
400
+ }
401
+
402
+ :where(.ui-text--tone-success) {
403
+ color: var(--ui-color-success-600);
404
+ }
405
+
406
+ :where(.ui-text--tone-warning) {
407
+ color: var(--ui-color-warning-600);
408
+ }
409
+
410
+ :where(.ui-text--tone-error) {
411
+ color: var(--ui-color-error-600);
412
+ }
413
+
414
+ :where(.ui-text--tone-info) {
415
+ color: var(--ui-color-info-600);
416
+ }
417
+
418
+ :where(.ui-text--size-xs) {
419
+ font-size: 0.75rem;
420
+ line-height: 1.25;
421
+ }
422
+
423
+ :where(.ui-text--size-sm) {
424
+ font-size: 0.875rem;
425
+ line-height: 1.35;
426
+ }
427
+
428
+ :where(.ui-text--size-md) {
429
+ font-size: 1rem;
430
+ line-height: 1.45;
431
+ }
432
+
433
+ :where(.ui-text--size-lg) {
434
+ font-size: 1.125rem;
435
+ line-height: 1.45;
436
+ }
437
+
438
+ :where(.ui-text--weight-regular) {
439
+ font-weight: 400;
440
+ }
441
+
442
+ :where(.ui-text--weight-medium) {
443
+ font-weight: 500;
444
+ }
445
+
446
+ :where(.ui-text--weight-semibold) {
447
+ font-weight: 600;
448
+ }
449
+
450
+ :where(.ui-badge) {
451
+ --ui-badge-accent: var(--ui-color-surface-2);
452
+ --ui-badge-contrast: var(--ui-color-text-primary);
453
+
454
+ display: inline-flex;
455
+ align-items: center;
456
+ justify-content: center;
457
+ gap: 0.25rem;
458
+ border: 1px solid transparent;
459
+ border-radius: 9999px;
460
+ white-space: nowrap;
461
+ line-height: 1;
462
+ font-weight: 600;
463
+ user-select: none;
464
+ }
465
+
466
+ :where(.ui-badge--size-sm) {
467
+ min-height: 1.125rem;
468
+ padding: 0.125rem 0.375rem;
469
+ font-size: 0.6875rem;
470
+ }
471
+
472
+ :where(.ui-badge--size-md) {
473
+ min-height: 1.375rem;
474
+ padding: 0.25rem 0.5rem;
475
+ font-size: 0.75rem;
476
+ }
477
+
478
+ :where(.ui-badge--tone-neutral) {
479
+ --ui-badge-accent: var(--ui-color-surface-raised-hover);
480
+ --ui-badge-contrast: var(--ui-color-text-primary);
481
+ }
482
+
483
+ :where(.ui-badge--tone-primary) {
484
+ --ui-badge-accent: var(--ui-color-primary-500);
485
+ --ui-badge-contrast: var(--ui-color-primary-contrast);
486
+ }
487
+
488
+ :where(.ui-badge--tone-secondary) {
489
+ --ui-badge-accent: var(--ui-color-secondary-500);
490
+ --ui-badge-contrast: var(--ui-color-secondary-contrast);
491
+ }
492
+
493
+ :where(.ui-badge--tone-success) {
494
+ --ui-badge-accent: var(--ui-color-success-500);
495
+ --ui-badge-contrast: var(--ui-color-success-contrast);
496
+ }
497
+
498
+ :where(.ui-badge--tone-warning) {
499
+ --ui-badge-accent: var(--ui-color-warning-500);
500
+ --ui-badge-contrast: var(--ui-color-warning-contrast);
501
+ }
502
+
503
+ :where(.ui-badge--tone-error) {
504
+ --ui-badge-accent: var(--ui-color-error-500);
505
+ --ui-badge-contrast: var(--ui-color-error-contrast);
506
+ }
507
+
508
+ :where(.ui-badge--tone-info) {
509
+ --ui-badge-accent: var(--ui-color-info-500);
510
+ --ui-badge-contrast: var(--ui-color-info-contrast);
511
+ }
512
+
513
+ :where(.ui-badge--variant-soft) {
514
+ color: color-mix(
515
+ in oklab,
516
+ var(--ui-badge-accent),
517
+ var(--ui-color-text-primary) 45%
518
+ );
519
+ background: color-mix(
520
+ in oklab,
521
+ var(--ui-badge-accent),
522
+ var(--ui-color-surface-raised) 86%
523
+ );
524
+ border-color: color-mix(
525
+ in oklab,
526
+ var(--ui-badge-accent),
527
+ var(--ui-color-border-subtle) 72%
528
+ );
529
+ }
530
+
531
+ :where(.ui-badge--variant-solid) {
532
+ color: var(--ui-badge-contrast);
533
+ background: var(--ui-badge-accent);
534
+ }
535
+
536
+ :where(.ui-badge--variant-outline) {
537
+ color: var(--ui-badge-accent);
538
+ background: transparent;
539
+ border-color: color-mix(
540
+ in oklab,
541
+ var(--ui-badge-accent),
542
+ var(--ui-color-border-subtle) 50%
543
+ );
544
+ }
545
+
546
+ :where(.ui-label) {
547
+ display: inline-flex;
548
+ align-items: center;
549
+ gap: 0.5rem;
550
+ font-size: 0.875rem;
551
+ line-height: 1;
552
+ font-weight: 500;
553
+ color: var(--ui-color-text-primary);
554
+ user-select: none;
555
+ }
556
+
557
+ :where(.ui-label[data-disabled="true"]) {
558
+ pointer-events: none;
559
+ opacity: 0.5;
560
+ }
561
+
562
+ :where(.ui-card) {
563
+ display: flex;
564
+ flex-direction: column;
565
+ gap: 1.5rem;
566
+ border: 1px solid var(--ui-color-border-subtle);
567
+ border-radius: var(--ui-radius-lg);
568
+ background: var(--ui-color-surface-raised);
569
+ color: var(--ui-color-text-primary);
570
+ padding: 1.5rem 0;
571
+ box-shadow: 0 1px 2px
572
+ color-mix(in oklab, var(--ui-color-text-primary), transparent 90%);
573
+ }
574
+
575
+ :where(.ui-card-header) {
576
+ display: grid;
577
+ grid-template-rows: auto auto;
578
+ align-items: start;
579
+ gap: 0.375rem;
580
+ padding: 0 1.5rem;
581
+ }
582
+
583
+ :where(.ui-card-header):has(.ui-card-action) {
584
+ grid-template-columns: 1fr auto;
585
+ }
586
+
587
+ :where(.ui-card-title) {
588
+ line-height: 1.2;
589
+ font-weight: 600;
590
+ }
591
+
592
+ :where(.ui-card-description) {
593
+ font-size: 0.875rem;
594
+ line-height: 1.35;
595
+ color: var(--ui-color-text-secondary);
596
+ }
597
+
598
+ :where(.ui-card-action) {
599
+ grid-column: 2;
600
+ grid-row: 1 / span 2;
601
+ align-self: start;
602
+ justify-self: end;
603
+ }
604
+
605
+ :where(.ui-card-content) {
606
+ padding: 0 1.5rem;
607
+ }
608
+
609
+ :where(.ui-card-footer) {
610
+ display: flex;
611
+ align-items: center;
612
+ padding: 0 1.5rem;
613
+ }
614
+
615
+ :where(.ui-icon-button) {
616
+ border-radius: 9999px;
617
+ line-height: 0;
618
+ }
619
+
620
+ :where(.ui-icon-button) svg {
621
+ width: 1em;
622
+ height: 1em;
623
+ flex-shrink: 0;
624
+ pointer-events: none;
625
+ }
626
+
627
+ :where(.ui-icon-button--size-xs) {
628
+ width: 1rem;
629
+ height: 1rem;
630
+ font-size: 0.625rem;
631
+ }
632
+
633
+ :where(.ui-icon-button--size-sm) {
634
+ width: 1.25rem;
635
+ height: 1.25rem;
636
+ font-size: 0.75rem;
637
+ }
638
+
639
+ :where(.ui-icon-button--size-md) {
640
+ width: 2.25rem;
641
+ height: 2.25rem;
642
+ font-size: 1rem;
643
+ }
644
+
645
+ :where(.ui-surface) {
646
+ background: var(--ui-color-surface-raised);
647
+ color: var(--ui-color-text-primary);
648
+ border: 1px solid transparent;
649
+ border-radius: var(--ui-radius-md);
650
+ }
651
+
652
+ :where(.ui-surface--tone-canvas) {
653
+ background: var(--ui-color-surface-0);
654
+ }
655
+
656
+ :where(.ui-surface--tone-panel) {
657
+ background: var(--ui-color-surface-1);
658
+ }
659
+
660
+ :where(.ui-surface--tone-raised) {
661
+ background: var(--ui-color-surface-raised);
662
+ }
663
+
664
+ :where(.ui-surface--tone-subtle) {
665
+ background: var(--ui-color-surface-2);
666
+ }
667
+
668
+ :where(.ui-surface--intent-success) {
669
+ background: color-mix(
670
+ in oklab,
671
+ var(--ui-color-success-500),
672
+ var(--ui-color-surface-raised) 90%
673
+ );
674
+ border-color: color-mix(
675
+ in oklab,
676
+ var(--ui-color-success-500),
677
+ transparent 72%
678
+ );
679
+ }
680
+
681
+ :where(.ui-surface--intent-warning) {
682
+ background: color-mix(
683
+ in oklab,
684
+ var(--ui-color-warning-500),
685
+ var(--ui-color-surface-raised) 90%
686
+ );
687
+ border-color: color-mix(
688
+ in oklab,
689
+ var(--ui-color-warning-500),
690
+ transparent 72%
691
+ );
692
+ }
693
+
694
+ :where(.ui-surface--intent-error) {
695
+ background: color-mix(
696
+ in oklab,
697
+ var(--ui-color-error-500),
698
+ var(--ui-color-surface-raised) 90%
699
+ );
700
+ border-color: color-mix(
701
+ in oklab,
702
+ var(--ui-color-error-500),
703
+ transparent 72%
704
+ );
705
+ }
706
+
707
+ :where(.ui-surface--intent-info) {
708
+ background: color-mix(
709
+ in oklab,
710
+ var(--ui-color-info-500),
711
+ var(--ui-color-surface-raised) 90%
712
+ );
713
+ border-color: color-mix(
714
+ in oklab,
715
+ var(--ui-color-info-500),
716
+ transparent 72%
717
+ );
718
+ }
719
+
720
+ :where(.ui-surface--border-subtle) {
721
+ border-color: var(--ui-color-border-subtle);
722
+ }
723
+
724
+ :where(.ui-surface--radius-none) {
725
+ border-radius: 0;
726
+ }
727
+
728
+ :where(.ui-surface--radius-sm) {
729
+ border-radius: var(--ui-radius-sm);
730
+ }
731
+
732
+ :where(.ui-surface--radius-md) {
733
+ border-radius: var(--ui-radius-md);
734
+ }
735
+
736
+ :where(.ui-surface--radius-lg) {
737
+ border-radius: var(--ui-radius-lg);
738
+ }
739
+
740
+ :where(.ui-surface--shadow-sm) {
741
+ box-shadow: 0 1px 2px
742
+ color-mix(in oklab, var(--ui-color-text-primary), transparent 88%);
743
+ }
744
+
745
+ :where(.ui-surface--shadow-md) {
746
+ box-shadow: 0 4px 10px
747
+ color-mix(in oklab, var(--ui-color-text-primary), transparent 86%);
748
+ }
749
+
750
+ :where(.ui-surface--shadow-lg) {
751
+ box-shadow: 0 8px 20px
752
+ color-mix(in oklab, var(--ui-color-text-primary), transparent 84%);
753
+ }
754
+
755
+ :where(.ui-surface--shadow-xl) {
756
+ box-shadow: 0 12px 28px
757
+ color-mix(in oklab, var(--ui-color-text-primary), transparent 82%);
758
+ }
759
+
760
+ :where(.ui-stack) {
761
+ display: flex;
762
+ min-width: 0;
763
+ }
764
+
765
+ :where(.ui-stack--row) {
766
+ flex-direction: row;
767
+ }
768
+
769
+ :where(.ui-stack--column) {
770
+ flex-direction: column;
771
+ }
772
+
773
+ :where(.ui-stack--align-start) {
774
+ align-items: flex-start;
775
+ }
776
+
777
+ :where(.ui-stack--align-center) {
778
+ align-items: center;
779
+ }
780
+
781
+ :where(.ui-stack--align-end) {
782
+ align-items: flex-end;
783
+ }
784
+
785
+ :where(.ui-stack--align-stretch) {
786
+ align-items: stretch;
787
+ }
788
+
789
+ :where(.ui-stack--align-baseline) {
790
+ align-items: baseline;
791
+ }
792
+
793
+ :where(.ui-stack--justify-start) {
794
+ justify-content: flex-start;
795
+ }
796
+
797
+ :where(.ui-stack--justify-center) {
798
+ justify-content: center;
799
+ }
800
+
801
+ :where(.ui-stack--justify-end) {
802
+ justify-content: flex-end;
803
+ }
804
+
805
+ :where(.ui-stack--justify-between) {
806
+ justify-content: space-between;
807
+ }
808
+
809
+ :where(.ui-stack--justify-around) {
810
+ justify-content: space-around;
811
+ }
812
+
813
+ :where(.ui-stack--justify-evenly) {
814
+ justify-content: space-evenly;
815
+ }
816
+
817
+ :where(.ui-stack--gap-0) {
818
+ gap: 0;
819
+ }
820
+
821
+ :where(.ui-stack--gap-1) {
822
+ gap: 0.25rem;
823
+ }
824
+
825
+ :where(.ui-stack--gap-2) {
826
+ gap: 0.5rem;
827
+ }
828
+
829
+ :where(.ui-stack--gap-3) {
830
+ gap: 0.75rem;
831
+ }
832
+
833
+ :where(.ui-stack--gap-4) {
834
+ gap: 1rem;
835
+ }
836
+
837
+ :where(.ui-stack--gap-5) {
838
+ gap: 1.25rem;
839
+ }
840
+
841
+ :where(.ui-stack--gap-6) {
842
+ gap: 1.5rem;
843
+ }
844
+
845
+ :where(.ui-stack--wrap) {
846
+ flex-wrap: wrap;
847
+ }
848
+
849
+ :where(.ui-divider) {
850
+ flex-shrink: 0;
851
+ background: var(--ui-color-border-subtle);
852
+ }
853
+
854
+ :where(.ui-divider--horizontal) {
855
+ width: 100%;
856
+ height: 1px;
857
+ }
858
+
859
+ :where(.ui-divider--vertical) {
860
+ width: 1px;
861
+ height: 100%;
862
+ }
863
+
864
+ :where(.ui-divider--tone-subtle) {
865
+ background: var(--ui-color-border-subtle);
866
+ }
867
+
868
+ :where(.ui-divider--tone-strong) {
869
+ background: color-mix(
870
+ in oklab,
871
+ var(--ui-color-border-subtle),
872
+ var(--ui-color-text-primary) 22%
873
+ );
874
+ }
875
+
876
+ .ui-switch {
877
+ --ui-switch-color: var(--ui-color-primary-500);
878
+ --ui-switch-color-hover: var(--ui-color-primary-600);
879
+ --ui-switch-focus: color-mix(
880
+ in oklab,
881
+ var(--ui-switch-color),
882
+ transparent 65%
883
+ );
884
+ --ui-switch-track-width: 2.75rem;
885
+ --ui-switch-track-height: 1.5rem;
886
+ --ui-switch-thumb-size: 1.125rem;
887
+ --ui-switch-thumb-offset: 2px;
888
+
889
+ position: relative;
890
+ box-sizing: border-box;
891
+ display: inline-flex;
892
+ width: var(--ui-switch-track-width);
893
+ height: var(--ui-switch-track-height);
894
+ align-items: center;
895
+ justify-content: flex-start;
896
+ margin: 0;
897
+ padding: 0;
898
+ border: 1px solid transparent;
899
+ border-radius: 9999px;
900
+ appearance: none;
901
+ -webkit-appearance: none;
902
+ overflow: hidden;
903
+ background: var(--ui-color-border-subtle);
904
+ cursor: pointer;
905
+ transition: background-color 120ms ease;
906
+ }
907
+
908
+ .ui-switch:disabled {
909
+ pointer-events: none;
910
+ opacity: 0.5;
911
+ }
912
+
913
+ .ui-switch:focus-visible {
914
+ outline: 2px solid transparent;
915
+ box-shadow: 0 0 0 2px var(--ui-switch-focus);
916
+ }
917
+
918
+ .ui-switch[data-state="checked"] {
919
+ background: var(--ui-switch-color);
920
+ }
921
+
922
+ .ui-switch[data-state="checked"]:hover:not(:disabled) {
923
+ background: var(--ui-switch-color-hover);
924
+ }
925
+
926
+ .ui-switch:not([data-state="checked"]):hover:not(:disabled) {
927
+ background: color-mix(
928
+ in oklab,
929
+ var(--ui-color-border-subtle),
930
+ var(--ui-color-text-muted) 18%
931
+ );
932
+ }
933
+
934
+ .ui-switch__thumb {
935
+ display: block;
936
+ flex-shrink: 0;
937
+ width: var(--ui-switch-thumb-size);
938
+ height: var(--ui-switch-thumb-size);
939
+ border-radius: 9999px;
940
+ background: var(--ui-color-surface-0);
941
+ box-shadow: 0 1px 3px rgb(0 0 0 / 0.2);
942
+ transform: translateX(var(--ui-switch-thumb-offset));
943
+ transition: transform 120ms ease;
944
+ }
945
+
946
+ .ui-switch[data-state="checked"] .ui-switch__thumb {
947
+ transform: translateX(
948
+ calc(
949
+ var(--ui-switch-track-width) - var(--ui-switch-thumb-size) -
950
+ var(--ui-switch-thumb-offset) - 2px
951
+ )
952
+ );
953
+ }
954
+
955
+ .ui-switch--size-sm {
956
+ --ui-switch-track-width: 2rem;
957
+ --ui-switch-track-height: 1.125rem;
958
+ --ui-switch-thumb-size: 0.875rem;
959
+ }
960
+
961
+ .ui-switch--size-md {
962
+ --ui-switch-track-width: 2.75rem;
963
+ --ui-switch-track-height: 1.5rem;
964
+ --ui-switch-thumb-size: 1.125rem;
965
+ }
966
+
967
+ .ui-switch--color-primary {
968
+ --ui-switch-color: var(--ui-color-primary-500);
969
+ --ui-switch-color-hover: var(--ui-color-primary-600);
970
+ }
971
+
972
+ .ui-switch--color-secondary {
973
+ --ui-switch-color: var(--ui-color-secondary-500);
974
+ --ui-switch-color-hover: var(--ui-color-secondary-600);
975
+ }
976
+
977
+ .ui-switch--color-error {
978
+ --ui-switch-color: var(--ui-color-error-500);
979
+ --ui-switch-color-hover: var(--ui-color-error-600);
980
+ }
981
+
982
+ .ui-switch--color-warning {
983
+ --ui-switch-color: var(--ui-color-warning-500);
984
+ --ui-switch-color-hover: var(--ui-color-warning-600);
985
+ }
986
+
987
+ .ui-switch--color-info {
988
+ --ui-switch-color: var(--ui-color-info-500);
989
+ --ui-switch-color-hover: var(--ui-color-info-600);
990
+ }
991
+
992
+ .ui-switch--color-success {
993
+ --ui-switch-color: var(--ui-color-success-500);
994
+ --ui-switch-color-hover: var(--ui-color-success-600);
995
+ }
996
+
997
+ .ui-select-trigger {
998
+ box-sizing: border-box;
999
+ display: inline-flex;
1000
+ min-width: 0;
1001
+ align-items: center;
1002
+ justify-content: space-between;
1003
+ gap: 0.5rem;
1004
+ border: 1px solid var(--ui-color-border-subtle);
1005
+ border-radius: var(--ui-radius-md);
1006
+ background: var(--ui-color-surface-raised);
1007
+ color: var(--ui-color-text-primary);
1008
+ padding: 0 0.75rem;
1009
+ font-size: 0.875rem;
1010
+ line-height: 1;
1011
+ text-align: left;
1012
+ white-space: nowrap;
1013
+ cursor: pointer;
1014
+ transition:
1015
+ background-color 120ms ease,
1016
+ border-color 120ms ease,
1017
+ color 120ms ease,
1018
+ box-shadow 120ms ease;
1019
+ }
1020
+
1021
+ .ui-select-trigger[data-size="md"] {
1022
+ height: 2.25rem;
1023
+ }
1024
+
1025
+ .ui-select-trigger[data-size="sm"] {
1026
+ height: 2rem;
1027
+ font-size: 0.8125rem;
1028
+ }
1029
+
1030
+ .ui-select-trigger[data-placeholder] {
1031
+ color: var(--ui-color-text-muted);
1032
+ }
1033
+
1034
+ .ui-select-trigger:hover:not([data-disabled]) {
1035
+ border-color: color-mix(
1036
+ in oklab,
1037
+ var(--ui-color-border-subtle),
1038
+ var(--ui-color-text-primary) 16%
1039
+ );
1040
+ background: color-mix(
1041
+ in oklab,
1042
+ var(--ui-color-surface-raised),
1043
+ var(--ui-color-surface-2) 20%
1044
+ );
1045
+ }
1046
+
1047
+ .ui-select-trigger:focus-visible {
1048
+ outline: 2px solid transparent;
1049
+ box-shadow: 0 0 0 2px
1050
+ color-mix(in oklab, var(--ui-color-primary-500), transparent 70%);
1051
+ }
1052
+
1053
+ .ui-select-trigger[data-disabled] {
1054
+ pointer-events: none;
1055
+ opacity: 0.5;
1056
+ }
1057
+
1058
+ .ui-select-value {
1059
+ flex: 1 1 auto;
1060
+ min-width: 0;
1061
+ display: block;
1062
+ overflow: hidden;
1063
+ text-overflow: ellipsis;
1064
+ white-space: nowrap;
1065
+ }
1066
+
1067
+ .ui-select-value > span {
1068
+ display: block;
1069
+ min-width: 0;
1070
+ overflow: hidden;
1071
+ text-overflow: ellipsis;
1072
+ white-space: nowrap;
1073
+ }
1074
+
1075
+ .ui-select-chevron {
1076
+ width: 0.875rem;
1077
+ height: 0.875rem;
1078
+ flex-shrink: 0;
1079
+ color: var(--ui-color-text-muted);
1080
+ }
1081
+
1082
+ .ui-select-content {
1083
+ position: relative;
1084
+ z-index: 60;
1085
+ min-width: 8rem;
1086
+ max-height: min(24rem, var(--radix-select-content-available-height, 24rem));
1087
+ overflow: hidden;
1088
+ border: 1px solid var(--ui-color-border-subtle);
1089
+ border-radius: var(--ui-radius-md);
1090
+ background: var(--ui-color-surface-raised);
1091
+ color: var(--ui-color-text-primary);
1092
+ box-shadow: 0 10px 22px
1093
+ color-mix(in oklab, var(--ui-color-text-primary), transparent 82%);
1094
+ animation: ui-select-in 120ms ease;
1095
+ }
1096
+
1097
+ .ui-select-content[data-state="closed"] {
1098
+ animation: ui-select-out 90ms ease;
1099
+ }
1100
+
1101
+ .ui-select-content--popper[data-side="bottom"] {
1102
+ transform: translateY(0.25rem);
1103
+ }
1104
+
1105
+ .ui-select-content--popper[data-side="top"] {
1106
+ transform: translateY(-0.25rem);
1107
+ }
1108
+
1109
+ .ui-select-content--popper[data-side="left"] {
1110
+ transform: translateX(-0.25rem);
1111
+ }
1112
+
1113
+ .ui-select-content--popper[data-side="right"] {
1114
+ transform: translateX(0.25rem);
1115
+ }
1116
+
1117
+ .ui-select-viewport {
1118
+ padding: 0.25rem;
1119
+ }
1120
+
1121
+ .ui-select-viewport--popper {
1122
+ min-width: var(--radix-select-trigger-width);
1123
+ }
1124
+
1125
+ .ui-select-label {
1126
+ padding: 0.5rem 0.625rem;
1127
+ font-size: 0.75rem;
1128
+ line-height: 1.2;
1129
+ font-weight: 600;
1130
+ text-transform: uppercase;
1131
+ letter-spacing: 0.03em;
1132
+ color: var(--ui-color-text-secondary);
1133
+ }
1134
+
1135
+ .ui-select-item {
1136
+ position: relative;
1137
+ display: flex;
1138
+ width: 100%;
1139
+ min-width: 0;
1140
+ align-items: center;
1141
+ gap: 0.5rem;
1142
+ border: 1px solid transparent;
1143
+ border-radius: calc(var(--ui-radius-sm) + 1px);
1144
+ padding: 0.5rem 1.75rem 0.5rem 0.625rem;
1145
+ font-size: 0.875rem;
1146
+ line-height: 1.2;
1147
+ color: var(--ui-color-text-primary);
1148
+ user-select: none;
1149
+ cursor: pointer;
1150
+ outline: none;
1151
+ transition:
1152
+ background-color 100ms ease,
1153
+ color 100ms ease,
1154
+ border-color 100ms ease;
1155
+ }
1156
+
1157
+ .ui-select-item[data-highlighted] {
1158
+ background: color-mix(
1159
+ in oklab,
1160
+ var(--ui-color-primary-500),
1161
+ var(--ui-color-surface-raised) 88%
1162
+ );
1163
+ color: var(--ui-color-text-primary);
1164
+ border-color: color-mix(
1165
+ in oklab,
1166
+ var(--ui-color-border-subtle),
1167
+ var(--ui-color-primary-500) 14%
1168
+ );
1169
+ }
1170
+
1171
+ .ui-select-item[data-disabled] {
1172
+ pointer-events: none;
1173
+ opacity: 0.5;
1174
+ }
1175
+
1176
+ .ui-select-item-text {
1177
+ flex: 1 1 auto;
1178
+ min-width: 0;
1179
+ overflow: hidden;
1180
+ text-overflow: ellipsis;
1181
+ white-space: nowrap;
1182
+ }
1183
+
1184
+ .ui-select-indicator {
1185
+ position: absolute;
1186
+ right: 0.5rem;
1187
+ display: inline-flex;
1188
+ width: 0.875rem;
1189
+ height: 0.875rem;
1190
+ align-items: center;
1191
+ justify-content: center;
1192
+ color: currentColor;
1193
+ }
1194
+
1195
+ .ui-select-indicator-icon {
1196
+ width: 100%;
1197
+ height: 100%;
1198
+ }
1199
+
1200
+ .ui-select-separator {
1201
+ height: 1px;
1202
+ margin: 0.25rem;
1203
+ background: var(--ui-color-border-subtle);
1204
+ }
1205
+
1206
+ .ui-select-scroll-button {
1207
+ display: flex;
1208
+ align-items: center;
1209
+ justify-content: center;
1210
+ height: 1.5rem;
1211
+ color: var(--ui-color-text-muted);
1212
+ background: var(--ui-color-surface-raised);
1213
+ cursor: default;
1214
+ }
1215
+
1216
+ .ui-select-scroll-icon {
1217
+ width: 0.875rem;
1218
+ height: 0.875rem;
1219
+ }
1220
+
1221
+ .ui-encoder {
1222
+ --ui-encoder-size: 4rem;
1223
+ --ui-encoder-value-size: 0.8125rem;
1224
+ --ui-encoder-ring: var(--ui-color-primary-500);
1225
+ --ui-encoder-track: color-mix(
1226
+ in oklab,
1227
+ var(--ui-color-border-subtle),
1228
+ transparent 18%
1229
+ );
1230
+ --ui-encoder-core: var(--ui-color-surface-raised);
1231
+ --ui-encoder-border: var(--ui-color-border-subtle);
1232
+
1233
+ position: relative;
1234
+ display: inline-flex;
1235
+ flex-direction: column;
1236
+ align-items: center;
1237
+ justify-content: center;
1238
+ gap: 0.375rem;
1239
+ width: var(--ui-encoder-size);
1240
+ border-radius: var(--ui-radius-sm);
1241
+ cursor: ns-resize;
1242
+ user-select: none;
1243
+ touch-action: none;
1244
+ outline: none;
1245
+ transition: opacity 120ms ease;
1246
+ }
1247
+
1248
+ .ui-encoder--size-sm {
1249
+ --ui-encoder-size: 3.25rem;
1250
+ --ui-encoder-value-size: 0.6875rem;
1251
+ }
1252
+
1253
+ .ui-encoder--size-md {
1254
+ --ui-encoder-size: 4rem;
1255
+ --ui-encoder-value-size: 0.8125rem;
1256
+ }
1257
+
1258
+ .ui-encoder--disabled {
1259
+ cursor: not-allowed;
1260
+ opacity: 0.55;
1261
+ }
1262
+
1263
+ .ui-encoder:hover:not(.ui-encoder--disabled) {
1264
+ --ui-encoder-track: color-mix(
1265
+ in oklab,
1266
+ var(--ui-color-border-subtle),
1267
+ var(--ui-color-text-muted) 18%
1268
+ );
1269
+ --ui-encoder-border: color-mix(
1270
+ in oklab,
1271
+ var(--ui-color-border-subtle),
1272
+ var(--ui-color-text-primary) 18%
1273
+ );
1274
+ }
1275
+
1276
+ .ui-encoder:focus-visible {
1277
+ outline: 2px solid
1278
+ color-mix(in oklab, var(--ui-color-primary-500), transparent 35%);
1279
+ outline-offset: 3px;
1280
+ }
1281
+
1282
+ .ui-encoder__dial {
1283
+ position: relative;
1284
+ display: grid;
1285
+ place-items: center;
1286
+ flex: none;
1287
+ width: var(--ui-encoder-size);
1288
+ height: var(--ui-encoder-size);
1289
+ border-radius: 9999px;
1290
+ border: 1px solid var(--ui-encoder-border);
1291
+ background-color: var(--ui-color-surface-2);
1292
+ background-image: conic-gradient(
1293
+ from -135deg,
1294
+ var(--ui-encoder-ring) 0deg,
1295
+ var(--ui-encoder-ring) var(--ui-encoder-fill),
1296
+ var(--ui-encoder-track) var(--ui-encoder-fill),
1297
+ var(--ui-encoder-track) 270deg,
1298
+ transparent 270deg
1299
+ );
1300
+ transition:
1301
+ background-color 120ms ease,
1302
+ border-color 120ms ease;
1303
+ }
1304
+
1305
+ .ui-encoder__dial::after {
1306
+ content: "";
1307
+ position: absolute;
1308
+ inset: 0.35rem;
1309
+ border-radius: 9999px;
1310
+ border: 1px solid var(--ui-encoder-border);
1311
+ background: var(--ui-encoder-core);
1312
+ z-index: 0;
1313
+ }
1314
+
1315
+ .ui-encoder__indicator {
1316
+ position: absolute;
1317
+ left: 50%;
1318
+ top: 50%;
1319
+ width: 0.18rem;
1320
+ height: calc(var(--ui-encoder-size) * 0.28);
1321
+ border-radius: 9999px;
1322
+ background: var(--ui-color-primary-500);
1323
+ transform: translate(-50%, -100%) rotate(var(--ui-encoder-angle));
1324
+ transform-origin: center bottom;
1325
+ z-index: 1;
1326
+ }
1327
+
1328
+ .ui-encoder__value {
1329
+ font-size: var(--ui-encoder-value-size);
1330
+ font-weight: 600;
1331
+ line-height: 1;
1332
+ letter-spacing: -0.01em;
1333
+ color: var(--ui-color-text-secondary);
1334
+ font-variant-numeric: tabular-nums;
1335
+ white-space: nowrap;
1336
+ }
1337
+
1338
+ .ui-fader {
1339
+ --ui-fader-track-size: 0.625rem;
1340
+ --ui-fader-thumb-size: 1rem;
1341
+ --ui-fader-vertical-size: 7.75rem;
1342
+ --ui-fader-range-bg: color-mix(
1343
+ in oklab,
1344
+ var(--ui-color-surface-2),
1345
+ var(--ui-color-surface-raised) 30%
1346
+ );
1347
+ --ui-fader-focus: color-mix(
1348
+ in oklab,
1349
+ var(--ui-color-primary-500),
1350
+ transparent 65%
1351
+ );
1352
+
1353
+ display: flex;
1354
+ min-width: 0;
1355
+ flex-direction: column;
1356
+ align-items: center;
1357
+ gap: 0.5rem;
1358
+ padding: 0 0.5rem 0.125rem;
1359
+ }
1360
+
1361
+ .ui-fader--horizontal {
1362
+ width: 100%;
1363
+ align-items: stretch;
1364
+ }
1365
+
1366
+ .ui-fader__control {
1367
+ position: relative;
1368
+ display: flex;
1369
+ min-width: 0;
1370
+ }
1371
+
1372
+ .ui-fader__control--vertical {
1373
+ align-items: center;
1374
+ gap: 0.5rem;
1375
+ }
1376
+
1377
+ .ui-fader__control--horizontal {
1378
+ width: 100%;
1379
+ flex-direction: column;
1380
+ gap: 0.375rem;
1381
+ }
1382
+
1383
+ .ui-fader__range {
1384
+ box-sizing: border-box;
1385
+ margin: 0;
1386
+ padding: 0;
1387
+ display: block;
1388
+ line-height: 0;
1389
+ border: 1px solid var(--ui-color-border-subtle);
1390
+ border-radius: 9999px;
1391
+ background: var(--ui-fader-range-bg);
1392
+ appearance: none;
1393
+ -webkit-appearance: none;
1394
+ cursor: pointer;
1395
+ transition:
1396
+ background-color 120ms ease,
1397
+ border-color 120ms ease,
1398
+ box-shadow 120ms ease;
1399
+ }
1400
+
1401
+ .ui-fader__range:hover {
1402
+ background: color-mix(
1403
+ in oklab,
1404
+ var(--ui-fader-range-bg),
1405
+ var(--ui-color-text-primary) 8%
1406
+ );
1407
+ border-color: color-mix(
1408
+ in oklab,
1409
+ var(--ui-color-border-subtle),
1410
+ var(--ui-color-text-primary) 20%
1411
+ );
1412
+ }
1413
+
1414
+ .ui-fader__range:focus-visible {
1415
+ outline: 2px solid transparent;
1416
+ box-shadow: 0 0 0 2px var(--ui-fader-focus);
1417
+ }
1418
+
1419
+ .ui-fader__range--horizontal {
1420
+ width: 100%;
1421
+ height: var(--ui-fader-track-size);
1422
+ }
1423
+
1424
+ .ui-fader__range--vertical {
1425
+ width: var(--ui-fader-track-size);
1426
+ height: calc(
1427
+ var(--ui-fader-vertical-size) + var(--ui-fader-thumb-size) -
1428
+ var(--ui-fader-track-size)
1429
+ );
1430
+ margin-block: calc(
1431
+ (var(--ui-fader-track-size) - var(--ui-fader-thumb-size)) / 2
1432
+ );
1433
+ writing-mode: tb-rl;
1434
+ transform: rotate(-180deg);
1435
+ }
1436
+
1437
+ .ui-fader__range::-webkit-slider-runnable-track {
1438
+ height: var(--ui-fader-track-size);
1439
+ border-radius: 9999px;
1440
+ background: transparent;
1441
+ }
1442
+
1443
+ .ui-fader__range::-moz-range-track {
1444
+ height: var(--ui-fader-track-size);
1445
+ border-radius: 9999px;
1446
+ border: 0;
1447
+ background: transparent;
1448
+ }
1449
+
1450
+ .ui-fader__range::-moz-range-progress {
1451
+ height: var(--ui-fader-track-size);
1452
+ border-radius: 9999px;
1453
+ background: transparent;
1454
+ }
1455
+
1456
+ .ui-fader__range::-webkit-slider-thumb {
1457
+ width: var(--ui-fader-thumb-size);
1458
+ height: var(--ui-fader-thumb-size);
1459
+ border: 2px solid var(--ui-color-surface-raised);
1460
+ border-radius: 9999px;
1461
+ background: linear-gradient(
1462
+ 135deg,
1463
+ var(--ui-color-primary-500),
1464
+ var(--ui-color-secondary-500)
1465
+ );
1466
+ box-shadow: 0 2px 8px
1467
+ color-mix(in oklab, var(--ui-color-primary-500), transparent 65%);
1468
+ transition:
1469
+ transform 100ms ease,
1470
+ box-shadow 100ms ease;
1471
+ appearance: none;
1472
+ -webkit-appearance: none;
1473
+ }
1474
+
1475
+ .ui-fader__range--horizontal::-webkit-slider-thumb {
1476
+ margin-top: calc(
1477
+ (var(--ui-fader-track-size) - var(--ui-fader-thumb-size)) / 2
1478
+ );
1479
+ }
1480
+
1481
+ .ui-fader__range--vertical::-webkit-slider-thumb {
1482
+ margin-top: 0;
1483
+ }
1484
+
1485
+ .ui-fader__range::-webkit-slider-thumb:hover {
1486
+ transform: scale(1.08);
1487
+ box-shadow: 0 4px 12px
1488
+ color-mix(in oklab, var(--ui-color-primary-500), transparent 58%);
1489
+ }
1490
+
1491
+ .ui-fader__range::-webkit-slider-thumb:active {
1492
+ transform: scale(0.96);
1493
+ }
1494
+
1495
+ .ui-fader__range::-moz-range-thumb {
1496
+ width: var(--ui-fader-thumb-size);
1497
+ height: var(--ui-fader-thumb-size);
1498
+ border: 2px solid var(--ui-color-surface-raised);
1499
+ border-radius: 9999px;
1500
+ background: linear-gradient(
1501
+ 135deg,
1502
+ var(--ui-color-primary-500),
1503
+ var(--ui-color-secondary-500)
1504
+ );
1505
+ box-shadow: 0 2px 8px
1506
+ color-mix(in oklab, var(--ui-color-primary-500), transparent 65%);
1507
+ transition:
1508
+ transform 100ms ease,
1509
+ box-shadow 100ms ease;
1510
+ cursor: pointer;
1511
+ }
1512
+
1513
+ .ui-fader__range::-moz-range-thumb:hover {
1514
+ transform: scale(1.08);
1515
+ box-shadow: 0 4px 12px
1516
+ color-mix(in oklab, var(--ui-color-primary-500), transparent 58%);
1517
+ }
1518
+
1519
+ .ui-fader__range::-moz-range-thumb:active {
1520
+ transform: scale(0.96);
1521
+ }
1522
+
1523
+ .ui-fader__tooltip {
1524
+ position: absolute;
1525
+ z-index: 1;
1526
+ pointer-events: none;
1527
+ opacity: 0;
1528
+ visibility: hidden;
1529
+ border-radius: var(--ui-radius-sm);
1530
+ border: 1px solid
1531
+ color-mix(in oklab, var(--ui-color-primary-500), transparent 78%);
1532
+ background: var(--ui-color-primary-500);
1533
+ color: var(--ui-color-primary-contrast);
1534
+ padding: 0.25rem 0.375rem;
1535
+ font-size: 0.6875rem;
1536
+ line-height: 1;
1537
+ white-space: nowrap;
1538
+ transition: opacity 100ms ease;
1539
+ }
1540
+
1541
+ .ui-fader__tooltip--vertical {
1542
+ right: calc(100% + 0.5rem);
1543
+ top: 50%;
1544
+ transform: translateY(-50%);
1545
+ }
1546
+
1547
+ .ui-fader__tooltip--horizontal {
1548
+ left: 50%;
1549
+ top: -0.375rem;
1550
+ transform: translate(-50%, -100%);
1551
+ }
1552
+
1553
+ .ui-fader:hover .ui-fader__tooltip,
1554
+ .ui-fader:focus-within .ui-fader__tooltip {
1555
+ opacity: 1;
1556
+ visibility: visible;
1557
+ }
1558
+
1559
+ .ui-fader__marks {
1560
+ display: flex;
1561
+ gap: 0.25rem;
1562
+ }
1563
+
1564
+ .ui-fader__marks--horizontal {
1565
+ width: 100%;
1566
+ display: block;
1567
+ position: relative;
1568
+ min-height: 2.25rem;
1569
+ overflow: visible;
1570
+ }
1571
+
1572
+ .ui-fader__marks--vertical {
1573
+ min-height: var(--ui-fader-vertical-size);
1574
+ flex-direction: column-reverse;
1575
+ justify-content: space-between;
1576
+ }
1577
+
1578
+ .ui-fader__marks--single {
1579
+ justify-content: center;
1580
+ }
1581
+
1582
+ .ui-fader__mark-button {
1583
+ min-height: 0;
1584
+ height: auto;
1585
+ padding: 0.25rem 0.375rem;
1586
+ font-size: 0.6875rem;
1587
+ line-height: 1;
1588
+ color: var(--ui-color-text-secondary);
1589
+ gap: 0.3125rem;
1590
+ }
1591
+
1592
+ .ui-fader__mark-button--horizontal {
1593
+ position: absolute;
1594
+ top: 0;
1595
+ display: flex;
1596
+ flex-direction: column;
1597
+ align-items: center;
1598
+ justify-content: flex-start;
1599
+ gap: 0.125rem;
1600
+ text-align: center;
1601
+ padding: 0.125rem 0.25rem;
1602
+ transform: translateX(-50%);
1603
+ white-space: nowrap;
1604
+ }
1605
+
1606
+ .ui-fader__mark-button--horizontal-start {
1607
+ transform: translateX(0);
1608
+ }
1609
+
1610
+ .ui-fader__mark-button--horizontal-end {
1611
+ transform: translateX(-100%);
1612
+ }
1613
+
1614
+ .ui-fader__mark-dot {
1615
+ width: 0.25rem;
1616
+ height: 0.25rem;
1617
+ border-radius: 9999px;
1618
+ background: linear-gradient(
1619
+ 135deg,
1620
+ var(--ui-color-primary-500),
1621
+ var(--ui-color-secondary-500)
1622
+ );
1623
+ }
1624
+
1625
+ .ui-fader__label-row {
1626
+ display: flex;
1627
+ width: 100%;
1628
+ align-items: center;
1629
+ gap: 0.375rem;
1630
+ margin-top: 0.125rem;
1631
+ }
1632
+
1633
+ .ui-fader__label-dot {
1634
+ width: 0.375rem;
1635
+ height: 0.375rem;
1636
+ border-radius: 9999px;
1637
+ background: linear-gradient(
1638
+ 135deg,
1639
+ var(--ui-color-primary-500),
1640
+ var(--ui-color-secondary-500)
1641
+ );
1642
+ flex-shrink: 0;
1643
+ }
1644
+
1645
+ .ui-fader__label {
1646
+ font-size: 0.75rem;
1647
+ font-weight: 500;
1648
+ letter-spacing: -0.01em;
1649
+ color: var(--ui-color-text-secondary);
1650
+ }
1651
+
1652
+ :where(.ui-dropdown-content) {
1653
+ --ui-dropdown-item-bg-hover: color-mix(
1654
+ in oklab,
1655
+ var(--ui-color-primary-500),
1656
+ var(--ui-color-surface-raised) 88%
1657
+ );
1658
+ --ui-dropdown-item-color-hover: var(--ui-color-text-primary);
1659
+
1660
+ z-index: 50;
1661
+ min-width: 10rem;
1662
+ max-height: min(
1663
+ 24rem,
1664
+ var(--radix-dropdown-menu-content-available-height, 24rem)
1665
+ );
1666
+ overflow-x: hidden;
1667
+ overflow-y: auto;
1668
+ border: 1px solid var(--ui-color-border-subtle);
1669
+ border-radius: var(--ui-radius-md);
1670
+ background: var(--ui-color-surface-raised);
1671
+ color: var(--ui-color-text-primary);
1672
+ padding: 0.375rem;
1673
+ box-shadow: 0 10px 22px
1674
+ color-mix(in oklab, var(--ui-color-text-primary), transparent 82%);
1675
+ outline: none;
1676
+ transform-origin: var(--radix-dropdown-menu-content-transform-origin);
1677
+ animation: ui-dropdown-in 120ms ease;
1678
+ }
1679
+
1680
+ :where(.ui-dropdown-content[data-side="top"]) {
1681
+ transform-origin: bottom center;
1682
+ }
1683
+
1684
+ :where(.ui-dropdown-content[data-side="right"]) {
1685
+ transform-origin: left center;
1686
+ }
1687
+
1688
+ :where(.ui-dropdown-content[data-side="left"]) {
1689
+ transform-origin: right center;
1690
+ }
1691
+
1692
+ :where(.ui-dropdown-content[data-state="closed"]) {
1693
+ animation: ui-dropdown-out 90ms ease;
1694
+ }
1695
+
1696
+ :where(.ui-dropdown-sub-content) {
1697
+ min-width: 9rem;
1698
+ }
1699
+
1700
+ :where(.ui-context-content) {
1701
+ max-height: min(
1702
+ 24rem,
1703
+ var(--radix-context-menu-content-available-height, 24rem)
1704
+ );
1705
+ transform-origin: var(--radix-context-menu-content-transform-origin);
1706
+ }
1707
+
1708
+ :where(.ui-context-sub-content) {
1709
+ transform-origin: var(--radix-context-menu-content-transform-origin);
1710
+ }
1711
+
1712
+ :where(.ui-dropdown-item) {
1713
+ position: relative;
1714
+ display: flex;
1715
+ width: 100%;
1716
+ align-items: center;
1717
+ gap: 0.5rem;
1718
+ border: 1px solid transparent;
1719
+ border-radius: calc(var(--ui-radius-sm) + 1px);
1720
+ padding: 0.5rem 0.625rem;
1721
+ font-size: 0.875rem;
1722
+ line-height: 1.2;
1723
+ color: var(--ui-color-text-primary);
1724
+ user-select: none;
1725
+ cursor: pointer;
1726
+ outline: none;
1727
+ transition:
1728
+ background-color 100ms ease,
1729
+ color 100ms ease,
1730
+ border-color 100ms ease;
1731
+ }
1732
+
1733
+ :where(.ui-dropdown-item[data-inset="true"]) {
1734
+ padding-left: 1.75rem;
1735
+ }
1736
+
1737
+ :where(.ui-dropdown-item[data-highlighted]) {
1738
+ background: var(--ui-dropdown-item-bg-hover);
1739
+ color: var(--ui-dropdown-item-color-hover);
1740
+ border-color: color-mix(
1741
+ in oklab,
1742
+ var(--ui-color-border-subtle),
1743
+ var(--ui-color-primary-500) 14%
1744
+ );
1745
+ }
1746
+
1747
+ :where(.ui-dropdown-item[data-variant="destructive"]) {
1748
+ color: var(--ui-color-error-500);
1749
+ }
1750
+
1751
+ :where(.ui-dropdown-item[data-variant="destructive"][data-highlighted]) {
1752
+ background: color-mix(
1753
+ in oklab,
1754
+ var(--ui-color-error-500),
1755
+ var(--ui-color-surface-raised) 90%
1756
+ );
1757
+ border-color: color-mix(
1758
+ in oklab,
1759
+ var(--ui-color-error-500),
1760
+ transparent 76%
1761
+ );
1762
+ color: var(--ui-color-error-600);
1763
+ }
1764
+
1765
+ :where(.ui-dropdown-item[data-disabled]) {
1766
+ pointer-events: none;
1767
+ opacity: 0.5;
1768
+ }
1769
+
1770
+ :where(.ui-dropdown-item--with-indicator) {
1771
+ padding-left: 1.75rem;
1772
+ }
1773
+
1774
+ :where(.ui-dropdown-indicator) {
1775
+ position: absolute;
1776
+ left: 0.5rem;
1777
+ display: inline-flex;
1778
+ width: 0.75rem;
1779
+ height: 0.75rem;
1780
+ align-items: center;
1781
+ justify-content: center;
1782
+ color: currentColor;
1783
+ }
1784
+
1785
+ :where(.ui-dropdown-indicator-icon) {
1786
+ width: 100%;
1787
+ height: 100%;
1788
+ }
1789
+
1790
+ :where(.ui-dropdown-label) {
1791
+ padding: 0.5rem 0.625rem;
1792
+ font-size: 0.75rem;
1793
+ line-height: 1.2;
1794
+ font-weight: 600;
1795
+ text-transform: uppercase;
1796
+ letter-spacing: 0.03em;
1797
+ color: var(--ui-color-text-secondary);
1798
+ }
1799
+
1800
+ :where(.ui-dropdown-label[data-inset="true"]) {
1801
+ padding-left: 1.75rem;
1802
+ }
1803
+
1804
+ :where(.ui-dropdown-separator) {
1805
+ height: 1px;
1806
+ margin: 0.375rem -0.125rem;
1807
+ background: var(--ui-color-border-subtle);
1808
+ }
1809
+
1810
+ :where(.ui-dropdown-shortcut) {
1811
+ margin-left: auto;
1812
+ font-size: 0.6875rem;
1813
+ letter-spacing: 0.04em;
1814
+ color: var(--ui-color-text-muted);
1815
+ }
1816
+
1817
+ :where(.ui-dropdown-sub-trigger) {
1818
+ padding-right: 0.5rem;
1819
+ }
1820
+
1821
+ :where(.ui-dropdown-sub-trigger[data-state="open"]) {
1822
+ background: var(--ui-dropdown-item-bg-hover);
1823
+ border-color: color-mix(
1824
+ in oklab,
1825
+ var(--ui-color-border-subtle),
1826
+ var(--ui-color-primary-500) 14%
1827
+ );
1828
+ }
1829
+
1830
+ :where(.ui-dropdown-chevron) {
1831
+ width: 0.875rem;
1832
+ height: 0.875rem;
1833
+ margin-left: auto;
1834
+ color: var(--ui-color-text-muted);
1835
+ }
1836
+
1837
+ :where(.ui-dialog-overlay) {
1838
+ position: fixed;
1839
+ inset: 0;
1840
+ z-index: 50;
1841
+ background: color-mix(
1842
+ in oklab,
1843
+ var(--ui-color-surface-0),
1844
+ var(--ui-color-text-primary) 58%
1845
+ );
1846
+ opacity: 0.55;
1847
+ animation: ui-dialog-overlay-in 120ms ease;
1848
+ }
1849
+
1850
+ :where(.ui-dialog-overlay[data-state="closed"]) {
1851
+ animation: ui-dialog-overlay-out 90ms ease;
1852
+ }
1853
+
1854
+ :where(.ui-dialog-content) {
1855
+ position: fixed;
1856
+ left: 50%;
1857
+ top: 50%;
1858
+ z-index: 51;
1859
+ display: grid;
1860
+ width: calc(100% - 2rem);
1861
+ max-width: 32rem;
1862
+ gap: 1rem;
1863
+ transform: translate(-50%, -50%);
1864
+ border: 1px solid var(--ui-color-border-subtle);
1865
+ border-radius: var(--ui-radius-lg);
1866
+ background: var(--ui-color-surface-raised);
1867
+ color: var(--ui-color-text-primary);
1868
+ padding: 1.5rem;
1869
+ box-shadow: 0 18px 40px
1870
+ color-mix(in oklab, var(--ui-color-text-primary), transparent 80%);
1871
+ animation: ui-dialog-content-in 120ms ease;
1872
+ }
1873
+
1874
+ :where(.ui-dialog-content[data-state="closed"]) {
1875
+ animation: ui-dialog-content-out 90ms ease;
1876
+ }
1877
+
1878
+ :where(.ui-dialog-close) {
1879
+ position: absolute;
1880
+ right: 0.75rem;
1881
+ top: 0.75rem;
1882
+ display: inline-flex;
1883
+ width: 1.75rem;
1884
+ height: 1.75rem;
1885
+ align-items: center;
1886
+ justify-content: center;
1887
+ border: 1px solid transparent;
1888
+ border-radius: var(--ui-radius-sm);
1889
+ color: var(--ui-color-text-muted);
1890
+ background: transparent;
1891
+ cursor: pointer;
1892
+ transition:
1893
+ background-color 100ms ease,
1894
+ color 100ms ease,
1895
+ border-color 100ms ease;
1896
+ }
1897
+
1898
+ :where(.ui-dialog-close:hover) {
1899
+ background: color-mix(
1900
+ in oklab,
1901
+ var(--ui-color-primary-500),
1902
+ var(--ui-color-surface-raised) 90%
1903
+ );
1904
+ color: var(--ui-color-text-primary);
1905
+ border-color: color-mix(
1906
+ in oklab,
1907
+ var(--ui-color-border-subtle),
1908
+ var(--ui-color-primary-500) 16%
1909
+ );
1910
+ }
1911
+
1912
+ :where(.ui-dialog-close:focus-visible) {
1913
+ outline: 2px solid transparent;
1914
+ box-shadow: 0 0 0 2px
1915
+ color-mix(in oklab, var(--ui-color-primary-500), transparent 70%);
1916
+ }
1917
+
1918
+ :where(.ui-dialog-close-icon) {
1919
+ width: 0.875rem;
1920
+ height: 0.875rem;
1921
+ pointer-events: none;
1922
+ }
1923
+
1924
+ :where(.ui-dialog-header) {
1925
+ display: flex;
1926
+ flex-direction: column;
1927
+ gap: 0.5rem;
1928
+ text-align: left;
1929
+ }
1930
+
1931
+ :where(.ui-dialog-footer) {
1932
+ display: flex;
1933
+ flex-direction: column-reverse;
1934
+ gap: 0.5rem;
1935
+ }
1936
+
1937
+ :where(.ui-dialog-title) {
1938
+ font-size: 1.125rem;
1939
+ line-height: 1.2;
1940
+ font-weight: 600;
1941
+ letter-spacing: -0.01em;
1942
+ color: var(--ui-color-text-primary);
1943
+ }
1944
+
1945
+ :where(.ui-dialog-description) {
1946
+ font-size: 0.875rem;
1947
+ line-height: 1.4;
1948
+ color: var(--ui-color-text-muted);
1949
+ }
1950
+
1951
+ @keyframes ui-dropdown-in {
1952
+ from {
1953
+ opacity: 0;
1954
+ transform: scale(0.98);
1955
+ }
1956
+ to {
1957
+ opacity: 1;
1958
+ transform: scale(1);
1959
+ }
1960
+ }
1961
+
1962
+ @keyframes ui-dropdown-out {
1963
+ from {
1964
+ opacity: 1;
1965
+ transform: scale(1);
1966
+ }
1967
+ to {
1968
+ opacity: 0;
1969
+ transform: scale(0.98);
1970
+ }
1971
+ }
1972
+
1973
+ @keyframes ui-select-in {
1974
+ from {
1975
+ opacity: 0;
1976
+ transform: scale(0.98);
1977
+ }
1978
+ to {
1979
+ opacity: 1;
1980
+ transform: scale(1);
1981
+ }
1982
+ }
1983
+
1984
+ @keyframes ui-select-out {
1985
+ from {
1986
+ opacity: 1;
1987
+ transform: scale(1);
1988
+ }
1989
+ to {
1990
+ opacity: 0;
1991
+ transform: scale(0.98);
1992
+ }
1993
+ }
1994
+
1995
+ @keyframes ui-dialog-overlay-in {
1996
+ from {
1997
+ opacity: 0;
1998
+ }
1999
+ to {
2000
+ opacity: 0.55;
2001
+ }
2002
+ }
2003
+
2004
+ @keyframes ui-dialog-overlay-out {
2005
+ from {
2006
+ opacity: 0.55;
2007
+ }
2008
+ to {
2009
+ opacity: 0;
2010
+ }
2011
+ }
2012
+
2013
+ @keyframes ui-dialog-content-in {
2014
+ from {
2015
+ opacity: 0;
2016
+ transform: translate(-50%, -50%) scale(0.98);
2017
+ }
2018
+ to {
2019
+ opacity: 1;
2020
+ transform: translate(-50%, -50%) scale(1);
2021
+ }
2022
+ }
2023
+
2024
+ @keyframes ui-dialog-content-out {
2025
+ from {
2026
+ opacity: 1;
2027
+ transform: translate(-50%, -50%) scale(1);
2028
+ }
2029
+ to {
2030
+ opacity: 0;
2031
+ transform: translate(-50%, -50%) scale(0.98);
2032
+ }
2033
+ }
2034
+
2035
+ @media (min-width: 640px) {
2036
+ :where(.ui-dialog-footer) {
2037
+ flex-direction: row;
2038
+ justify-content: flex-end;
2039
+ }
2040
+ }
2041
+ }