daftcss 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/daft.css ADDED
@@ -0,0 +1,3022 @@
1
+ @layer tokens {
2
+ :root {
3
+ color-scheme: light dark;
4
+ --spacing: 1rem;
5
+ --radius: .625rem;
6
+ --component-height: 2.25rem;
7
+ --font-size-base: 1rem;
8
+ --line-height: 1.5;
9
+ --font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
10
+ --font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;
11
+ --transition: .15s;
12
+ --ease-default: cubic-bezier(.4, 0, .2, 1);
13
+ --background: light-dark(oklch(100% 0 0), oklch(14.5% 0 0));
14
+ --foreground: light-dark(oklch(14.5% 0 0), oklch(98.5% 0 0));
15
+ --card: light-dark(oklch(100% 0 0), oklch(20.5% 0 0));
16
+ --popover: light-dark(oklch(100% 0 0), oklch(26.9% 0 0));
17
+ --primary: light-dark(oklch(20.5% 0 0), oklch(92.2% 0 0));
18
+ --muted: light-dark(oklch(97% 0 0), oklch(26.9% 0 0));
19
+ --destructive: light-dark(oklch(57.7% .245 27.325), oklch(70.4% .191 22.216));
20
+ --success: light-dark(oklch(55% .16 145), oklch(72% .16 145));
21
+ --warning: light-dark(oklch(68% .16 70), oklch(82% .16 80));
22
+ --border: light-dark(oklch(92.2% 0 0), oklch(100% 0 0 / .1));
23
+ --spacing-xs: calc(var(--spacing) * .25);
24
+ --spacing-sm: calc(var(--spacing) * .5);
25
+ --spacing-md: calc(var(--spacing) * .75);
26
+ --spacing-lg: calc(var(--spacing) * 1.5);
27
+ --spacing-xl: calc(var(--spacing) * 2);
28
+ --radius-sm: calc(var(--radius) - 4px);
29
+ --radius-md: calc(var(--radius) - 2px);
30
+ --radius-lg: var(--radius);
31
+ --radius-xl: calc(var(--radius) + 4px);
32
+ --radius-full: 9999px;
33
+ --text-xs: calc(var(--font-size-base) * .75);
34
+ --text-sm: calc(var(--font-size-base) * .875);
35
+ --text-base: var(--font-size-base);
36
+ --text-lg: calc(var(--font-size-base) * 1.125);
37
+ --text-xl: calc(var(--font-size-base) * 1.25);
38
+ --text-2xl: calc(var(--font-size-base) * 1.5);
39
+ --text-3xl: calc(var(--font-size-base) * 1.875);
40
+ --text-4xl: calc(var(--font-size-base) * 2.25);
41
+ --line-height-sm: calc(var(--line-height) - .25);
42
+ --line-height-lg: calc(var(--line-height) + .25);
43
+ --font-normal: 400;
44
+ --font-medium: 500;
45
+ --font-semibold: 600;
46
+ --font-bold: 700;
47
+ --font-extrabold: 800;
48
+ --transition-fast: calc(var(--transition) * .67);
49
+ --transition-slow: calc(var(--transition) * 2);
50
+ --transition-default: var(--transition) var(--ease-default);
51
+ --component-height-sm: calc(var(--component-height) - .25rem);
52
+ --component-height-lg: calc(var(--component-height) + .25rem);
53
+ --shadow-xs: 0 1px 2px 0 light-dark(#0000000d, #0000004d);
54
+ --shadow-sm: 0 1px 3px 0 light-dark(#0000001a, #0006), 0 1px 2px -1px light-dark(#0000001a, #0006);
55
+ --shadow-md: 0 4px 6px -1px light-dark(#0000001a, #0006), 0 2px 4px -2px light-dark(#0000001a, #0006);
56
+ --shadow-lg: 0 10px 15px -3px light-dark(#0000001a, #0006), 0 4px 6px -4px light-dark(#0000001a, #0006);
57
+ --card-foreground: var(--foreground);
58
+ --popover-foreground: var(--card-foreground);
59
+ --muted-foreground: light-dark(oklch(55.6% 0 0), oklch(70.8% 0 0));
60
+ --primary-foreground: oklch(98.5% 0 0);
61
+ --destructive-foreground: oklch(98.5% 0 0);
62
+ --success-foreground: light-dark(oklch(98.5% 0 0), oklch(14.5% 0 0));
63
+ --warning-foreground: oklch(14.5% 0 0);
64
+ --accent: var(--muted);
65
+ --accent-foreground: var(--foreground);
66
+ --button-radius: var(--radius-md);
67
+ --input-radius: var(--radius-md);
68
+ --card-radius: var(--radius-xl);
69
+ --modal-radius: var(--radius-lg);
70
+ --dropdown-radius: var(--radius-md);
71
+ --tooltip-radius: var(--radius-md);
72
+ --badge-radius: var(--radius-md);
73
+ --progress-radius: var(--radius-full);
74
+ --button-shadow: var(--shadow-xs);
75
+ --card-shadow: var(--shadow-xs);
76
+ --dropdown-shadow: var(--shadow-md);
77
+ --popover-shadow: var(--shadow-md);
78
+ --modal-shadow: var(--shadow-lg);
79
+ --button-height: var(--component-height);
80
+ --button-height-sm: var(--component-height-sm);
81
+ --button-height-lg: var(--component-height-lg);
82
+ --input: light-dark(oklch(92.2% 0 0), oklch(100% 0 0 / .15));
83
+ --input-height: var(--component-height);
84
+ --input-background: var(--card);
85
+ --control-size: 1rem;
86
+ --switch-width: 2rem;
87
+ --switch-height: 1.25rem;
88
+ --switch-thumb: 1rem;
89
+ --modal-overlay: light-dark(oklch(0% 0 0 / .5), oklch(0% 0 0 / .7));
90
+ --breadcrumb-divider: "›";
91
+ --aside-width: clamp(14rem, 20vw, 20rem);
92
+ --hover-opacity: 90%;
93
+ --active-opacity: 85%;
94
+ --disabled-opacity: .5;
95
+ --ring: light-dark(oklch(70.8% 0 0), oklch(55.6% 0 0));
96
+ --focus-ring-width: 3px;
97
+ --focus-ring-opacity: 50%;
98
+ --border-width: 1px;
99
+ --outline-width: 2px;
100
+ --outline-offset: 2px;
101
+ --icon-size: 1rem;
102
+ --icon-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
103
+ --icon-select-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
104
+ }
105
+
106
+ @supports (color: oklch(from red l c h)) {
107
+ :root {
108
+ --primary-foreground: oklch(from var(--primary) clamp(0, (l / .623 - 1) * -infinity, 1) 0 h);
109
+ --destructive-foreground: oklch(from var(--destructive) clamp(0, (l / .623 - 1) * -infinity, 1) 0 h);
110
+ --success-foreground: oklch(from var(--success) clamp(0, (l / .623 - 1) * -infinity, 1) 0 h);
111
+ --warning-foreground: oklch(from var(--warning) clamp(0, (l / .623 - 1) * -infinity, 1) 0 h);
112
+ }
113
+ }
114
+
115
+ @supports (color: contrast-color(red)) {
116
+ :root {
117
+ --primary-foreground: contrast-color(var(--primary));
118
+ --destructive-foreground: contrast-color(var(--destructive));
119
+ --success-foreground: contrast-color(var(--success));
120
+ --warning-foreground: contrast-color(var(--warning));
121
+ }
122
+ }
123
+ }
124
+
125
+ @layer reset {
126
+ *, :before, :after {
127
+ box-sizing: border-box;
128
+ }
129
+
130
+ * {
131
+ margin: 0;
132
+ }
133
+
134
+ html {
135
+ -webkit-text-size-adjust: 100%;
136
+ -moz-text-size-adjust: 100%;
137
+ text-size-adjust: 100%;
138
+ }
139
+
140
+ body {
141
+ -webkit-font-smoothing: antialiased;
142
+ line-height: 1.5;
143
+ }
144
+
145
+ img, picture, video, canvas, svg {
146
+ max-width: 100%;
147
+ display: block;
148
+ }
149
+
150
+ input, button, textarea, select {
151
+ font: inherit;
152
+ color: inherit;
153
+ }
154
+
155
+ p, h1, h2, h3, h4, h5, h6 {
156
+ overflow-wrap: break-word;
157
+ }
158
+
159
+ ul[role="list"], ol[role="list"] {
160
+ padding: 0;
161
+ list-style: none;
162
+ }
163
+
164
+ button {
165
+ cursor: pointer;
166
+ background: none;
167
+ border: none;
168
+ padding: 0;
169
+ }
170
+
171
+ fieldset {
172
+ border: none;
173
+ margin: 0;
174
+ padding: 0;
175
+ }
176
+
177
+ legend {
178
+ padding: 0;
179
+ }
180
+
181
+ summary {
182
+ cursor: pointer;
183
+ }
184
+
185
+ textarea {
186
+ resize: vertical;
187
+ }
188
+
189
+ table {
190
+ border-collapse: collapse;
191
+ border-spacing: 0;
192
+ }
193
+
194
+ input, textarea, select, button {
195
+ font-family: inherit;
196
+ font-size: inherit;
197
+ }
198
+
199
+ @media (prefers-reduced-motion: reduce) {
200
+ *, :before, :after {
201
+ scroll-behavior: auto !important;
202
+ transition-duration: .01ms !important;
203
+ animation-duration: .01ms !important;
204
+ animation-iteration-count: 1 !important;
205
+ }
206
+ }
207
+ }
208
+
209
+ @layer base {
210
+ [data-theme="light"] {
211
+ color-scheme: light;
212
+ }
213
+
214
+ [data-theme="dark"] {
215
+ color-scheme: dark;
216
+ }
217
+
218
+ [data-theme] {
219
+ background-color: var(--background);
220
+ color: var(--foreground);
221
+ }
222
+
223
+ html {
224
+ color-scheme: light dark;
225
+ scroll-behavior: smooth;
226
+ }
227
+
228
+ body {
229
+ font-family: var(--font-sans);
230
+ font-size: var(--text-base);
231
+ font-weight: var(--font-normal);
232
+ line-height: var(--line-height);
233
+ color: var(--foreground);
234
+ background-color: var(--background);
235
+ min-height: 100dvh;
236
+ }
237
+
238
+ :focus-visible {
239
+ outline: var(--outline-width) solid var(--ring);
240
+ outline-offset: var(--outline-offset);
241
+ }
242
+
243
+ ::selection {
244
+ background-color: color-mix(in oklch, var(--primary) 30%, transparent);
245
+ color: var(--foreground);
246
+ }
247
+
248
+ ::-webkit-scrollbar {
249
+ width: .75rem;
250
+ height: .75rem;
251
+ }
252
+
253
+ ::-webkit-scrollbar-track {
254
+ background: var(--muted);
255
+ }
256
+
257
+ ::-webkit-scrollbar-thumb {
258
+ background: var(--muted-foreground);
259
+ border-radius: var(--radius-full);
260
+ border: 3px solid var(--muted);
261
+ }
262
+
263
+ ::-webkit-scrollbar-thumb:hover {
264
+ background: color-mix(in oklch, var(--muted-foreground) 80%, var(--foreground));
265
+ }
266
+
267
+ * {
268
+ scrollbar-width: thin;
269
+ scrollbar-color: var(--muted-foreground) var(--muted);
270
+ }
271
+ }
272
+
273
+ @layer layout {
274
+ .container {
275
+ width: 100%;
276
+ padding-left: var(--spacing);
277
+ padding-right: var(--spacing);
278
+ margin-left: auto;
279
+ margin-right: auto;
280
+ }
281
+
282
+ @media (width >= 576px) {
283
+ .container {
284
+ max-width: 540px;
285
+ padding-left: 0;
286
+ padding-right: 0;
287
+ }
288
+ }
289
+
290
+ @media (width >= 768px) {
291
+ .container {
292
+ max-width: 720px;
293
+ }
294
+ }
295
+
296
+ @media (width >= 1024px) {
297
+ .container {
298
+ max-width: 960px;
299
+ }
300
+ }
301
+
302
+ @media (width >= 1280px) {
303
+ .container {
304
+ max-width: 1140px;
305
+ }
306
+ }
307
+
308
+ @media (width >= 1536px) {
309
+ .container {
310
+ max-width: 1320px;
311
+ }
312
+ }
313
+
314
+ .container-fluid {
315
+ width: 100%;
316
+ padding-left: var(--spacing);
317
+ padding-right: var(--spacing);
318
+ margin-left: auto;
319
+ margin-right: auto;
320
+ }
321
+
322
+ @media (width >= 768px) {
323
+ .container-fluid {
324
+ padding-left: var(--spacing-lg);
325
+ padding-right: var(--spacing-lg);
326
+ }
327
+ }
328
+
329
+ @media (width >= 1024px) {
330
+ .container-fluid {
331
+ padding-left: var(--spacing-xl);
332
+ padding-right: var(--spacing-xl);
333
+ }
334
+ }
335
+
336
+ main {
337
+ min-height: 1px;
338
+ display: block;
339
+ }
340
+
341
+ body > header, main > header, .container > header, body > footer, main > footer, .container > footer {
342
+ padding-block: var(--spacing);
343
+ }
344
+
345
+ section {
346
+ margin-bottom: var(--spacing-xl);
347
+ }
348
+
349
+ section:last-child {
350
+ margin-bottom: 0;
351
+ }
352
+
353
+ section section, body > article, main > article, section > article, .container > article {
354
+ margin-bottom: var(--spacing);
355
+ }
356
+
357
+ @media (width >= 768px) {
358
+ section {
359
+ margin-bottom: calc(var(--spacing-xl) * 1.5);
360
+ }
361
+ }
362
+
363
+ .grid {
364
+ gap: var(--spacing);
365
+ margin-bottom: var(--spacing);
366
+ grid-template-columns: 1fr;
367
+ display: grid;
368
+ }
369
+
370
+ .grid:last-child {
371
+ margin-bottom: 0;
372
+ }
373
+
374
+ @media (width >= 768px) {
375
+ .grid {
376
+ grid-template-columns: repeat(auto-fit, minmax(0, 1fr));
377
+ }
378
+
379
+ .grid:has( > :nth-child(2):last-child) {
380
+ grid-template-columns: repeat(2, 1fr);
381
+ }
382
+
383
+ .grid:has( > :nth-child(3):last-child) {
384
+ grid-template-columns: repeat(3, 1fr);
385
+ }
386
+
387
+ .grid:has( > :nth-child(4):last-child) {
388
+ grid-template-columns: repeat(4, 1fr);
389
+ }
390
+
391
+ .grid:has( > :nth-child(5):last-child) {
392
+ grid-template-columns: repeat(5, 1fr);
393
+ }
394
+
395
+ .grid:has( > :nth-child(6):last-child) {
396
+ grid-template-columns: repeat(6, 1fr);
397
+ }
398
+ }
399
+
400
+ .grid > * {
401
+ min-width: 0;
402
+ }
403
+
404
+ .grid > [data-span="full"] {
405
+ grid-column: 1 / -1;
406
+ }
407
+
408
+ .grid > .span-2 {
409
+ grid-column: span 2;
410
+ }
411
+
412
+ .grid > .span-3 {
413
+ grid-column: span 3;
414
+ }
415
+
416
+ .grid > .span-4 {
417
+ grid-column: span 4;
418
+ }
419
+
420
+ .overflow-auto {
421
+ -webkit-overflow-scrolling: touch;
422
+ overflow-x: auto;
423
+ }
424
+
425
+ .overflow-auto > table {
426
+ margin-bottom: 0;
427
+ }
428
+
429
+ .overflow-auto {
430
+ position: relative;
431
+ }
432
+
433
+ pre.overflow-auto {
434
+ overflow-x: auto;
435
+ }
436
+ }
437
+
438
+ @layer content {
439
+ h1, h2, h3, h4, h5, h6 {
440
+ color: var(--foreground);
441
+ font-weight: var(--font-semibold);
442
+ line-height: var(--line-height-sm);
443
+ letter-spacing: -.025em;
444
+ margin-top: var(--spacing-sm);
445
+ margin-bottom: var(--spacing-sm);
446
+ }
447
+
448
+ h1 {
449
+ font-size: var(--text-4xl);
450
+ font-weight: var(--font-extrabold);
451
+ line-height: 1;
452
+ }
453
+
454
+ h2 {
455
+ font-size: var(--text-3xl);
456
+ }
457
+
458
+ h3 {
459
+ font-size: var(--text-2xl);
460
+ }
461
+
462
+ h4 {
463
+ font-size: var(--text-xl);
464
+ }
465
+
466
+ h5 {
467
+ font-size: var(--text-lg);
468
+ }
469
+
470
+ h6 {
471
+ font-size: var(--text-base);
472
+ }
473
+
474
+ hgroup {
475
+ margin-bottom: var(--spacing);
476
+
477
+ & > h1, & > h2, & > h3, & > h4, & > h5, & > h6 {
478
+ margin-bottom: var(--spacing-sm);
479
+ }
480
+
481
+ & > p {
482
+ color: var(--muted-foreground);
483
+ margin-bottom: 0;
484
+ }
485
+ }
486
+
487
+ p {
488
+ margin-bottom: var(--spacing);
489
+ line-height: var(--line-height-lg);
490
+ }
491
+
492
+ p:last-child, h1:last-child, h2:last-child, h3:last-child, h4:last-child, h5:last-child, h6:last-child {
493
+ margin-bottom: 0;
494
+ }
495
+
496
+ strong, b {
497
+ font-weight: var(--font-semibold);
498
+ }
499
+
500
+ em, i {
501
+ font-style: italic;
502
+ }
503
+
504
+ small {
505
+ font-size: var(--text-sm);
506
+ }
507
+
508
+ a {
509
+ color: var(--primary);
510
+ text-underline-offset: .2em;
511
+ transition: color var(--transition-default);
512
+ text-decoration: underline;
513
+
514
+ &:hover {
515
+ color: color-mix(in oklch, var(--primary) 80%, var(--foreground));
516
+ }
517
+
518
+ &:focus-visible {
519
+ outline: var(--outline-width) solid var(--ring);
520
+ outline-offset: var(--outline-offset);
521
+ border-radius: var(--radius-sm);
522
+ }
523
+ }
524
+
525
+ mark {
526
+ background-color: color-mix(in oklch, var(--muted) 40%, transparent);
527
+ color: var(--foreground);
528
+ border-radius: var(--radius-sm);
529
+ padding: .125em .25em;
530
+ }
531
+
532
+ del {
533
+ color: var(--muted-foreground);
534
+ text-decoration: line-through;
535
+ }
536
+
537
+ ins {
538
+ text-decoration: underline wavy;
539
+ text-decoration-color: var(--primary);
540
+ }
541
+
542
+ u {
543
+ text-underline-offset: .2em;
544
+ text-decoration: underline;
545
+ }
546
+
547
+ s {
548
+ text-decoration: line-through;
549
+ }
550
+
551
+ abbr[title] {
552
+ cursor: help;
553
+ text-decoration: underline dotted;
554
+ }
555
+
556
+ cite {
557
+ font-style: italic;
558
+ }
559
+
560
+ dfn {
561
+ font-style: italic;
562
+ font-weight: var(--font-medium);
563
+ }
564
+
565
+ sub, sup {
566
+ vertical-align: baseline;
567
+ font-size: .75em;
568
+ line-height: 0;
569
+ position: relative;
570
+ }
571
+
572
+ sub {
573
+ bottom: -.25em;
574
+ }
575
+
576
+ sup {
577
+ top: -.5em;
578
+ }
579
+
580
+ hr {
581
+ height: var(--border-width);
582
+ background-color: var(--border);
583
+ margin: var(--spacing-lg) 0;
584
+ border: none;
585
+ }
586
+
587
+ blockquote {
588
+ border-left: 4px solid var(--border);
589
+ padding-left: var(--spacing);
590
+ margin: var(--spacing) 0;
591
+ color: var(--muted-foreground);
592
+ font-style: italic;
593
+
594
+ & > p {
595
+ margin-bottom: var(--spacing-sm);
596
+ }
597
+
598
+ & > footer {
599
+ font-size: var(--text-sm);
600
+ color: var(--muted-foreground);
601
+ font-style: normal;
602
+ }
603
+ }
604
+
605
+ ul, ol {
606
+ margin-bottom: var(--spacing);
607
+ padding-left: calc(var(--spacing) * 1.25);
608
+ }
609
+
610
+ ul {
611
+ list-style-type: disc;
612
+ }
613
+
614
+ ol {
615
+ list-style-type: decimal;
616
+ }
617
+
618
+ li {
619
+ line-height: var(--line-height-lg);
620
+ }
621
+
622
+ ul ul, ol ol, ul ol, ol ul {
623
+ margin-top: var(--spacing-xs);
624
+ margin-bottom: 0;
625
+ }
626
+
627
+ dl {
628
+ margin-bottom: var(--spacing);
629
+ }
630
+
631
+ dt {
632
+ font-weight: var(--font-semibold);
633
+ margin-bottom: var(--spacing-xs);
634
+ }
635
+
636
+ dd {
637
+ margin-left: var(--spacing);
638
+ margin-bottom: var(--spacing-md);
639
+ color: var(--muted-foreground);
640
+ }
641
+
642
+ dd:last-child {
643
+ margin-bottom: 0;
644
+ }
645
+
646
+ address {
647
+ margin-bottom: var(--spacing);
648
+ font-style: normal;
649
+ }
650
+
651
+ time {
652
+ font-variant-numeric: tabular-nums;
653
+ }
654
+
655
+ img {
656
+ border-radius: var(--radius-md);
657
+ max-width: 100%;
658
+ height: auto;
659
+ }
660
+
661
+ figure {
662
+ margin: var(--spacing) 0;
663
+
664
+ & > img, & > picture > img, & > video, & > iframe {
665
+ border-radius: var(--radius-lg);
666
+ }
667
+
668
+ & > figcaption {
669
+ font-size: var(--text-sm);
670
+ color: var(--muted-foreground);
671
+ margin-top: var(--spacing-sm);
672
+ text-align: center;
673
+ }
674
+ }
675
+
676
+ figure:has( > table) {
677
+ -webkit-overflow-scrolling: touch;
678
+ overflow-x: auto;
679
+
680
+ & > table {
681
+ margin: 0;
682
+ }
683
+ }
684
+
685
+ picture {
686
+ display: block;
687
+ }
688
+
689
+ video {
690
+ border-radius: var(--radius-lg);
691
+ max-width: 100%;
692
+ height: auto;
693
+ }
694
+
695
+ audio {
696
+ width: 100%;
697
+ }
698
+
699
+ iframe {
700
+ border: var(--border-width) solid var(--border);
701
+ border-radius: var(--radius-lg);
702
+ max-width: 100%;
703
+ }
704
+
705
+ svg {
706
+ fill: currentColor;
707
+ }
708
+
709
+ svg:not([width]) {
710
+ width: 1em;
711
+ height: 1em;
712
+ }
713
+
714
+ object, embed {
715
+ max-width: 100%;
716
+ }
717
+
718
+ canvas {
719
+ display: block;
720
+ }
721
+
722
+ code {
723
+ font-family: var(--font-mono);
724
+ font-size: .875em;
725
+ font-weight: var(--font-medium);
726
+ background-color: var(--muted);
727
+ color: var(--foreground);
728
+ border-radius: var(--radius-sm);
729
+ white-space: nowrap;
730
+ padding: .2em .4em;
731
+ }
732
+
733
+ a > code {
734
+ color: inherit;
735
+ }
736
+
737
+ pre {
738
+ font-family: var(--font-mono);
739
+ font-size: var(--text-sm);
740
+ line-height: var(--line-height-lg);
741
+ background-color: var(--muted);
742
+ color: var(--foreground);
743
+ padding: var(--spacing);
744
+ border-radius: var(--radius-lg);
745
+ -webkit-overflow-scrolling: touch;
746
+ margin-bottom: var(--spacing);
747
+ tab-size: 2;
748
+ overflow-x: auto;
749
+
750
+ & > code {
751
+ font-size: inherit;
752
+ white-space: pre;
753
+ background: none;
754
+ border-radius: 0;
755
+ padding: 0;
756
+ }
757
+ }
758
+
759
+ [data-theme="dark"] pre {
760
+ background-color: oklch(18% 0 0);
761
+ }
762
+
763
+ @media (prefers-color-scheme: dark) {
764
+ :root:not([data-theme="light"]) pre {
765
+ background-color: oklch(18% 0 0);
766
+ }
767
+ }
768
+
769
+ kbd {
770
+ font-family: var(--font-mono);
771
+ font-size: .875em;
772
+ font-weight: var(--font-medium);
773
+ background-color: var(--muted);
774
+ color: var(--foreground);
775
+ border-radius: var(--radius-sm);
776
+ border: var(--border-width) solid var(--border);
777
+ box-shadow: 0 2px 0 var(--border);
778
+ padding: .2em .4em;
779
+ }
780
+
781
+ kbd > kbd {
782
+ box-shadow: none;
783
+ background: none;
784
+ border: none;
785
+ padding: 0;
786
+ }
787
+
788
+ samp {
789
+ font-family: var(--font-mono);
790
+ background-color: var(--muted);
791
+ color: var(--muted-foreground);
792
+ border-radius: var(--radius-sm);
793
+ padding: .2em .4em;
794
+ font-size: .875em;
795
+ }
796
+
797
+ var {
798
+ font-family: var(--font-mono);
799
+ color: var(--primary);
800
+ font-style: italic;
801
+ }
802
+
803
+ data {
804
+ font-variant-numeric: tabular-nums;
805
+ }
806
+ }
807
+
808
+ @layer forms {
809
+ input:where(:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="file"]):not([type="color"]):not([type="submit"]):not([type="reset"]):not([type="button"])), textarea, select {
810
+ width: 100%;
811
+ height: var(--input-height);
812
+ padding: var(--spacing-sm) var(--spacing-md);
813
+ font-family: inherit;
814
+ font-size: var(--text-base);
815
+ font-weight: var(--font-normal);
816
+ line-height: var(--line-height);
817
+ color: var(--foreground);
818
+ background-color: var(--input-background);
819
+ border: var(--border-width) solid var(--input);
820
+ border-radius: var(--input-radius);
821
+ transition: border-color var(--transition-default), box-shadow var(--transition-default);
822
+ appearance: none;
823
+ display: block;
824
+
825
+ &::placeholder {
826
+ color: var(--muted-foreground);
827
+ opacity: 1;
828
+ }
829
+
830
+ &:focus-visible {
831
+ border-color: var(--ring);
832
+ box-shadow: 0 0 0 var(--focus-ring-width) color-mix(in oklch, var(--ring) var(--focus-ring-opacity), transparent);
833
+ outline: none;
834
+ }
835
+
836
+ &:disabled {
837
+ cursor: not-allowed;
838
+ opacity: var(--disabled-opacity);
839
+ background-color: var(--muted);
840
+ border-color: var(--muted-foreground);
841
+ }
842
+ }
843
+
844
+ form:not([role="search"]) :is(button, [type="submit"], [type="reset"], [type="button"]):not(.icon) {
845
+ width: 100%;
846
+ }
847
+
848
+ input:where(:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="file"]):not([type="color"]):not([type="submit"]):not([type="reset"]):not([type="button"])):read-only, textarea:read-only {
849
+ background-color: var(--muted);
850
+ }
851
+
852
+ textarea {
853
+ height: auto;
854
+ min-height: calc(var(--input-height) * 2);
855
+ padding: var(--spacing-md);
856
+ resize: vertical;
857
+ }
858
+
859
+ select {
860
+ line-height: calc(var(--input-height) - 2 * var(--border-width) - 2 * var(--spacing-sm));
861
+ padding-right: var(--spacing-xl);
862
+ background-image: var(--icon-select-chevron);
863
+ background-repeat: no-repeat;
864
+ background-position: right var(--spacing-md) center;
865
+ background-size: var(--icon-size);
866
+
867
+ &[multiple] {
868
+ height: auto;
869
+ padding-right: var(--spacing-md);
870
+ background-image: none;
871
+ }
872
+ }
873
+
874
+ input[type="file"] {
875
+ width: 100%;
876
+ height: var(--input-height);
877
+ padding: 0 var(--spacing-sm);
878
+ font-size: var(--text-sm);
879
+ font-weight: var(--font-medium);
880
+ line-height: calc(var(--input-height) - 2 * var(--border-width));
881
+ color: var(--foreground);
882
+ background-color: var(--input-background);
883
+ border: var(--border-width) solid var(--input);
884
+ border-radius: var(--input-radius);
885
+ cursor: pointer;
886
+ transition: border-color var(--transition-default);
887
+
888
+ &::file-selector-button {
889
+ padding: var(--spacing-xs) var(--spacing-md);
890
+ margin-right: var(--spacing-md);
891
+ font-weight: var(--font-medium);
892
+ color: var(--foreground);
893
+ background-color: var(--accent);
894
+ border-radius: var(--radius-sm);
895
+ cursor: pointer;
896
+ transition: background-color var(--transition-default);
897
+ border: none;
898
+ }
899
+
900
+ &:hover::file-selector-button {
901
+ background-color: color-mix(in oklch, var(--accent) 80%, var(--foreground) 5%);
902
+ }
903
+
904
+ &:focus-visible {
905
+ border-color: var(--ring);
906
+ box-shadow: 0 0 0 var(--focus-ring-width) color-mix(in oklch, var(--ring) var(--focus-ring-opacity), transparent);
907
+ outline: none;
908
+ }
909
+ }
910
+
911
+ input[type="color"] {
912
+ width: 100%;
913
+ height: var(--input-height);
914
+ background-color: var(--input-background);
915
+ border: var(--border-width) solid var(--input);
916
+ border-radius: var(--input-radius);
917
+ cursor: pointer;
918
+ padding: 6px;
919
+
920
+ &::-webkit-color-swatch-wrapper {
921
+ padding: 0;
922
+ }
923
+
924
+ &::-webkit-color-swatch {
925
+ border-radius: var(--radius-sm);
926
+ border: none;
927
+ }
928
+
929
+ &::-moz-color-swatch {
930
+ border-radius: var(--radius-sm);
931
+ border: none;
932
+ }
933
+ }
934
+
935
+ input[type="search"] {
936
+ border-radius: var(--radius-full);
937
+ padding-left: var(--spacing);
938
+ padding-right: var(--spacing);
939
+
940
+ &::-webkit-search-cancel-button {
941
+ -webkit-appearance: none;
942
+ appearance: none;
943
+ }
944
+ }
945
+
946
+ input[type="date"], input[type="datetime-local"], input[type="month"], input[type="time"], input[type="week"] {
947
+ &::-webkit-calendar-picker-indicator {
948
+ cursor: pointer;
949
+ opacity: .6;
950
+ transition: opacity var(--transition-default);
951
+ }
952
+
953
+ &::-webkit-calendar-picker-indicator:hover {
954
+ opacity: 1;
955
+ }
956
+ }
957
+
958
+ label {
959
+ margin-bottom: var(--spacing-sm);
960
+ font-size: var(--text-sm);
961
+ font-weight: var(--font-medium);
962
+ color: var(--foreground);
963
+ display: block;
964
+ }
965
+
966
+ label:has( > input), label:has( > select), label:has( > textarea) {
967
+ display: block;
968
+
969
+ & > input, & > select, & > textarea {
970
+ margin-top: var(--spacing-sm);
971
+ }
972
+ }
973
+
974
+ small {
975
+ margin-top: var(--spacing-xs);
976
+ font-size: var(--text-sm);
977
+ color: var(--muted-foreground);
978
+ display: block;
979
+ }
980
+
981
+ form {
982
+ & > label, & > input, & > textarea, & > select, & > fieldset, & > div, & > p, & > small {
983
+ margin-bottom: var(--spacing);
984
+ }
985
+
986
+ & > :last-child {
987
+ margin-bottom: 0;
988
+ }
989
+ }
990
+
991
+ fieldset {
992
+ margin-bottom: var(--spacing);
993
+ }
994
+
995
+ fieldset:last-child {
996
+ margin-bottom: 0;
997
+ }
998
+
999
+ legend {
1000
+ font-size: var(--text-sm);
1001
+ font-weight: var(--font-semibold);
1002
+ color: var(--foreground);
1003
+ margin-bottom: var(--spacing-md);
1004
+ }
1005
+
1006
+ fieldset:disabled {
1007
+ opacity: var(--disabled-opacity);
1008
+ }
1009
+
1010
+ fieldset:disabled * {
1011
+ cursor: not-allowed;
1012
+ }
1013
+
1014
+ input[type="checkbox"], input[type="radio"] {
1015
+ width: var(--control-size);
1016
+ height: var(--control-size);
1017
+ vertical-align: middle;
1018
+ cursor: pointer;
1019
+ appearance: none;
1020
+ background-color: var(--background);
1021
+ border: var(--border-width) solid var(--input);
1022
+ transition: background-color var(--transition-default), border-color var(--transition-default), box-shadow var(--transition-default);
1023
+ margin: 0;
1024
+ position: relative;
1025
+ }
1026
+
1027
+ input[type="checkbox"] {
1028
+ border-radius: var(--radius-sm);
1029
+ }
1030
+
1031
+ input[type="radio"] {
1032
+ border-radius: var(--radius-full);
1033
+ }
1034
+
1035
+ input[type="checkbox"]:checked, input[type="radio"]:checked {
1036
+ background-color: var(--primary);
1037
+ border-color: var(--primary);
1038
+ }
1039
+
1040
+ input[type="checkbox"]:checked:after {
1041
+ content: "";
1042
+ background-color: var(--primary-foreground);
1043
+ position: absolute;
1044
+ inset: 0;
1045
+ -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E");
1046
+ mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E");
1047
+ -webkit-mask-position: center;
1048
+ mask-position: center;
1049
+ -webkit-mask-size: .875rem;
1050
+ mask-size: .875rem;
1051
+ -webkit-mask-repeat: no-repeat;
1052
+ mask-repeat: no-repeat;
1053
+ }
1054
+
1055
+ input[type="radio"]:checked:after {
1056
+ content: "";
1057
+ background-color: var(--primary-foreground);
1058
+ position: absolute;
1059
+ inset: 0;
1060
+ -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='black'%3E%3Ccircle cx='12' cy='12' r='5'/%3E%3C/svg%3E");
1061
+ mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='black'%3E%3Ccircle cx='12' cy='12' r='5'/%3E%3C/svg%3E");
1062
+ -webkit-mask-position: center;
1063
+ mask-position: center;
1064
+ -webkit-mask-size: .875rem;
1065
+ mask-size: .875rem;
1066
+ -webkit-mask-repeat: no-repeat;
1067
+ mask-repeat: no-repeat;
1068
+ }
1069
+
1070
+ input[type="checkbox"]:indeterminate {
1071
+ background-color: var(--primary);
1072
+ border-color: var(--primary);
1073
+ }
1074
+
1075
+ input[type="checkbox"]:indeterminate:after {
1076
+ content: "";
1077
+ background-color: var(--primary-foreground);
1078
+ position: absolute;
1079
+ inset: 0;
1080
+ -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round'%3E%3Cpath d='M5 12h14'/%3E%3C/svg%3E");
1081
+ mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round'%3E%3Cpath d='M5 12h14'/%3E%3C/svg%3E");
1082
+ -webkit-mask-position: center;
1083
+ mask-position: center;
1084
+ -webkit-mask-size: .875rem;
1085
+ mask-size: .875rem;
1086
+ -webkit-mask-repeat: no-repeat;
1087
+ mask-repeat: no-repeat;
1088
+ }
1089
+
1090
+ input[type="checkbox"]:focus-visible, input[type="radio"]:focus-visible {
1091
+ border-color: var(--ring);
1092
+ box-shadow: 0 0 0 var(--focus-ring-width) color-mix(in oklch, var(--ring) var(--focus-ring-opacity), transparent);
1093
+ outline: none;
1094
+ }
1095
+
1096
+ input[type="checkbox"]:disabled, input[type="radio"]:disabled {
1097
+ cursor: not-allowed;
1098
+ opacity: var(--disabled-opacity);
1099
+ }
1100
+
1101
+ label:has( > input[type="checkbox"]), label:has( > input[type="radio"]) {
1102
+ align-items: center;
1103
+ gap: var(--spacing-sm);
1104
+ margin-bottom: var(--spacing-sm);
1105
+ font-weight: var(--font-normal);
1106
+ cursor: pointer;
1107
+ display: flex;
1108
+
1109
+ & > input {
1110
+ flex-shrink: 0;
1111
+ margin-top: 0;
1112
+ }
1113
+ }
1114
+
1115
+ label:has( > input:disabled), label[aria-disabled="true"] {
1116
+ cursor: not-allowed;
1117
+ opacity: var(--disabled-opacity);
1118
+ }
1119
+
1120
+ input[type="checkbox"][role="switch"] {
1121
+ width: var(--switch-width);
1122
+ height: var(--switch-height);
1123
+ border-radius: var(--radius-full);
1124
+ background-color: var(--muted-foreground);
1125
+ border-color: var(--muted-foreground);
1126
+ transition: background-color var(--transition-default);
1127
+ position: relative;
1128
+ }
1129
+
1130
+ input[type="checkbox"][role="switch"]:before {
1131
+ content: "";
1132
+ width: var(--switch-thumb);
1133
+ height: var(--switch-thumb);
1134
+ background-color: var(--background);
1135
+ border-radius: var(--radius-full);
1136
+ transition: transform var(--transition-default);
1137
+ margin: auto 0;
1138
+ position: absolute;
1139
+ top: 0;
1140
+ bottom: 0;
1141
+ left: 1px;
1142
+ }
1143
+
1144
+ input[type="checkbox"][role="switch"]:checked:after {
1145
+ display: none;
1146
+ }
1147
+
1148
+ input[type="checkbox"][role="switch"]:checked {
1149
+ background-color: var(--primary);
1150
+ border-color: var(--primary);
1151
+ }
1152
+
1153
+ input[type="checkbox"][role="switch"]:checked:before {
1154
+ transform: translateX(calc(var(--switch-width) - var(--switch-thumb) - 2 * var(--border-width) - 2px));
1155
+ }
1156
+
1157
+ input[type="checkbox"][role="switch"]:focus-visible {
1158
+ box-shadow: 0 0 0 var(--focus-ring-width) color-mix(in oklch, var(--ring) var(--focus-ring-opacity), transparent);
1159
+ }
1160
+
1161
+ input[type="range"] {
1162
+ cursor: pointer;
1163
+ appearance: none;
1164
+ background: none;
1165
+ width: 100%;
1166
+ height: 1.5rem;
1167
+ padding: 0;
1168
+ }
1169
+
1170
+ input[type="range"]::-webkit-slider-runnable-track {
1171
+ background-color: var(--muted);
1172
+ border-radius: var(--radius-full);
1173
+ width: 100%;
1174
+ height: .5rem;
1175
+ transition: background-color var(--transition-default);
1176
+ }
1177
+
1178
+ input[type="range"]::-moz-range-track {
1179
+ background-color: var(--muted);
1180
+ border-radius: var(--radius-full);
1181
+ width: 100%;
1182
+ height: .5rem;
1183
+ transition: background-color var(--transition-default);
1184
+ }
1185
+
1186
+ input[type="range"]::-webkit-slider-thumb {
1187
+ width: var(--control-size);
1188
+ height: var(--control-size);
1189
+ margin-top: calc((.5rem - var(--control-size)) / 2);
1190
+ background-color: var(--foreground);
1191
+ border-radius: var(--radius-md);
1192
+ cursor: pointer;
1193
+ appearance: none;
1194
+ transition: background-color var(--transition-default), transform var(--transition-default);
1195
+ border: none;
1196
+ }
1197
+
1198
+ input[type="range"]::-moz-range-thumb {
1199
+ width: var(--control-size);
1200
+ height: var(--control-size);
1201
+ background-color: var(--foreground);
1202
+ border-radius: var(--radius-md);
1203
+ cursor: pointer;
1204
+ transition: background-color var(--transition-default), transform var(--transition-default);
1205
+ border: none;
1206
+ }
1207
+
1208
+ input[type="range"]:hover::-webkit-slider-thumb {
1209
+ background-color: var(--primary);
1210
+ transform: scale(1.1);
1211
+ }
1212
+
1213
+ input[type="range"]:hover::-moz-range-thumb {
1214
+ background-color: var(--primary);
1215
+ transform: scale(1.1);
1216
+ }
1217
+
1218
+ input[type="range"]:active::-webkit-slider-thumb {
1219
+ background-color: var(--primary);
1220
+ transform: scale(1.15);
1221
+ }
1222
+
1223
+ input[type="range"]:active::-moz-range-thumb {
1224
+ background-color: var(--primary);
1225
+ transform: scale(1.15);
1226
+ }
1227
+
1228
+ input[type="range"]:focus-visible {
1229
+ outline: none;
1230
+ }
1231
+
1232
+ input[type="range"]:focus-visible::-webkit-slider-thumb {
1233
+ box-shadow: 0 0 0 var(--focus-ring-width) color-mix(in oklch, var(--ring) var(--focus-ring-opacity), transparent);
1234
+ }
1235
+
1236
+ input[type="range"]:focus-visible::-moz-range-thumb {
1237
+ box-shadow: 0 0 0 var(--focus-ring-width) color-mix(in oklch, var(--ring) var(--focus-ring-opacity), transparent);
1238
+ }
1239
+
1240
+ input[type="range"]:disabled {
1241
+ cursor: not-allowed;
1242
+ opacity: var(--disabled-opacity);
1243
+ }
1244
+
1245
+ input[type="range"]:disabled::-webkit-slider-thumb {
1246
+ cursor: not-allowed;
1247
+ }
1248
+
1249
+ input[type="range"]:disabled::-moz-range-thumb {
1250
+ cursor: not-allowed;
1251
+ }
1252
+
1253
+ label:has( > input[type="range"]) {
1254
+ display: block;
1255
+
1256
+ & > input[type="range"] {
1257
+ margin-top: var(--spacing-sm);
1258
+ }
1259
+ }
1260
+
1261
+ input[aria-invalid="true"], textarea[aria-invalid="true"], select[aria-invalid="true"] {
1262
+ border-color: var(--destructive);
1263
+ }
1264
+
1265
+ input[aria-invalid="false"], textarea[aria-invalid="false"], select[aria-invalid="false"] {
1266
+ border-color: var(--primary);
1267
+ }
1268
+
1269
+ input[aria-invalid="true"] + small, textarea[aria-invalid="true"] + small, select[aria-invalid="true"] + small, input[aria-invalid="true"] ~ small, textarea[aria-invalid="true"] ~ small, select[aria-invalid="true"] ~ small {
1270
+ color: var(--destructive);
1271
+ }
1272
+
1273
+ input[aria-invalid="false"] + small, textarea[aria-invalid="false"] + small, select[aria-invalid="false"] + small, input[aria-invalid="false"] ~ small, textarea[aria-invalid="false"] ~ small, select[aria-invalid="false"] ~ small {
1274
+ color: var(--primary);
1275
+ }
1276
+
1277
+ input[type="checkbox"][aria-invalid="true"], input[type="radio"][aria-invalid="true"] {
1278
+ border-color: var(--destructive);
1279
+ }
1280
+
1281
+ input[type="checkbox"][aria-invalid="false"], input[type="radio"][aria-invalid="false"] {
1282
+ border-color: var(--primary);
1283
+ }
1284
+
1285
+ input:user-invalid:not([type="checkbox"]):not([type="radio"]), textarea:user-invalid {
1286
+ border-color: var(--destructive);
1287
+ }
1288
+
1289
+ input:user-valid:not(:placeholder-shown):not([type="checkbox"]):not([type="radio"]), textarea:user-valid:not(:placeholder-shown) {
1290
+ border-color: var(--primary);
1291
+ }
1292
+
1293
+ label:has( + input:required):after, label:has( + textarea:required):after, label:has( + select:required):after, label:has( > input:required):after, label:has( > textarea:required):after, label:has( > select:required):after {
1294
+ content: " *";
1295
+ color: var(--destructive);
1296
+ }
1297
+
1298
+ details.dropdown[aria-invalid="true"] > summary {
1299
+ border-color: var(--destructive);
1300
+ }
1301
+
1302
+ details.dropdown[aria-invalid="false"] > summary {
1303
+ border-color: var(--primary);
1304
+ }
1305
+ }
1306
+
1307
+ @layer components {
1308
+ :is(button, [type="submit"], [type="reset"], [type="button"], [role="button"]) {
1309
+ justify-content: center;
1310
+ align-items: center;
1311
+ gap: var(--spacing-sm);
1312
+ height: var(--button-height);
1313
+ padding: var(--spacing-sm) var(--spacing);
1314
+ font-family: inherit;
1315
+ font-size: var(--text-sm);
1316
+ font-weight: var(--font-medium);
1317
+ line-height: calc(var(--button-height) - 2 * var(--border-width) - 2 * var(--spacing-sm));
1318
+ text-align: center;
1319
+ white-space: nowrap;
1320
+ vertical-align: middle;
1321
+ cursor: pointer;
1322
+ user-select: none;
1323
+ border: var(--border-width) solid transparent;
1324
+ border-radius: var(--button-radius);
1325
+ transition: color var(--transition-default), background-color var(--transition-default), border-color var(--transition-default), box-shadow var(--transition-default);
1326
+ color: var(--primary-foreground);
1327
+ background-color: var(--primary);
1328
+ box-shadow: var(--button-shadow);
1329
+ text-decoration: none;
1330
+ display: inline-flex;
1331
+
1332
+ &:hover {
1333
+ background-color: color-mix(in oklch, var(--primary) var(--hover-opacity), transparent);
1334
+ }
1335
+
1336
+ &:active {
1337
+ background-color: color-mix(in oklch, var(--primary) var(--active-opacity), transparent);
1338
+ }
1339
+
1340
+ &:focus-visible {
1341
+ box-shadow: var(--button-shadow), 0 0 0 var(--focus-ring-width) color-mix(in oklch, var(--ring) var(--focus-ring-opacity), transparent);
1342
+ outline: none;
1343
+ }
1344
+
1345
+ &:disabled, &[aria-disabled="true"] {
1346
+ pointer-events: none;
1347
+ opacity: var(--disabled-opacity);
1348
+ cursor: not-allowed;
1349
+ }
1350
+
1351
+ & > svg {
1352
+ width: var(--icon-size);
1353
+ height: var(--icon-size);
1354
+ flex-shrink: 0;
1355
+ }
1356
+ }
1357
+
1358
+ [type="reset"] {
1359
+ color: var(--foreground);
1360
+ background-color: var(--accent);
1361
+
1362
+ &:hover {
1363
+ background-color: color-mix(in oklch, var(--accent) 80%, var(--foreground) 5%);
1364
+ }
1365
+ }
1366
+
1367
+ a[role="button"] {
1368
+ text-decoration: none;
1369
+ }
1370
+
1371
+ :is(button, [type="submit"], [type="button"], [role="button"]).secondary {
1372
+ color: var(--foreground);
1373
+ background-color: var(--accent);
1374
+
1375
+ &:hover {
1376
+ background-color: color-mix(in oklch, var(--accent) 80%, var(--foreground) 5%);
1377
+ }
1378
+
1379
+ &:active {
1380
+ background-color: color-mix(in oklch, var(--accent) 70%, var(--foreground) 10%);
1381
+ }
1382
+ }
1383
+
1384
+ :is(button, [role="button"]).destructive {
1385
+ color: var(--destructive-foreground);
1386
+ background-color: var(--destructive);
1387
+
1388
+ &:hover {
1389
+ background-color: color-mix(in oklch, var(--destructive) var(--hover-opacity), transparent);
1390
+ }
1391
+
1392
+ &:active {
1393
+ background-color: color-mix(in oklch, var(--destructive) var(--active-opacity), transparent);
1394
+ }
1395
+
1396
+ &:focus-visible {
1397
+ box-shadow: var(--button-shadow), 0 0 0 var(--focus-ring-width) color-mix(in oklch, var(--destructive) var(--focus-ring-opacity), transparent);
1398
+ }
1399
+ }
1400
+
1401
+ :is(button, [type="submit"], [type="button"], [role="button"]).outline {
1402
+ color: var(--primary);
1403
+ background-color: var(--background);
1404
+ border-color: var(--primary);
1405
+
1406
+ &:hover {
1407
+ background-color: var(--primary);
1408
+ color: var(--primary-foreground);
1409
+ }
1410
+
1411
+ &:focus-visible {
1412
+ box-shadow: var(--button-shadow), 0 0 0 var(--focus-ring-width) color-mix(in oklch, var(--primary) var(--focus-ring-opacity), transparent);
1413
+ }
1414
+ }
1415
+
1416
+ :is(button, [role="button"]).outline.secondary {
1417
+ color: var(--foreground);
1418
+ border-color: var(--border);
1419
+
1420
+ &:hover {
1421
+ background-color: var(--accent);
1422
+ }
1423
+ }
1424
+
1425
+ :is(button, [role="button"]).ghost {
1426
+ color: var(--foreground);
1427
+ box-shadow: none;
1428
+ background-color: #0000;
1429
+
1430
+ &:hover {
1431
+ background-color: var(--accent);
1432
+ color: var(--accent-foreground);
1433
+ }
1434
+ }
1435
+
1436
+ :is(button, [role="button"]).link {
1437
+ color: var(--primary);
1438
+ box-shadow: none;
1439
+ text-underline-offset: 4px;
1440
+ background-color: #0000;
1441
+
1442
+ &:hover {
1443
+ text-decoration: underline;
1444
+ }
1445
+ }
1446
+
1447
+ :is(button, [role="button"])[aria-current="true"] {
1448
+ background-color: var(--primary);
1449
+ color: var(--primary-foreground);
1450
+ border-color: var(--primary);
1451
+
1452
+ &:hover {
1453
+ background-color: color-mix(in oklch, var(--primary) var(--hover-opacity), transparent);
1454
+ }
1455
+ }
1456
+
1457
+ :is(button, [role="button"]).small {
1458
+ height: var(--button-height-sm);
1459
+ padding: var(--spacing-xs) var(--spacing-md);
1460
+ line-height: calc(var(--button-height-sm) - 2 * var(--border-width) - 2 * var(--spacing-xs));
1461
+ }
1462
+
1463
+ :is(button, [role="button"]).large {
1464
+ height: var(--button-height-lg);
1465
+ padding: var(--spacing-sm) var(--spacing-xl);
1466
+ line-height: calc(var(--button-height-lg) - 2 * var(--border-width) - 2 * var(--spacing-sm));
1467
+ }
1468
+
1469
+ :is(button, [role="button"]).icon {
1470
+ width: var(--button-height);
1471
+ padding: 0;
1472
+ }
1473
+
1474
+ :is(button, [role="button"]).icon.small {
1475
+ width: var(--button-height-sm);
1476
+ }
1477
+
1478
+ :is(button, [role="button"]).icon.large {
1479
+ width: var(--button-height-lg);
1480
+ }
1481
+
1482
+ :is(button, [role="button"]).full-width {
1483
+ width: 100%;
1484
+ }
1485
+
1486
+ table {
1487
+ border-collapse: collapse;
1488
+ width: 100%;
1489
+ margin-bottom: var(--spacing);
1490
+ font-size: var(--text-sm);
1491
+ font-variant-numeric: tabular-nums;
1492
+ }
1493
+
1494
+ thead {
1495
+ border-bottom: var(--border-width) solid var(--border);
1496
+ }
1497
+
1498
+ th {
1499
+ height: 2.5rem;
1500
+ padding: var(--spacing-sm);
1501
+ font-weight: var(--font-medium);
1502
+ text-align: left;
1503
+ color: var(--muted-foreground);
1504
+ background-color: #0000;
1505
+ }
1506
+
1507
+ tbody tr {
1508
+ border-bottom: var(--border-width) solid var(--border);
1509
+ transition: background-color var(--transition-default);
1510
+ }
1511
+
1512
+ tbody tr:last-child {
1513
+ border-bottom: none;
1514
+ }
1515
+
1516
+ tbody tr:hover {
1517
+ background-color: color-mix(in oklch, var(--muted) 50%, transparent);
1518
+ }
1519
+
1520
+ td {
1521
+ padding: var(--spacing-sm);
1522
+ vertical-align: middle;
1523
+ }
1524
+
1525
+ tfoot {
1526
+ border-top: var(--border-width) solid var(--border);
1527
+ }
1528
+
1529
+ tfoot td, tfoot th {
1530
+ padding: var(--spacing-sm);
1531
+ font-weight: var(--font-medium);
1532
+ color: var(--muted-foreground);
1533
+ }
1534
+
1535
+ table.striped tbody tr:nth-child(odd) {
1536
+ background-color: color-mix(in oklch, var(--muted) 30%, transparent);
1537
+ }
1538
+
1539
+ table.striped tbody tr:nth-child(odd):hover {
1540
+ background-color: color-mix(in oklch, var(--muted) 60%, transparent);
1541
+ }
1542
+
1543
+ caption {
1544
+ padding: var(--spacing-md) 0;
1545
+ font-size: var(--text-sm);
1546
+ color: var(--muted-foreground);
1547
+ text-align: left;
1548
+ caption-side: bottom;
1549
+ }
1550
+
1551
+ figure > table, .overflow-auto > table, figure > table {
1552
+ margin-bottom: 0;
1553
+ }
1554
+
1555
+ th[aria-sort] {
1556
+ cursor: pointer;
1557
+ user-select: none;
1558
+ }
1559
+
1560
+ th[aria-sort]:after {
1561
+ content: "";
1562
+ width: .75em;
1563
+ height: .75em;
1564
+ margin-left: var(--spacing-xs);
1565
+ vertical-align: middle;
1566
+ opacity: .5;
1567
+ display: inline-block;
1568
+ }
1569
+
1570
+ th[aria-sort="ascending"]:after {
1571
+ content: "↑";
1572
+ opacity: 1;
1573
+ }
1574
+
1575
+ th[aria-sort="descending"]:after {
1576
+ content: "↓";
1577
+ opacity: 1;
1578
+ }
1579
+
1580
+ article {
1581
+ padding: var(--spacing-lg);
1582
+ background-color: var(--card);
1583
+ color: var(--card-foreground);
1584
+ border: var(--border-width) solid var(--border);
1585
+ border-radius: var(--card-radius);
1586
+ box-shadow: var(--card-shadow);
1587
+ margin-bottom: var(--spacing);
1588
+ }
1589
+
1590
+ article:last-child {
1591
+ margin-bottom: 0;
1592
+ }
1593
+
1594
+ article > header {
1595
+ margin-bottom: var(--spacing);
1596
+ padding: 0;
1597
+
1598
+ &:last-child {
1599
+ margin-bottom: 0;
1600
+ }
1601
+ }
1602
+
1603
+ article > header > strong, article > header > h1, article > header > h2, article > header > h3, article > header > h4, article > header > h5, article > header > h6 {
1604
+ margin-bottom: var(--spacing-xs);
1605
+ font-size: var(--text-lg);
1606
+ font-weight: var(--font-semibold);
1607
+ line-height: var(--line-height-sm);
1608
+ }
1609
+
1610
+ article > header > small, article > header > p {
1611
+ color: var(--muted-foreground);
1612
+ font-size: var(--text-sm);
1613
+ margin-bottom: 0;
1614
+ }
1615
+
1616
+ article > footer {
1617
+ margin-top: var(--spacing);
1618
+ align-items: center;
1619
+ gap: var(--spacing-sm);
1620
+ padding: 0;
1621
+ display: flex;
1622
+
1623
+ &:first-child {
1624
+ margin-top: 0;
1625
+ }
1626
+ }
1627
+
1628
+ article article {
1629
+ background-color: var(--muted);
1630
+ box-shadow: none;
1631
+ border: none;
1632
+ }
1633
+
1634
+ .grid > article {
1635
+ margin-bottom: 0;
1636
+ }
1637
+
1638
+ a:has( > article) {
1639
+ color: inherit;
1640
+ border-radius: var(--card-radius);
1641
+ transition: box-shadow var(--transition-default);
1642
+ text-decoration: none;
1643
+ display: block;
1644
+
1645
+ &:hover > article {
1646
+ border-color: color-mix(in oklch, var(--border) 80%, var(--foreground));
1647
+ }
1648
+
1649
+ &:focus-visible {
1650
+ outline: var(--outline-width) solid var(--ring);
1651
+ outline-offset: var(--outline-offset);
1652
+ }
1653
+ }
1654
+
1655
+ article[aria-busy="true"] {
1656
+ min-height: 8rem;
1657
+ }
1658
+
1659
+ details {
1660
+ margin-bottom: var(--spacing-sm);
1661
+ border-bottom: var(--border-width) solid var(--border);
1662
+ }
1663
+
1664
+ details:last-child {
1665
+ margin-bottom: 0;
1666
+ }
1667
+
1668
+ summary {
1669
+ padding: var(--spacing) 0;
1670
+ font-weight: var(--font-medium);
1671
+ cursor: pointer;
1672
+ user-select: none;
1673
+ transition: color var(--transition-default);
1674
+ justify-content: space-between;
1675
+ align-items: center;
1676
+ list-style: none;
1677
+ display: flex;
1678
+
1679
+ &::-webkit-details-marker {
1680
+ display: none;
1681
+ }
1682
+
1683
+ &:after {
1684
+ content: "";
1685
+ width: var(--icon-size);
1686
+ height: var(--icon-size);
1687
+ margin-left: var(--spacing-sm);
1688
+ mask-image: var(--icon-chevron);
1689
+ transition: transform var(--transition-default);
1690
+ background-color: currentColor;
1691
+ flex-shrink: 0;
1692
+ mask-position: center;
1693
+ mask-size: contain;
1694
+ mask-repeat: no-repeat;
1695
+ }
1696
+
1697
+ &:hover {
1698
+ color: var(--primary);
1699
+ }
1700
+
1701
+ &:focus-visible {
1702
+ outline: var(--outline-width) solid var(--ring);
1703
+ outline-offset: var(--outline-offset);
1704
+ border-radius: var(--radius-sm);
1705
+ }
1706
+ }
1707
+
1708
+ details[open] > summary:not([role="button"]) {
1709
+ color: var(--primary);
1710
+ }
1711
+
1712
+ details[open] > summary {
1713
+ &:after {
1714
+ transform: rotate(180deg);
1715
+ }
1716
+ }
1717
+
1718
+ details > :not(summary) {
1719
+ padding-bottom: var(--spacing-md);
1720
+ }
1721
+
1722
+ details > p:last-child {
1723
+ margin-bottom: 0;
1724
+ }
1725
+
1726
+ summary[role="button"] {
1727
+ justify-content: space-between;
1728
+ align-items: center;
1729
+ gap: var(--spacing-sm);
1730
+ width: 100%;
1731
+ height: var(--button-height);
1732
+ padding: var(--spacing-sm) var(--spacing);
1733
+ font-size: var(--text-sm);
1734
+ font-weight: var(--font-medium);
1735
+ color: var(--primary-foreground);
1736
+ background-color: var(--primary);
1737
+ border-radius: var(--radius-md);
1738
+ box-shadow: var(--button-shadow);
1739
+ transition: background-color var(--transition-default);
1740
+ display: flex;
1741
+
1742
+ &:hover {
1743
+ background-color: color-mix(in oklch, var(--primary) var(--hover-opacity), transparent);
1744
+ }
1745
+ }
1746
+
1747
+ summary[role="button"].secondary {
1748
+ color: var(--foreground);
1749
+ background-color: var(--accent);
1750
+
1751
+ &:hover {
1752
+ background-color: color-mix(in oklch, var(--accent) 80%, var(--foreground) 5%);
1753
+ }
1754
+ }
1755
+
1756
+ summary[role="button"].outline {
1757
+ color: var(--primary);
1758
+ background-color: var(--background);
1759
+ border: var(--border-width) solid var(--primary);
1760
+
1761
+ &:hover {
1762
+ background-color: var(--primary);
1763
+ color: var(--primary-foreground);
1764
+ }
1765
+ }
1766
+
1767
+ summary[role="button"].destructive {
1768
+ color: var(--destructive-foreground);
1769
+ background-color: var(--destructive);
1770
+
1771
+ &:hover {
1772
+ background-color: color-mix(in oklch, var(--destructive) var(--hover-opacity), transparent);
1773
+ }
1774
+ }
1775
+
1776
+ details:has( > summary[role="button"]) {
1777
+ margin-bottom: var(--spacing);
1778
+ border-bottom: none;
1779
+ }
1780
+
1781
+ details.dropdown {
1782
+ border-bottom: none;
1783
+ margin-bottom: 0;
1784
+ display: inline-block;
1785
+ position: relative;
1786
+ }
1787
+
1788
+ details.dropdown > summary {
1789
+ justify-content: space-between;
1790
+ align-items: center;
1791
+ gap: var(--spacing-sm);
1792
+ height: var(--input-height);
1793
+ padding: var(--spacing-sm) var(--spacing-md);
1794
+ font-size: var(--text-sm);
1795
+ font-weight: var(--font-medium);
1796
+ color: var(--foreground);
1797
+ background-color: var(--background);
1798
+ border: var(--border-width) solid var(--input);
1799
+ border-radius: var(--dropdown-radius);
1800
+ cursor: pointer;
1801
+ transition: border-color var(--transition-default), background-color var(--transition-default);
1802
+ display: inline-flex;
1803
+
1804
+ &:after {
1805
+ content: "";
1806
+ width: var(--icon-size);
1807
+ height: var(--icon-size);
1808
+ mask-image: var(--icon-chevron);
1809
+ transition: transform var(--transition-default);
1810
+ background-color: currentColor;
1811
+ mask-position: center;
1812
+ mask-size: contain;
1813
+ mask-repeat: no-repeat;
1814
+ }
1815
+
1816
+ &:hover {
1817
+ border-color: var(--ring);
1818
+ }
1819
+ }
1820
+
1821
+ details.dropdown[open] > summary {
1822
+ border-color: var(--ring);
1823
+
1824
+ &:after {
1825
+ transform: rotate(180deg);
1826
+ }
1827
+ }
1828
+
1829
+ details.dropdown > ul {
1830
+ z-index: 50;
1831
+ min-width: 10rem;
1832
+ margin: 0;
1833
+ margin-top: var(--spacing-xs);
1834
+ padding: var(--spacing-xs);
1835
+ background-color: var(--popover);
1836
+ border: var(--border-width) solid var(--border);
1837
+ border-radius: var(--dropdown-radius);
1838
+ box-shadow: var(--dropdown-shadow);
1839
+ opacity: 0;
1840
+ animation: dropdown-in var(--transition-default) forwards;
1841
+ list-style: none;
1842
+ position: absolute;
1843
+ transform: translateY(-.5rem);
1844
+ }
1845
+
1846
+ @keyframes dropdown-in {
1847
+ to {
1848
+ opacity: 1;
1849
+ transform: translateY(0);
1850
+ }
1851
+ }
1852
+
1853
+ details.dropdown > ul > li {
1854
+ margin: 0;
1855
+ }
1856
+
1857
+ details.dropdown > ul > li > a, details.dropdown > ul > li > label {
1858
+ align-items: center;
1859
+ gap: var(--spacing-sm);
1860
+ padding: var(--spacing-sm) var(--spacing-md);
1861
+ font-size: var(--text-sm);
1862
+ color: var(--popover-foreground);
1863
+ border-radius: var(--radius-sm);
1864
+ cursor: pointer;
1865
+ transition: background-color var(--transition-default);
1866
+ text-decoration: none;
1867
+ display: flex;
1868
+
1869
+ &:hover {
1870
+ background-color: var(--accent);
1871
+ color: var(--accent-foreground);
1872
+ }
1873
+ }
1874
+
1875
+ details.dropdown > ul[dir="rtl"] {
1876
+ text-align: left;
1877
+ direction: ltr;
1878
+ right: 0;
1879
+ }
1880
+
1881
+ details.dropdown > summary[role="button"] {
1882
+ border-color: #0000;
1883
+ }
1884
+
1885
+ details.dropdown > ul label:has(input[type="checkbox"]), details.dropdown > ul label:has(input[type="radio"]) {
1886
+ margin-bottom: 0;
1887
+ }
1888
+
1889
+ dialog {
1890
+ z-index: 100;
1891
+ width: 100%;
1892
+ max-width: 100%;
1893
+ height: 100%;
1894
+ max-height: 100%;
1895
+ padding: var(--spacing);
1896
+ background-color: #0000;
1897
+ border: none;
1898
+ justify-content: center;
1899
+ align-items: center;
1900
+ display: flex;
1901
+ position: fixed;
1902
+ inset: 0;
1903
+ overflow: auto;
1904
+ }
1905
+
1906
+ dialog::backdrop {
1907
+ background-color: var(--modal-overlay);
1908
+ backdrop-filter: blur(4px);
1909
+ }
1910
+
1911
+ dialog:not([open]):not(:popover-open) {
1912
+ display: none;
1913
+ }
1914
+
1915
+ dialog[popover] {
1916
+ margin: auto;
1917
+ }
1918
+
1919
+ dialog[popover]:popover-open {
1920
+ display: flex;
1921
+ }
1922
+
1923
+ dialog > article {
1924
+ width: 100%;
1925
+ max-width: 32rem;
1926
+ max-height: calc(100vh - var(--spacing-xl));
1927
+ padding: var(--spacing-lg);
1928
+ background-color: var(--card);
1929
+ border: var(--border-width) solid var(--border);
1930
+ border-radius: var(--modal-radius);
1931
+ box-shadow: var(--modal-shadow);
1932
+ animation: modal-in var(--transition-slow) var(--ease-default);
1933
+ margin: 0;
1934
+ position: relative;
1935
+ overflow: auto;
1936
+ }
1937
+
1938
+ @keyframes modal-in {
1939
+ from {
1940
+ opacity: 0;
1941
+ transform: scale(.95)translateY(-1rem);
1942
+ }
1943
+
1944
+ to {
1945
+ opacity: 1;
1946
+ transform: scale(1)translateY(0);
1947
+ }
1948
+ }
1949
+
1950
+ dialog > article > header {
1951
+ margin-bottom: var(--spacing-sm);
1952
+ padding: 0;
1953
+ display: block;
1954
+ }
1955
+
1956
+ dialog > article > header > p {
1957
+ margin: 0;
1958
+ }
1959
+
1960
+ dialog > article > header > strong, dialog > article > header > p > strong {
1961
+ font-size: var(--text-lg);
1962
+ font-weight: var(--font-semibold);
1963
+ color: var(--foreground);
1964
+ }
1965
+
1966
+ dialog > article > button[aria-label="Close"], dialog > article > header > button[aria-label="Close"], dialog > article > button[rel="prev"], dialog > article > header > button[rel="prev"] {
1967
+ top: var(--spacing);
1968
+ right: var(--spacing);
1969
+ width: 2rem;
1970
+ height: 2rem;
1971
+ color: var(--muted-foreground);
1972
+ border-radius: var(--radius-sm);
1973
+ box-shadow: none;
1974
+ cursor: pointer;
1975
+ transition: background-color var(--transition-default), color var(--transition-default);
1976
+ background-color: #0000;
1977
+ border: none;
1978
+ padding: 0;
1979
+ position: absolute;
1980
+
1981
+ &:hover {
1982
+ background-color: var(--accent);
1983
+ color: var(--accent-foreground);
1984
+ }
1985
+
1986
+ &:before {
1987
+ content: "✕";
1988
+ font-size: var(--text-base);
1989
+ }
1990
+ }
1991
+
1992
+ dialog > article > p, dialog > article > div {
1993
+ margin-bottom: var(--spacing-sm);
1994
+ padding: 0;
1995
+ }
1996
+
1997
+ dialog > article > p:last-child, dialog > article > div:last-child {
1998
+ margin-bottom: 0;
1999
+ }
2000
+
2001
+ dialog > article > footer {
2002
+ justify-content: flex-end;
2003
+ align-items: center;
2004
+ gap: var(--spacing-sm);
2005
+ margin-top: var(--spacing-sm);
2006
+ padding: 0;
2007
+ display: flex;
2008
+ }
2009
+
2010
+ html.modal-is-open {
2011
+ pointer-events: none;
2012
+ touch-action: none;
2013
+ overflow: hidden;
2014
+ }
2015
+
2016
+ html.modal-is-open dialog {
2017
+ pointer-events: auto;
2018
+ }
2019
+
2020
+ html.modal-is-opening dialog > article {
2021
+ animation: modal-in var(--transition-slow) var(--ease-default);
2022
+ }
2023
+
2024
+ html.modal-is-closing dialog::backdrop {
2025
+ animation: backdrop-out var(--transition-default) forwards;
2026
+ }
2027
+
2028
+ html.modal-is-closing dialog > article {
2029
+ animation: modal-out var(--transition-default) forwards;
2030
+ }
2031
+
2032
+ @keyframes backdrop-out {
2033
+ to {
2034
+ opacity: 0;
2035
+ }
2036
+ }
2037
+
2038
+ @keyframes modal-out {
2039
+ to {
2040
+ opacity: 0;
2041
+ transform: scale(.95)translateY(-1rem);
2042
+ }
2043
+ }
2044
+
2045
+ nav {
2046
+ justify-content: space-between;
2047
+ align-items: center;
2048
+ gap: var(--spacing);
2049
+ flex-wrap: wrap;
2050
+ display: flex;
2051
+ }
2052
+
2053
+ nav > ul {
2054
+ align-items: center;
2055
+ gap: var(--spacing-xs);
2056
+ flex-wrap: wrap;
2057
+ margin: 0;
2058
+ padding: 0;
2059
+ list-style: none;
2060
+ display: flex;
2061
+ }
2062
+
2063
+ nav > ul > li {
2064
+ line-height: var(--line-height);
2065
+ margin: 0;
2066
+ }
2067
+
2068
+ nav a {
2069
+ padding: var(--spacing-sm) var(--spacing-md);
2070
+ font-size: var(--text-sm);
2071
+ font-weight: var(--font-medium);
2072
+ color: var(--muted-foreground);
2073
+ border-radius: var(--radius-md);
2074
+ transition: color var(--transition-default), background-color var(--transition-default);
2075
+ align-items: center;
2076
+ text-decoration: none;
2077
+ display: inline-flex;
2078
+
2079
+ &:hover {
2080
+ color: var(--foreground);
2081
+ background-color: var(--muted);
2082
+ }
2083
+ }
2084
+
2085
+ nav a[aria-current="page"], nav a[aria-current="true"] {
2086
+ color: var(--foreground);
2087
+ background-color: var(--muted);
2088
+ }
2089
+
2090
+ nav strong {
2091
+ font-size: var(--text-lg);
2092
+ font-weight: var(--font-semibold);
2093
+ color: var(--foreground);
2094
+ }
2095
+
2096
+ nav button {
2097
+ height: var(--button-height-sm);
2098
+ font-size: var(--text-sm);
2099
+ }
2100
+
2101
+ nav details.dropdown > summary {
2102
+ height: auto;
2103
+ padding: var(--spacing-sm) var(--spacing-md);
2104
+ color: var(--muted-foreground);
2105
+ background-color: #0000;
2106
+ border: none;
2107
+
2108
+ &:hover {
2109
+ color: var(--foreground);
2110
+ background-color: var(--muted);
2111
+ }
2112
+ }
2113
+
2114
+ nav details.dropdown > ul {
2115
+ right: 0;
2116
+ }
2117
+
2118
+ nav[aria-label="breadcrumb"] > ul {
2119
+ gap: 0;
2120
+ }
2121
+
2122
+ nav[aria-label="breadcrumb"] > ul > li {
2123
+ align-items: center;
2124
+ display: flex;
2125
+ }
2126
+
2127
+ nav[aria-label="breadcrumb"] > ul > li:not(:last-child):after {
2128
+ content: var(--breadcrumb-divider);
2129
+ padding: 0 var(--spacing-sm);
2130
+ color: var(--muted-foreground);
2131
+ }
2132
+
2133
+ nav[aria-label="breadcrumb"] a {
2134
+ padding: var(--spacing-xs) 0;
2135
+ color: var(--muted-foreground);
2136
+ background-color: #0000;
2137
+ border-radius: 0;
2138
+
2139
+ &:hover {
2140
+ color: var(--foreground);
2141
+ background-color: #0000;
2142
+ text-decoration: underline;
2143
+ }
2144
+ }
2145
+
2146
+ nav[aria-label="breadcrumb"] > ul > li:last-child {
2147
+ color: var(--foreground);
2148
+ font-weight: var(--font-medium);
2149
+ }
2150
+
2151
+ @media (width <= 768px) {
2152
+ nav {
2153
+ flex-direction: column;
2154
+ align-items: stretch;
2155
+ }
2156
+
2157
+ nav > ul {
2158
+ justify-content: center;
2159
+ }
2160
+ }
2161
+
2162
+ progress {
2163
+ width: 100%;
2164
+ height: var(--spacing-sm);
2165
+ margin-bottom: var(--spacing-sm);
2166
+ background-color: var(--muted);
2167
+ border-radius: var(--progress-radius);
2168
+ appearance: none;
2169
+ border: none;
2170
+ display: block;
2171
+ overflow: hidden;
2172
+ }
2173
+
2174
+ progress:last-child {
2175
+ margin-bottom: 0;
2176
+ }
2177
+
2178
+ progress::-webkit-progress-bar {
2179
+ background-color: var(--muted);
2180
+ border-radius: var(--progress-radius);
2181
+ }
2182
+
2183
+ progress::-webkit-progress-value {
2184
+ background-color: var(--primary);
2185
+ border-radius: var(--progress-radius);
2186
+ transition: width var(--transition-slow) var(--ease-default);
2187
+ }
2188
+
2189
+ progress::-moz-progress-bar {
2190
+ background-color: var(--primary);
2191
+ border-radius: var(--progress-radius);
2192
+ }
2193
+
2194
+ progress:not([value]) {
2195
+ background: linear-gradient(90deg, var(--muted) 0%, var(--muted) 40%, var(--primary) 50%, var(--muted) 60%, var(--muted) 100%);
2196
+ background-size: 200% 100%;
2197
+ animation: 1.5s linear infinite progress-indeterminate;
2198
+ position: relative;
2199
+ }
2200
+
2201
+ progress:not([value])::-webkit-progress-bar {
2202
+ background: none;
2203
+ }
2204
+
2205
+ progress:not([value])::-moz-progress-bar {
2206
+ background: none;
2207
+ }
2208
+
2209
+ @keyframes progress-indeterminate {
2210
+ 0% {
2211
+ background-position: 200% 0;
2212
+ }
2213
+
2214
+ 100% {
2215
+ background-position: -200% 0;
2216
+ }
2217
+ }
2218
+
2219
+ progress.secondary::-webkit-progress-value {
2220
+ background-color: var(--muted-foreground);
2221
+ }
2222
+
2223
+ progress.secondary::-moz-progress-bar {
2224
+ background-color: var(--muted-foreground);
2225
+ }
2226
+
2227
+ progress.secondary:not([value]) {
2228
+ background: linear-gradient(90deg, var(--muted) 0%, var(--muted) 40%, var(--muted-foreground) 50%, var(--muted) 60%, var(--muted) 100%);
2229
+ background-size: 200% 100%;
2230
+ }
2231
+
2232
+ progress.success::-webkit-progress-value {
2233
+ background-color: var(--success);
2234
+ }
2235
+
2236
+ progress.success::-moz-progress-bar {
2237
+ background-color: var(--success);
2238
+ }
2239
+
2240
+ progress.success:not([value]) {
2241
+ background: linear-gradient(90deg, var(--muted) 0%, var(--muted) 40%, var(--success) 50%, var(--muted) 60%, var(--muted) 100%);
2242
+ background-size: 200% 100%;
2243
+ }
2244
+
2245
+ progress.warning::-webkit-progress-value {
2246
+ background-color: var(--warning);
2247
+ }
2248
+
2249
+ progress.warning::-moz-progress-bar {
2250
+ background-color: var(--warning);
2251
+ }
2252
+
2253
+ progress.warning:not([value]) {
2254
+ background: linear-gradient(90deg, var(--muted) 0%, var(--muted) 40%, var(--warning) 50%, var(--muted) 60%, var(--muted) 100%);
2255
+ background-size: 200% 100%;
2256
+ }
2257
+
2258
+ progress.destructive::-webkit-progress-value {
2259
+ background-color: var(--destructive);
2260
+ }
2261
+
2262
+ progress.destructive::-moz-progress-bar {
2263
+ background-color: var(--destructive);
2264
+ }
2265
+
2266
+ progress.destructive:not([value]) {
2267
+ background: linear-gradient(90deg, var(--muted) 0%, var(--muted) 40%, var(--destructive) 50%, var(--muted) 60%, var(--muted) 100%);
2268
+ background-size: 200% 100%;
2269
+ }
2270
+
2271
+ label:has( > progress) {
2272
+ display: block;
2273
+
2274
+ & > progress {
2275
+ margin-top: var(--spacing-sm);
2276
+ }
2277
+ }
2278
+
2279
+ @keyframes spin {
2280
+ to {
2281
+ transform: rotate(360deg);
2282
+ }
2283
+ }
2284
+
2285
+ [aria-busy="true"] {
2286
+ pointer-events: none;
2287
+ position: relative;
2288
+ }
2289
+
2290
+ [aria-busy="true"]:empty:before, button[aria-busy="true"]:not(:has(*)):before {
2291
+ content: "";
2292
+ width: 1.5rem;
2293
+ height: 1.5rem;
2294
+ margin: var(--spacing) auto;
2295
+ border: 2px solid var(--muted);
2296
+ border-top-color: var(--primary);
2297
+ border-radius: var(--radius-full);
2298
+ animation: .75s linear infinite spin;
2299
+ display: block;
2300
+ }
2301
+
2302
+ [aria-busy="true"]:not(:empty):before {
2303
+ content: "";
2304
+ width: 1rem;
2305
+ height: 1rem;
2306
+ margin-right: var(--spacing-sm);
2307
+ vertical-align: middle;
2308
+ border-radius: var(--radius-full);
2309
+ opacity: .7;
2310
+ border: 2px solid;
2311
+ border-top-color: #0000;
2312
+ animation: .75s linear infinite spin;
2313
+ display: inline-block;
2314
+ }
2315
+
2316
+ button[aria-busy="true"] {
2317
+ cursor: wait;
2318
+ opacity: .8;
2319
+ }
2320
+
2321
+ button[aria-busy="true"]:before {
2322
+ width: 1rem;
2323
+ height: 1rem;
2324
+ margin-right: var(--spacing-sm);
2325
+ border-width: 2px;
2326
+ }
2327
+
2328
+ button[aria-busy="true"][aria-label]:before {
2329
+ margin-right: 0;
2330
+ }
2331
+
2332
+ article[aria-busy="true"] {
2333
+ justify-content: center;
2334
+ align-items: center;
2335
+ min-height: 10rem;
2336
+ display: flex;
2337
+ }
2338
+
2339
+ article[aria-busy="true"]:before {
2340
+ border-width: 3px;
2341
+ width: 2rem;
2342
+ height: 2rem;
2343
+ margin: 0;
2344
+ }
2345
+
2346
+ span[aria-busy="true"]:before, p[aria-busy="true"]:before {
2347
+ width: .875rem;
2348
+ height: .875rem;
2349
+ }
2350
+
2351
+ tr[aria-busy="true"] {
2352
+ opacity: .5;
2353
+ }
2354
+
2355
+ form[aria-busy="true"] {
2356
+ opacity: .7;
2357
+ }
2358
+
2359
+ form[aria-busy="true"]:before {
2360
+ margin: 0;
2361
+ position: absolute;
2362
+ top: 50%;
2363
+ left: 50%;
2364
+ transform: translate(-50%, -50%);
2365
+ }
2366
+
2367
+ [data-tooltip] {
2368
+ cursor: help;
2369
+ position: relative;
2370
+ }
2371
+
2372
+ [data-tooltip]:before {
2373
+ content: attr(data-tooltip);
2374
+ z-index: 50;
2375
+ padding: var(--spacing-sm) var(--spacing-md);
2376
+ font-size: var(--text-xs);
2377
+ font-weight: var(--font-medium);
2378
+ line-height: var(--line-height-sm);
2379
+ color: var(--background);
2380
+ background-color: var(--foreground);
2381
+ border-radius: var(--tooltip-radius);
2382
+ white-space: nowrap;
2383
+ pointer-events: none;
2384
+ opacity: 0;
2385
+ transition: opacity var(--transition-fast) var(--ease-default);
2386
+ position: absolute;
2387
+ }
2388
+
2389
+ [data-tooltip]:not([data-placement]):before, [data-tooltip][data-placement="top"]:before {
2390
+ margin-bottom: var(--spacing-sm);
2391
+ bottom: 100%;
2392
+ left: 50%;
2393
+ transform: translateX(-50%);
2394
+ }
2395
+
2396
+ [data-tooltip][data-placement="bottom"]:before {
2397
+ margin-top: var(--spacing-sm);
2398
+ top: 100%;
2399
+ left: 50%;
2400
+ transform: translateX(-50%);
2401
+ }
2402
+
2403
+ [data-tooltip][data-placement="left"]:before {
2404
+ margin-right: var(--spacing-sm);
2405
+ top: 50%;
2406
+ right: 100%;
2407
+ transform: translateY(-50%);
2408
+ }
2409
+
2410
+ [data-tooltip][data-placement="right"]:before {
2411
+ margin-left: var(--spacing-sm);
2412
+ top: 50%;
2413
+ left: 100%;
2414
+ transform: translateY(-50%);
2415
+ }
2416
+
2417
+ [data-tooltip]:hover:before, [data-tooltip]:focus-visible:before {
2418
+ opacity: 1;
2419
+ }
2420
+
2421
+ button[data-tooltip], a[data-tooltip] {
2422
+ cursor: pointer;
2423
+ }
2424
+
2425
+ [role="group"] {
2426
+ border-radius: var(--radius-md);
2427
+ display: inline-flex;
2428
+ }
2429
+
2430
+ [role="group"] > * {
2431
+ flex: auto;
2432
+ }
2433
+
2434
+ [role="group"] > :not(:first-child):not(:last-child) {
2435
+ border-radius: 0;
2436
+ }
2437
+
2438
+ [role="group"] > :first-child:not(:last-child) {
2439
+ border-top-right-radius: 0;
2440
+ border-bottom-right-radius: 0;
2441
+ }
2442
+
2443
+ [role="group"] > :last-child:not(:first-child) {
2444
+ border-top-left-radius: 0;
2445
+ border-bottom-left-radius: 0;
2446
+ }
2447
+
2448
+ [role="group"] > button:not(:first-child), [role="group"] > [type="submit"]:not(:first-child), [role="group"] > [type="button"]:not(:first-child), [role="group"] > [role="button"]:not(:first-child) {
2449
+ margin-left: calc(var(--border-width) * -1);
2450
+ }
2451
+
2452
+ [role="group"] > button[aria-current="true"], [role="group"] > [role="button"][aria-current="true"] {
2453
+ z-index: 1;
2454
+ }
2455
+
2456
+ [role="group"] > input, [role="group"] > select {
2457
+ flex: auto;
2458
+ }
2459
+
2460
+ [role="group"] > input:not(:first-child), [role="group"] > select:not(:first-child) {
2461
+ margin-left: calc(var(--border-width) * -1);
2462
+ }
2463
+
2464
+ [role="group"] > :focus-visible {
2465
+ z-index: 2;
2466
+ }
2467
+
2468
+ fieldset[role="group"] {
2469
+ border: none;
2470
+ width: 100%;
2471
+ padding: 0;
2472
+ display: flex;
2473
+ }
2474
+
2475
+ [role="group"] > :is(button, [type="submit"], [type="reset"], [type="button"]) {
2476
+ flex: none;
2477
+ width: auto;
2478
+ }
2479
+
2480
+ [role="search"] {
2481
+ display: flex;
2482
+ }
2483
+
2484
+ [role="search"] > input[type="search"] {
2485
+ flex: auto;
2486
+ }
2487
+
2488
+ [role="search"] > input[type="search"]:not(:only-child) {
2489
+ border-radius: var(--radius-full) 0 0 var(--radius-full);
2490
+ }
2491
+
2492
+ [role="search"] > [type="submit"], [role="search"] > button {
2493
+ border-radius: 0 var(--radius-full) var(--radius-full) 0;
2494
+ margin-left: calc(var(--border-width) * -1);
2495
+ }
2496
+
2497
+ [role="group"].full-width {
2498
+ width: 100%;
2499
+ display: flex;
2500
+ }
2501
+
2502
+ [role="group"].vertical {
2503
+ flex-direction: column;
2504
+ }
2505
+
2506
+ [role="group"].vertical > :not(:first-child):not(:last-child) {
2507
+ border-radius: 0;
2508
+ }
2509
+
2510
+ [role="group"].vertical > :first-child:not(:last-child) {
2511
+ border-radius: var(--radius-md) var(--radius-md) 0 0;
2512
+ }
2513
+
2514
+ [role="group"].vertical > :last-child:not(:first-child) {
2515
+ border-radius: 0 0 var(--radius-md) var(--radius-md);
2516
+ }
2517
+
2518
+ [role="group"].vertical > :not(:first-child) {
2519
+ margin-left: 0;
2520
+ margin-top: calc(var(--border-width) * -1);
2521
+ }
2522
+
2523
+ .badge {
2524
+ align-items: center;
2525
+ gap: var(--spacing-xs);
2526
+ padding: var(--spacing-xs) var(--spacing-sm);
2527
+ font-size: var(--text-xs);
2528
+ font-weight: var(--font-medium);
2529
+ font-variant-numeric: tabular-nums;
2530
+ white-space: nowrap;
2531
+ border: var(--border-width) solid transparent;
2532
+ border-radius: var(--badge-radius);
2533
+ color: var(--primary-foreground);
2534
+ background-color: var(--primary);
2535
+ line-height: 1;
2536
+ display: inline-flex;
2537
+ }
2538
+
2539
+ .badge.secondary {
2540
+ color: var(--foreground);
2541
+ background-color: var(--accent);
2542
+ }
2543
+
2544
+ .badge.destructive {
2545
+ color: var(--destructive-foreground);
2546
+ background-color: var(--destructive);
2547
+ }
2548
+
2549
+ .badge.success {
2550
+ color: var(--success-foreground);
2551
+ background-color: var(--success);
2552
+ }
2553
+
2554
+ .badge.warning {
2555
+ color: var(--warning-foreground);
2556
+ background-color: var(--warning);
2557
+ }
2558
+
2559
+ .badge.outline {
2560
+ color: var(--primary);
2561
+ border-color: var(--primary);
2562
+ background-color: #0000;
2563
+ }
2564
+
2565
+ .badge.outline.secondary {
2566
+ color: var(--foreground);
2567
+ border-color: var(--border);
2568
+ }
2569
+
2570
+ .badge.outline.destructive {
2571
+ color: var(--destructive);
2572
+ border-color: var(--destructive);
2573
+ }
2574
+
2575
+ .badge.outline.success {
2576
+ color: var(--success);
2577
+ border-color: var(--success);
2578
+ }
2579
+
2580
+ .badge.outline.warning {
2581
+ color: var(--warning);
2582
+ border-color: var(--warning);
2583
+ }
2584
+
2585
+ .badge.small {
2586
+ padding: 0 var(--spacing-xs);
2587
+ }
2588
+
2589
+ .badge.large {
2590
+ padding: var(--spacing-sm) var(--spacing-md);
2591
+ }
2592
+
2593
+ main > aside.sidebar {
2594
+ background-color: var(--muted);
2595
+ color: inherit;
2596
+ padding: var(--spacing-lg);
2597
+ border: none;
2598
+ }
2599
+
2600
+ @media (width >= 768px) {
2601
+ main > aside.sidebar {
2602
+ width: var(--aside-width);
2603
+ z-index: 10;
2604
+ height: 100dvh;
2605
+ display: block;
2606
+ position: fixed;
2607
+ inset: 0 auto 0 0;
2608
+ overflow-y: auto;
2609
+ }
2610
+
2611
+ body:has( > main > aside.sidebar) {
2612
+ padding-left: var(--aside-width);
2613
+ }
2614
+
2615
+ main:has( > aside.sidebar) {
2616
+ display: block;
2617
+ }
2618
+ }
2619
+
2620
+ @media (width <= 767.98px) {
2621
+ main > aside.sidebar {
2622
+ display: none;
2623
+ }
2624
+
2625
+ main > aside.sidebar[popover]:popover-open {
2626
+ width: min(var(--aside-width), 85vw);
2627
+ z-index: 100;
2628
+ height: 100dvh;
2629
+ transition: transform var(--transition-slow) var(--ease-default), overlay var(--transition-slow) var(--ease-default) allow-discrete, display var(--transition-slow) var(--ease-default) allow-discrete;
2630
+ display: block;
2631
+ position: fixed;
2632
+ inset: 0 auto 0 0;
2633
+ overflow-y: auto;
2634
+ transform: translateX(0);
2635
+ }
2636
+
2637
+ main > aside.sidebar[popover]::backdrop {
2638
+ background-color: var(--modal-overlay);
2639
+ backdrop-filter: blur(4px);
2640
+ }
2641
+
2642
+ @starting-style {
2643
+ main > aside.sidebar[popover]:popover-open {
2644
+ transform: translateX(-100%);
2645
+ }
2646
+ }
2647
+ }
2648
+
2649
+ main > aside.sidebar > nav {
2650
+ justify-content: flex-start;
2651
+ align-items: stretch;
2652
+ gap: var(--spacing-sm);
2653
+ flex-flow: column;
2654
+ display: flex;
2655
+ }
2656
+
2657
+ main > aside.sidebar > nav > ul {
2658
+ align-items: stretch;
2659
+ gap: var(--spacing-xs);
2660
+ flex-flow: column;
2661
+ margin: 0;
2662
+ padding: 0;
2663
+ list-style: none;
2664
+ display: flex;
2665
+ }
2666
+
2667
+ main > aside.sidebar > nav > ul > li {
2668
+ margin: 0;
2669
+ }
2670
+
2671
+ main > aside.sidebar > nav > ul > li > strong {
2672
+ padding: var(--spacing-sm) var(--spacing);
2673
+ margin-top: var(--spacing);
2674
+ font-size: var(--text-xs);
2675
+ font-weight: var(--font-semibold);
2676
+ color: var(--muted-foreground);
2677
+ text-transform: uppercase;
2678
+ letter-spacing: .05em;
2679
+ display: block;
2680
+ }
2681
+
2682
+ main > aside.sidebar > nav > ul > li:first-child > strong {
2683
+ margin-top: 0;
2684
+ }
2685
+
2686
+ main > aside.sidebar > nav > ul > li > a {
2687
+ align-items: center;
2688
+ gap: var(--spacing-sm);
2689
+ width: 100%;
2690
+ padding: var(--spacing-sm) var(--spacing);
2691
+ font-size: var(--text-sm);
2692
+ font-weight: var(--font-medium);
2693
+ color: var(--foreground);
2694
+ border-radius: var(--radius-md);
2695
+ text-overflow: ellipsis;
2696
+ white-space: nowrap;
2697
+ transition: background-color var(--transition-default), color var(--transition-default);
2698
+ text-decoration: none;
2699
+ display: flex;
2700
+ overflow: hidden;
2701
+ }
2702
+
2703
+ main > aside.sidebar > nav > ul > li > a:hover, main > aside.sidebar > nav > ul > li > a[aria-current="page"], main > aside.sidebar > nav > ul > li > a[aria-current="true"] {
2704
+ background-color: color-mix(in oklch, var(--muted) 88%, var(--foreground));
2705
+ color: var(--foreground);
2706
+ }
2707
+
2708
+ @media (width >= 768px) {
2709
+ .sidebar-toggle, li:has( > .sidebar-toggle) {
2710
+ display: none;
2711
+ }
2712
+ }
2713
+ }
2714
+
2715
+ @layer utilities {
2716
+ a.secondary {
2717
+ color: var(--muted-foreground);
2718
+
2719
+ &:hover {
2720
+ color: var(--foreground);
2721
+ }
2722
+ }
2723
+
2724
+ .muted {
2725
+ color: var(--muted-foreground);
2726
+ }
2727
+
2728
+ :where(:not(.badge):not(button):not([role="button"]):not(progress)).primary {
2729
+ color: var(--primary);
2730
+ }
2731
+
2732
+ :where(:not(.badge):not(button):not([role="button"]):not(progress)).destructive {
2733
+ color: var(--destructive);
2734
+ }
2735
+
2736
+ :where(:not(.badge):not(button):not([role="button"]):not(progress)).success {
2737
+ color: var(--success);
2738
+ }
2739
+
2740
+ :where(:not(.badge):not(button):not([role="button"]):not(progress)).warning {
2741
+ color: var(--warning);
2742
+ }
2743
+
2744
+ .sr-only {
2745
+ clip: rect(0, 0, 0, 0);
2746
+ white-space: nowrap;
2747
+ border: 0;
2748
+ width: 1px;
2749
+ height: 1px;
2750
+ margin: -1px;
2751
+ padding: 0;
2752
+ position: absolute;
2753
+ overflow: hidden;
2754
+ }
2755
+
2756
+ .hidden {
2757
+ display: none !important;
2758
+ }
2759
+
2760
+ .invisible {
2761
+ visibility: hidden;
2762
+ }
2763
+
2764
+ .text-left {
2765
+ text-align: left;
2766
+ }
2767
+
2768
+ .text-center {
2769
+ text-align: center;
2770
+ }
2771
+
2772
+ .text-right {
2773
+ text-align: right;
2774
+ }
2775
+
2776
+ .font-normal {
2777
+ font-weight: var(--font-normal);
2778
+ }
2779
+
2780
+ .font-medium {
2781
+ font-weight: var(--font-medium);
2782
+ }
2783
+
2784
+ .font-semibold {
2785
+ font-weight: var(--font-semibold);
2786
+ }
2787
+
2788
+ .font-bold {
2789
+ font-weight: var(--font-bold);
2790
+ }
2791
+
2792
+ .text-xs {
2793
+ font-size: var(--text-xs);
2794
+ }
2795
+
2796
+ .text-sm {
2797
+ font-size: var(--text-sm);
2798
+ }
2799
+
2800
+ .text-base {
2801
+ font-size: var(--text-base);
2802
+ }
2803
+
2804
+ .text-lg {
2805
+ font-size: var(--text-lg);
2806
+ }
2807
+
2808
+ .text-xl {
2809
+ font-size: var(--text-xl);
2810
+ }
2811
+
2812
+ .text-2xl {
2813
+ font-size: var(--text-2xl);
2814
+ }
2815
+
2816
+ .text-3xl {
2817
+ font-size: var(--text-3xl);
2818
+ }
2819
+
2820
+ .text-4xl {
2821
+ font-size: var(--text-4xl);
2822
+ }
2823
+
2824
+ .sticky {
2825
+ z-index: 40;
2826
+ background-color: var(--background);
2827
+ border-bottom: var(--border-width) solid var(--border);
2828
+ position: sticky;
2829
+ top: 0;
2830
+ }
2831
+
2832
+ .flex {
2833
+ display: flex;
2834
+ }
2835
+
2836
+ .flex-col {
2837
+ flex-direction: column;
2838
+ }
2839
+
2840
+ .items-center {
2841
+ align-items: center;
2842
+ }
2843
+
2844
+ .justify-center {
2845
+ justify-content: center;
2846
+ }
2847
+
2848
+ .justify-between {
2849
+ justify-content: space-between;
2850
+ }
2851
+
2852
+ .justify-end {
2853
+ justify-content: flex-end;
2854
+ }
2855
+
2856
+ .gap-2 {
2857
+ gap: var(--spacing-sm);
2858
+ }
2859
+
2860
+ .gap-4 {
2861
+ gap: var(--spacing);
2862
+ }
2863
+
2864
+ .w-full {
2865
+ width: 100%;
2866
+ }
2867
+
2868
+ .m-0 {
2869
+ margin: 0;
2870
+ }
2871
+
2872
+ .mx-auto {
2873
+ margin-inline: auto;
2874
+ }
2875
+
2876
+ .mt-4 {
2877
+ margin-top: var(--spacing);
2878
+ }
2879
+
2880
+ .mb-4 {
2881
+ margin-bottom: var(--spacing);
2882
+ }
2883
+
2884
+ .my-4 {
2885
+ margin-top: var(--spacing);
2886
+ margin-bottom: var(--spacing);
2887
+ }
2888
+
2889
+ .p-0 {
2890
+ padding: 0;
2891
+ }
2892
+
2893
+ .p-4 {
2894
+ padding: var(--spacing);
2895
+ }
2896
+
2897
+ .p-6 {
2898
+ padding: var(--spacing-lg);
2899
+ }
2900
+
2901
+ .overflow-auto {
2902
+ overflow: auto;
2903
+ }
2904
+
2905
+ .overflow-hidden {
2906
+ overflow: hidden;
2907
+ }
2908
+
2909
+ .truncate {
2910
+ text-overflow: ellipsis;
2911
+ white-space: nowrap;
2912
+ overflow: hidden;
2913
+ }
2914
+
2915
+ .rounded-none {
2916
+ border-radius: 0;
2917
+ }
2918
+
2919
+ .rounded-sm {
2920
+ border-radius: var(--radius-sm);
2921
+ }
2922
+
2923
+ .rounded {
2924
+ border-radius: var(--radius-md);
2925
+ }
2926
+
2927
+ .rounded-lg {
2928
+ border-radius: var(--radius-lg);
2929
+ }
2930
+
2931
+ .rounded-xl {
2932
+ border-radius: var(--radius-xl);
2933
+ }
2934
+
2935
+ .rounded-full {
2936
+ border-radius: var(--radius-full);
2937
+ }
2938
+
2939
+ .border {
2940
+ border: var(--border-width) solid var(--border);
2941
+ }
2942
+
2943
+ .border-none {
2944
+ border: none;
2945
+ }
2946
+
2947
+ .bg-muted {
2948
+ background-color: var(--muted);
2949
+ }
2950
+
2951
+ .bg-card {
2952
+ background-color: var(--card);
2953
+ }
2954
+
2955
+ .bg-transparent {
2956
+ background-color: #0000;
2957
+ }
2958
+
2959
+ .shadow-none {
2960
+ box-shadow: none;
2961
+ }
2962
+
2963
+ .shadow-sm, .shadow {
2964
+ box-shadow: var(--shadow-sm);
2965
+ }
2966
+
2967
+ .shadow-md {
2968
+ box-shadow: var(--shadow-md);
2969
+ }
2970
+
2971
+ .shadow-lg {
2972
+ box-shadow: var(--shadow-lg);
2973
+ }
2974
+
2975
+ .cursor-pointer {
2976
+ cursor: pointer;
2977
+ }
2978
+
2979
+ .cursor-not-allowed {
2980
+ cursor: not-allowed;
2981
+ }
2982
+
2983
+ .pointer-events-none {
2984
+ pointer-events: none;
2985
+ }
2986
+
2987
+ .select-none {
2988
+ user-select: none;
2989
+ }
2990
+
2991
+ .transition {
2992
+ transition: all var(--transition-default);
2993
+ }
2994
+
2995
+ .transition-none {
2996
+ transition: none;
2997
+ }
2998
+
2999
+ .animate-spin {
3000
+ animation: 1s linear infinite spin;
3001
+ }
3002
+
3003
+ .animate-pulse {
3004
+ animation: 2s ease-in-out infinite pulse;
3005
+ }
3006
+
3007
+ @keyframes pulse {
3008
+ 0%, 100% {
3009
+ opacity: 1;
3010
+ }
3011
+
3012
+ 50% {
3013
+ opacity: .5;
3014
+ }
3015
+ }
3016
+
3017
+ @media print {
3018
+ .no-print {
3019
+ display: none !important;
3020
+ }
3021
+ }
3022
+ }