@boostdev/design-system-components 0.1.1 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,2543 @@
1
+ /* src/components/ui/Accordion/Accordion.module.css */
2
+ @layer component {
3
+ .accordion {
4
+ display: flex;
5
+ flex-direction: column;
6
+ border: 1px solid var(--color_bg--subtle);
7
+ border-radius: var(--border_radius--s);
8
+ overflow: hidden;
9
+ }
10
+ .item {
11
+ border-bottom: 1px solid var(--color_bg--subtle);
12
+ }
13
+ .item:last-child {
14
+ border-bottom: none;
15
+ }
16
+ .heading {
17
+ margin: 0;
18
+ }
19
+ .trigger {
20
+ all: unset;
21
+ display: flex;
22
+ align-items: center;
23
+ justify-content: space-between;
24
+ width: 100%;
25
+ padding: var(--space_m);
26
+ font-family: var(--font_family--body);
27
+ font-size: var(--font_size--body);
28
+ font-weight: var(--font_weight--semibold);
29
+ color: var(--color_on-bg);
30
+ cursor: pointer;
31
+ transition: var(--animation_transition);
32
+ box-sizing: border-box;
33
+ }
34
+ .trigger:disabled {
35
+ opacity: 0.4;
36
+ cursor: not-allowed;
37
+ }
38
+ .trigger:focus-visible {
39
+ outline: var(--outline_default);
40
+ outline-offset: calc(var(--outline_offset) * -1);
41
+ border-radius: var(--border_radius--xs);
42
+ }
43
+ @media (hover: hover) and (pointer: fine) {
44
+ .trigger:not(:disabled):hover {
45
+ background-color: var(--color_bg--subtle);
46
+ }
47
+ }
48
+ .triggerLabel {
49
+ flex: 1;
50
+ text-align: start;
51
+ }
52
+ .chevron {
53
+ width: 1.25rem;
54
+ height: 1.25rem;
55
+ flex-shrink: 0;
56
+ transition: transform var(--animation_transition-duration) var(--animation_easing);
57
+ }
58
+ .item.--open .chevron {
59
+ transform: rotate(180deg);
60
+ }
61
+ .panel {
62
+ overflow: hidden;
63
+ }
64
+ .panelContent {
65
+ padding: 0 var(--space_m) var(--space_m);
66
+ color: var(--color_on-bg);
67
+ font-size: var(--font_size--body);
68
+ line-height: var(--font_line-height--body);
69
+ }
70
+ @media (prefers-reduced-motion: reduce) {
71
+ .chevron {
72
+ transition: none;
73
+ }
74
+ }
75
+ }
76
+
77
+ /* src/components/ui/Alert/Alert.module.css */
78
+ @layer component {
79
+ .alert {
80
+ --alert_bg: var(--color_blue--subtle);
81
+ --alert_text: var(--color_on-blue--subtle);
82
+ --alert_border: var(--color_blue);
83
+ display: flex;
84
+ align-items: flex-start;
85
+ gap: var(--space_s);
86
+ padding: var(--space_m);
87
+ border-radius: var(--border_radius--s);
88
+ border-inline-start: var(--space_s) solid var(--alert_border);
89
+ background-color: var(--alert_bg);
90
+ color: var(--alert_text);
91
+ font-size: var(--font_size--body);
92
+ line-height: var(--font_line-height--body);
93
+ }
94
+ .--variant_info {
95
+ --alert_bg: var(--color_blue--subtle);
96
+ --alert_text: var(--color_on-blue--subtle);
97
+ --alert_border: var(--color_blue);
98
+ }
99
+ .--variant_success {
100
+ --alert_bg: var(--color_green--subtle);
101
+ --alert_text: var(--color_on-green--subtle);
102
+ --alert_border: var(--color_green);
103
+ }
104
+ .--variant_warning {
105
+ --alert_bg: var(--color_orange--subtle);
106
+ --alert_text: var(--color_on-orange--subtle);
107
+ --alert_border: var(--color_warning);
108
+ }
109
+ .--variant_error {
110
+ --alert_bg: rgb(from var(--color_error) r g b / 12%);
111
+ --alert_text: var(--color_on-bg);
112
+ --alert_border: var(--color_error);
113
+ }
114
+ .icon {
115
+ display: flex;
116
+ align-items: center;
117
+ flex-shrink: 0;
118
+ margin-block-start: 0.1em;
119
+ }
120
+ .content {
121
+ flex: 1;
122
+ display: flex;
123
+ flex-direction: column;
124
+ gap: var(--space_xxs);
125
+ }
126
+ .title {
127
+ font-weight: var(--font_weight--semibold);
128
+ font-size: var(--font_size--body);
129
+ }
130
+ .dismiss {
131
+ all: unset;
132
+ display: flex;
133
+ align-items: center;
134
+ justify-content: center;
135
+ flex-shrink: 0;
136
+ cursor: pointer;
137
+ color: currentcolor;
138
+ transition: var(--animation_transition);
139
+ border: 1px solid currentcolor;
140
+ border-radius: 50%;
141
+ }
142
+ .dismiss svg {
143
+ width: 1rem;
144
+ height: 1rem;
145
+ }
146
+ .dismiss:focus-visible {
147
+ outline: var(--outline_default);
148
+ outline-offset: var(--outline_offset);
149
+ }
150
+ @media (hover: hover) and (pointer: fine) {
151
+ .dismiss:hover {
152
+ opacity: 0.7;
153
+ }
154
+ }
155
+ }
156
+
157
+ /* src/components/ui/Avatar/Avatar.module.css */
158
+ @layer component {
159
+ .avatar {
160
+ --avatar_size: 3em;
161
+ --avatar_bg: var(--color_blue);
162
+ --avatar_text: var(--color_on-blue);
163
+ display: inline-flex;
164
+ align-items: center;
165
+ justify-content: center;
166
+ width: var(--avatar_size);
167
+ height: var(--avatar_size);
168
+ border-radius: 50%;
169
+ overflow: hidden;
170
+ flex-shrink: 0;
171
+ }
172
+ .avatar.--fallback {
173
+ background-color: var(--avatar_bg);
174
+ color: var(--avatar_text);
175
+ font-weight: var(--font_weight--semibold);
176
+ }
177
+ .avatar.--size_small {
178
+ --avatar_size: 2em;
179
+ }
180
+ .avatar.--size_medium {
181
+ --avatar_size: 3em;
182
+ }
183
+ .avatar.--size_large {
184
+ --avatar_size: 4.5em;
185
+ }
186
+ .image {
187
+ width: 100%;
188
+ height: 100%;
189
+ object-fit: cover;
190
+ display: block;
191
+ }
192
+ .initials {
193
+ line-height: 1;
194
+ user-select: none;
195
+ font-size: var(--font_size--body);
196
+ }
197
+ .avatar.--size_small .initials {
198
+ font-size: var(--font_size--body--s);
199
+ }
200
+ .avatar.--size_large .initials {
201
+ font-size: var(--font_size--heading-3);
202
+ }
203
+ }
204
+
205
+ /* src/components/ui/Badge/Badge.module.css */
206
+ @layer component {
207
+ .badge {
208
+ --badge_bg: var(--color_blue);
209
+ --badge_text: var(--color_on-blue);
210
+ --badge_radius: 2em;
211
+ --badge_font-size: var(--font_size--body--s);
212
+ display: inline-flex;
213
+ align-items: center;
214
+ justify-content: center;
215
+ padding: var(--space_xxs) var(--space_xs);
216
+ border-radius: var(--badge_radius);
217
+ font-size: var(--badge_font-size);
218
+ font-weight: var(--font_weight--semibold);
219
+ line-height: 1;
220
+ white-space: nowrap;
221
+ background-color: var(--badge_bg);
222
+ color: var(--badge_text);
223
+ }
224
+ .--variant_primary {
225
+ --badge_bg: var(--color_interactive);
226
+ --badge_text: var(--color_on-interactive);
227
+ }
228
+ .--variant_secondary {
229
+ --badge_bg: var(--color_bg);
230
+ --badge_text: var(--color_on-bg);
231
+ }
232
+ .--variant_success {
233
+ --badge_bg: var(--color_success);
234
+ --badge_text: var(--color_on-success);
235
+ }
236
+ .--variant_error {
237
+ --badge_bg: var(--color_error);
238
+ --badge_text: var(--color_on-error);
239
+ }
240
+ .--variant_warning {
241
+ --badge_bg: var(--color_warning);
242
+ --badge_text: var(--color_on-warning);
243
+ }
244
+ }
245
+
246
+ /* src/components/ui/Breadcrumb/Breadcrumb.module.css */
247
+ @layer component {
248
+ .breadcrumb {
249
+ font-size: var(--font_size--body--s);
250
+ }
251
+ .list {
252
+ display: flex;
253
+ flex-wrap: wrap;
254
+ align-items: center;
255
+ gap: var(--space_xxs);
256
+ list-style: none;
257
+ margin: 0;
258
+ padding: 0;
259
+ }
260
+ .item {
261
+ display: flex;
262
+ align-items: center;
263
+ gap: var(--space_xxs);
264
+ }
265
+ .link {
266
+ color: var(--color_interactive);
267
+ text-decoration: none;
268
+ transition: var(--animation_transition);
269
+ }
270
+ .link:focus-visible {
271
+ outline: var(--outline_default);
272
+ outline-offset: var(--outline_offset);
273
+ border-radius: var(--border_radius--xs);
274
+ }
275
+ @media (hover: hover) and (pointer: fine) {
276
+ .link:hover {
277
+ text-decoration: underline;
278
+ text-underline-offset: 0.2em;
279
+ }
280
+ }
281
+ .separator {
282
+ color: var(--color_on-bg--subtle);
283
+ user-select: none;
284
+ }
285
+ .current {
286
+ color: var(--color_on-bg--subtle);
287
+ font-weight: var(--font_weight--semibold);
288
+ }
289
+ }
290
+
291
+ /* src/components/ui/Calendar/Calendar.module.css */
292
+ @layer component {
293
+ .calendar {
294
+ display: inline-flex;
295
+ flex-direction: column;
296
+ gap: var(--space_s);
297
+ background-color: var(--color_bg);
298
+ border: 1px solid var(--color_bg--subtle);
299
+ border-radius: var(--border_radius--m);
300
+ padding: var(--space_m);
301
+ box-shadow: var(--shadow_s);
302
+ width: 20rem;
303
+ }
304
+ .header {
305
+ display: flex;
306
+ align-items: center;
307
+ justify-content: space-between;
308
+ }
309
+ .monthYear {
310
+ font-size: var(--font_size--body);
311
+ font-weight: var(--font_weight--semibold);
312
+ color: var(--color_on-bg);
313
+ }
314
+ .navBtn {
315
+ all: unset;
316
+ display: flex;
317
+ align-items: center;
318
+ justify-content: center;
319
+ width: 2rem;
320
+ height: 2rem;
321
+ border-radius: 50%;
322
+ cursor: pointer;
323
+ color: var(--color_on-bg);
324
+ transition: var(--animation_transition);
325
+ }
326
+ .navBtn svg {
327
+ width: 1rem;
328
+ height: 1rem;
329
+ }
330
+ .navBtn:focus-visible {
331
+ outline: var(--outline_default);
332
+ outline-offset: var(--outline_offset);
333
+ }
334
+ @media (hover: hover) and (pointer: fine) {
335
+ .navBtn:hover {
336
+ background-color: var(--color_bg--subtle);
337
+ }
338
+ }
339
+ .grid {
340
+ border-collapse: collapse;
341
+ width: 100%;
342
+ table-layout: fixed;
343
+ }
344
+ .weekday {
345
+ font-size: var(--font_size--body--s);
346
+ font-weight: var(--font_weight--semibold);
347
+ color: var(--color_on-bg--muted);
348
+ text-align: center;
349
+ padding-block-end: var(--space_xs);
350
+ }
351
+ .empty {
352
+ padding: 0;
353
+ }
354
+ .day {
355
+ all: unset;
356
+ display: flex;
357
+ align-items: center;
358
+ justify-content: center;
359
+ width: 100%;
360
+ aspect-ratio: 1;
361
+ border-radius: 50%;
362
+ font-size: var(--font_size--body--s);
363
+ color: var(--color_on-bg);
364
+ cursor: pointer;
365
+ transition: var(--animation_transition);
366
+ box-sizing: border-box;
367
+ }
368
+ .day:focus-visible {
369
+ outline: var(--outline_default);
370
+ outline-offset: var(--outline_offset);
371
+ }
372
+ @media (hover: hover) and (pointer: fine) {
373
+ .day:not(.disabled, .selected):hover {
374
+ background-color: var(--color_bg--subtle);
375
+ }
376
+ }
377
+ .today {
378
+ border: 2px solid var(--color_interactive);
379
+ font-weight: var(--font_weight--semibold);
380
+ }
381
+ .selected {
382
+ background-color: var(--color_interactive);
383
+ color: var(--color_on-interactive);
384
+ font-weight: var(--font_weight--semibold);
385
+ }
386
+ .disabled {
387
+ opacity: 0.35;
388
+ cursor: not-allowed;
389
+ }
390
+ @media (prefers-reduced-motion: reduce) {
391
+ .day {
392
+ transition: none;
393
+ }
394
+ }
395
+ }
396
+
397
+ /* src/components/ui/Carousel/Carousel.module.css */
398
+ @layer component {
399
+ .carousel {
400
+ position: relative;
401
+ display: flex;
402
+ align-items: center;
403
+ gap: var(--space_xs);
404
+ }
405
+ .track {
406
+ display: flex;
407
+ gap: var(--space_m);
408
+ overflow-x: auto;
409
+ scroll-snap-type: x mandatory;
410
+ scrollbar-width: none;
411
+ flex: 1;
412
+ scroll-behavior: smooth;
413
+ }
414
+ .track::-webkit-scrollbar {
415
+ display: none;
416
+ }
417
+ .slide {
418
+ scroll-snap-align: start;
419
+ flex-shrink: 0;
420
+ }
421
+ .navBtn {
422
+ all: unset;
423
+ display: flex;
424
+ align-items: center;
425
+ justify-content: center;
426
+ width: 2.5rem;
427
+ height: 2.5rem;
428
+ border-radius: 50%;
429
+ background-color: var(--color_bg);
430
+ border: 1px solid var(--color_on-bg);
431
+ color: var(--color_on-bg);
432
+ cursor: pointer;
433
+ flex-shrink: 0;
434
+ transition: var(--animation_transition);
435
+ box-shadow: var(--shadow_s);
436
+ }
437
+ .navBtn svg {
438
+ width: 1.25rem;
439
+ height: 1.25rem;
440
+ }
441
+ .navBtn:focus-visible {
442
+ outline: var(--outline_default);
443
+ outline-offset: var(--outline_offset);
444
+ }
445
+ @media (hover: hover) and (pointer: fine) {
446
+ .navBtn:hover {
447
+ background-color: var(--color_bg--subtle);
448
+ }
449
+ }
450
+ @media (prefers-reduced-motion: reduce) {
451
+ .track {
452
+ scroll-behavior: auto;
453
+ }
454
+ }
455
+ }
456
+
457
+ /* src/components/ui/DescriptionList/DescriptionList.module.css */
458
+ @layer component {
459
+ .list {
460
+ display: flex;
461
+ flex-direction: column;
462
+ gap: var(--space_s);
463
+ margin: 0;
464
+ padding: 0;
465
+ font-size: var(--font_size--body);
466
+ color: var(--color_on-bg);
467
+ }
468
+ .group {
469
+ display: flex;
470
+ flex-direction: column;
471
+ gap: var(--space_xxs);
472
+ }
473
+ .term {
474
+ font-weight: var(--font_weight--semibold);
475
+ color: var(--color_on-bg);
476
+ }
477
+ .details {
478
+ margin: 0;
479
+ color: var(--color_on-bg--muted);
480
+ }
481
+ .--layout_inline .group {
482
+ display: grid;
483
+ grid-template-columns: minmax(8rem, 1fr) 2fr;
484
+ gap: var(--space_xs);
485
+ align-items: baseline;
486
+ }
487
+ .--layout_inline .term {
488
+ grid-column: 1;
489
+ }
490
+ .--layout_inline .details {
491
+ grid-column: 2;
492
+ }
493
+ }
494
+
495
+ /* src/components/ui/Link/Link.module.css */
496
+ @layer component {
497
+ .link {
498
+ --link_color: var(--color_interactive);
499
+ --link_color-hover: var(--color_blue--strong);
500
+ color: var(--link_color);
501
+ text-decoration: underline;
502
+ text-underline-offset: 0.2em;
503
+ transition: var(--animation_transition);
504
+ cursor: pointer;
505
+ }
506
+ .link:focus-visible {
507
+ outline: var(--outline_default);
508
+ outline-offset: var(--outline_offset);
509
+ border-radius: var(--border_radius--xs);
510
+ }
511
+ @media (hover: hover) and (pointer: fine) {
512
+ .link:hover {
513
+ --link_color: var(--link_color-hover);
514
+ }
515
+ }
516
+ .--variant_default {
517
+ --link_color: var(--color_interactive);
518
+ --link_color-hover: var(--color_blue--strong);
519
+ }
520
+ .--variant_subtle {
521
+ --link_color: var(--color_on-bg);
522
+ --link_color-hover: var(--color_interactive);
523
+ }
524
+ .--variant_standalone {
525
+ --link_color: var(--color_interactive);
526
+ --link_color-hover: var(--color_blue--strong);
527
+ display: inline-flex;
528
+ align-items: center;
529
+ gap: var(--space_xxs);
530
+ font-weight: var(--font_weight--semibold);
531
+ text-decoration: none;
532
+ }
533
+ @media (hover: hover) and (pointer: fine) {
534
+ .--variant_standalone:hover {
535
+ text-decoration: underline;
536
+ text-underline-offset: 0.2em;
537
+ }
538
+ }
539
+ .externalLabel {
540
+ position: absolute;
541
+ width: 1px;
542
+ height: 1px;
543
+ padding: 0;
544
+ margin: -1px;
545
+ overflow: hidden;
546
+ clip: rect(0, 0, 0, 0);
547
+ white-space: nowrap;
548
+ border-width: 0;
549
+ }
550
+ }
551
+
552
+ /* src/components/ui/Loading/Loading.module.css */
553
+ @layer component {
554
+ .loading {
555
+ display: flex;
556
+ justify-content: center;
557
+ align-items: center;
558
+ }
559
+ .spinner {
560
+ width: 2.5em;
561
+ height: 2.5em;
562
+ border: 4px solid var(--color_bg);
563
+ border-top: 4px solid var(--color_interactive);
564
+ border-radius: 50%;
565
+ animation: spin 1s linear infinite;
566
+ }
567
+ .--size_small .spinner {
568
+ width: 1.5em;
569
+ height: 1.5em;
570
+ border-width: 2px;
571
+ }
572
+ .--size_large .spinner {
573
+ width: 4em;
574
+ height: 4em;
575
+ border-width: 6px;
576
+ }
577
+ }
578
+ @keyframes spin {
579
+ 0% {
580
+ transform: rotate(0deg);
581
+ }
582
+ 100% {
583
+ transform: rotate(360deg);
584
+ }
585
+ }
586
+
587
+ /* src/components/ui/NotificationBanner/NotificationBanner.module.css */
588
+ @layer component {
589
+ .banner {
590
+ --banner_bg: var(--color_blue--subtle);
591
+ --banner_text: var(--color_on-blue--subtle);
592
+ --banner_border: var(--color_blue);
593
+ display: flex;
594
+ align-items: center;
595
+ gap: var(--space_m);
596
+ padding: var(--space_s) var(--space_m);
597
+ background-color: var(--banner_bg);
598
+ color: var(--banner_text);
599
+ border-block-end: 3px solid var(--banner_border);
600
+ font-size: var(--font_size--body);
601
+ line-height: var(--font_line-height--body);
602
+ width: 100%;
603
+ }
604
+ .--variant_info {
605
+ --banner_bg: var(--color_blue--subtle);
606
+ --banner_text: var(--color_on-blue--subtle);
607
+ --banner_border: var(--color_blue);
608
+ }
609
+ .--variant_success {
610
+ --banner_bg: var(--color_green--subtle);
611
+ --banner_text: var(--color_on-green--subtle);
612
+ --banner_border: var(--color_green);
613
+ }
614
+ .--variant_warning {
615
+ --banner_bg: var(--color_orange--subtle);
616
+ --banner_text: var(--color_on-orange--subtle);
617
+ --banner_border: var(--color_warning);
618
+ }
619
+ .--variant_error {
620
+ --banner_bg: rgb(from var(--color_error) r g b / 12%);
621
+ --banner_text: var(--color_on-bg);
622
+ --banner_border: var(--color_error);
623
+ }
624
+ .content {
625
+ flex: 1;
626
+ }
627
+ .action {
628
+ flex-shrink: 0;
629
+ }
630
+ .dismiss {
631
+ all: unset;
632
+ display: flex;
633
+ align-items: center;
634
+ justify-content: center;
635
+ flex-shrink: 0;
636
+ cursor: pointer;
637
+ color: currentcolor;
638
+ border-radius: 50%;
639
+ border: 1px solid currentcolor;
640
+ transition: var(--animation_transition);
641
+ }
642
+ .dismiss svg {
643
+ width: 1rem;
644
+ height: 1rem;
645
+ }
646
+ .dismiss:focus-visible {
647
+ outline: var(--outline_default);
648
+ outline-offset: var(--outline_offset);
649
+ }
650
+ @media (hover: hover) and (pointer: fine) {
651
+ .dismiss:hover {
652
+ opacity: 0.7;
653
+ }
654
+ }
655
+ }
656
+
657
+ /* src/components/ui/Pagination/Pagination.module.css */
658
+ @layer component {
659
+ .pagination {
660
+ display: flex;
661
+ justify-content: center;
662
+ }
663
+ .list {
664
+ display: flex;
665
+ align-items: center;
666
+ gap: var(--space_xxs);
667
+ list-style: none;
668
+ margin: 0;
669
+ padding: 0;
670
+ }
671
+ .button {
672
+ --btn_bg: transparent;
673
+ --btn_color: var(--color_on-bg);
674
+ --btn_border: var(--color_bg--subtle);
675
+ all: unset;
676
+ display: inline-flex;
677
+ align-items: center;
678
+ justify-content: center;
679
+ min-width: 2.25rem;
680
+ height: 2.25rem;
681
+ padding-inline: var(--space_xs);
682
+ border-radius: var(--border_radius--xs);
683
+ border: 1px solid var(--btn_border);
684
+ background-color: var(--btn_bg);
685
+ color: var(--btn_color);
686
+ font-family: var(--font_family--body);
687
+ font-size: var(--font_size--body);
688
+ font-variant-numeric: tabular-nums;
689
+ cursor: pointer;
690
+ transition: var(--animation_transition);
691
+ box-sizing: border-box;
692
+ }
693
+ .button:disabled {
694
+ opacity: 0.4;
695
+ cursor: not-allowed;
696
+ }
697
+ .button:focus-visible {
698
+ outline: var(--outline_default);
699
+ outline-offset: var(--outline_offset);
700
+ }
701
+ @media (hover: hover) and (pointer: fine) {
702
+ .button:not(:disabled, .--active):hover {
703
+ --btn_bg: var(--color_bg--subtle);
704
+ --btn_color: var(--color_interactive);
705
+ }
706
+ }
707
+ .button.--active {
708
+ --btn_bg: var(--color_interactive);
709
+ --btn_color: var(--color_on-interactive);
710
+ --btn_border: var(--color_interactive);
711
+ }
712
+ .button.--nav svg {
713
+ width: 1rem;
714
+ height: 1rem;
715
+ }
716
+ .ellipsis {
717
+ display: inline-flex;
718
+ align-items: center;
719
+ justify-content: center;
720
+ min-width: 2.25rem;
721
+ height: 2.25rem;
722
+ color: var(--color_on-bg--subtle);
723
+ font-size: var(--font_size--body);
724
+ user-select: none;
725
+ }
726
+ }
727
+
728
+ /* src/components/ui/Progress/Progress.module.css */
729
+ @layer component {
730
+ .container {
731
+ display: flex;
732
+ flex-direction: column;
733
+ gap: var(--space_xxs);
734
+ width: 100%;
735
+ }
736
+ .labelRow {
737
+ display: flex;
738
+ justify-content: space-between;
739
+ align-items: baseline;
740
+ font-size: var(--font_size--body--s);
741
+ color: var(--color_on-bg);
742
+ }
743
+ .label {
744
+ font-weight: var(--font_weight--semibold);
745
+ }
746
+ .value {
747
+ font-variant-numeric: tabular-nums;
748
+ }
749
+ .track {
750
+ --progress_height: var(--space_xs);
751
+ width: 100%;
752
+ height: var(--progress_height);
753
+ background-color: var(--color_bg--subtle);
754
+ border-radius: 999px;
755
+ overflow: hidden;
756
+ }
757
+ .track.--size_small {
758
+ --progress_height: var(--space_xxs);
759
+ }
760
+ .track.--size_medium {
761
+ --progress_height: var(--space_xs);
762
+ }
763
+ .track.--size_large {
764
+ --progress_height: var(--space_s);
765
+ }
766
+ .fill {
767
+ height: 100%;
768
+ background-color: var(--color_green);
769
+ border-radius: 999px;
770
+ transition: width var(--animation_transition-duration) var(--animation_easing);
771
+ }
772
+ @media (prefers-reduced-motion: reduce) {
773
+ .fill {
774
+ transition: none;
775
+ }
776
+ }
777
+ }
778
+
779
+ /* src/components/ui/ProgressCircle/ProgressCircle.module.css */
780
+ @layer component {
781
+ .wrapper {
782
+ position: relative;
783
+ display: inline-flex;
784
+ align-items: center;
785
+ justify-content: center;
786
+ }
787
+ .svg {
788
+ display: block;
789
+ }
790
+ .track {
791
+ stroke: var(--color_bg--subtle);
792
+ }
793
+ .fill {
794
+ stroke: var(--color_green);
795
+ transition: stroke-dashoffset var(--animation_transition-duration) var(--animation_easing);
796
+ }
797
+ .value {
798
+ position: absolute;
799
+ font-size: var(--font_size--body--s);
800
+ font-weight: var(--font_weight--semibold);
801
+ font-variant-numeric: tabular-nums;
802
+ color: var(--color_on-bg);
803
+ line-height: 1;
804
+ }
805
+ .--size_small .value {
806
+ font-size: 0.5rem;
807
+ }
808
+ .--size_medium .value {
809
+ font-size: var(--font_size--body--s);
810
+ }
811
+ .--size_large .value {
812
+ font-size: var(--font_size--body);
813
+ }
814
+ @media (prefers-reduced-motion: reduce) {
815
+ .fill {
816
+ transition: none;
817
+ }
818
+ }
819
+ }
820
+
821
+ /* src/components/ui/Separator/Separator.module.css */
822
+ @layer component {
823
+ .separator {
824
+ --separator_color: var(--color_border);
825
+ --separator_thickness: 1px;
826
+ border: none;
827
+ background-color: var(--separator_color);
828
+ }
829
+ .separator.--horizontal {
830
+ display: block;
831
+ width: 100%;
832
+ height: var(--separator_thickness);
833
+ margin-block: var(--space_m);
834
+ }
835
+ .separator.--vertical {
836
+ display: inline-block;
837
+ width: var(--separator_thickness);
838
+ align-self: stretch;
839
+ margin-inline: var(--space_m);
840
+ }
841
+ }
842
+
843
+ /* src/components/ui/Skeleton/Skeleton.module.css */
844
+ @layer component {
845
+ .skeleton {
846
+ background:
847
+ linear-gradient(
848
+ 90deg,
849
+ var(--color_grey--subtle) 25%,
850
+ var(--color_bg) 50%,
851
+ var(--color_grey--subtle) 75%);
852
+ background-size: 200% 100%;
853
+ animation: shimmer 1.5s infinite;
854
+ border-radius: var(--border_radius--xs);
855
+ min-height: var(--space_m);
856
+ }
857
+ }
858
+ @keyframes shimmer {
859
+ 0% {
860
+ background-position: 200% 0;
861
+ }
862
+ 100% {
863
+ background-position: -200% 0;
864
+ }
865
+ }
866
+
867
+ /* src/components/ui/SkipLink/SkipLink.module.css */
868
+ @layer component {
869
+ .skipLink {
870
+ position: absolute;
871
+ inset-block-start: var(--space_s);
872
+ inset-inline-start: var(--space_s);
873
+ z-index: var(--z_overlay);
874
+ padding: var(--space_xs) var(--space_m);
875
+ background-color: var(--color_bg);
876
+ color: var(--color_on-bg);
877
+ font-size: var(--font_size--body);
878
+ font-weight: var(--font_weight--semibold);
879
+ border-radius: var(--border_radius--s);
880
+ border: 2px solid var(--color_focus);
881
+ text-decoration: none;
882
+ transform: translateY(-200%);
883
+ transition: transform var(--animation_transition-duration) var(--animation_easing);
884
+ }
885
+ .skipLink:focus-visible {
886
+ transform: translateY(0);
887
+ outline: var(--outline_default);
888
+ outline-offset: var(--outline_offset);
889
+ }
890
+ @media (prefers-reduced-motion: reduce) {
891
+ .skipLink {
892
+ transition: none;
893
+ }
894
+ }
895
+ }
896
+
897
+ /* src/components/ui/Table/Table.module.css */
898
+ @layer component {
899
+ .wrapper {
900
+ width: 100%;
901
+ overflow-x: auto;
902
+ border-radius: var(--border_radius--s);
903
+ border: 1px solid var(--color_bg--subtle);
904
+ }
905
+ .table {
906
+ width: 100%;
907
+ border-collapse: collapse;
908
+ font-size: var(--font_size--body);
909
+ font-family: var(--font_family--body);
910
+ }
911
+ .caption {
912
+ caption-side: top;
913
+ text-align: start;
914
+ padding: var(--space_s) var(--space_m);
915
+ font-weight: var(--font_weight--semibold);
916
+ color: var(--color_on-bg);
917
+ }
918
+ .thead {
919
+ background-color: var(--color_bg--subtle);
920
+ }
921
+ .th {
922
+ padding: var(--space_s) var(--space_m);
923
+ text-align: start;
924
+ font-weight: var(--font_weight--semibold);
925
+ font-size: var(--font_size--body--s);
926
+ color: var(--color_on-bg--subtle);
927
+ white-space: nowrap;
928
+ border-bottom: 1px solid var(--color_bg--subtle);
929
+ }
930
+ .th.--sortable {
931
+ padding: 0;
932
+ }
933
+ .sortButton {
934
+ all: unset;
935
+ display: flex;
936
+ align-items: center;
937
+ gap: var(--space_xxs);
938
+ padding: var(--space_s) var(--space_m);
939
+ width: 100%;
940
+ cursor: pointer;
941
+ color: var(--color_on-bg--subtle);
942
+ font-weight: var(--font_weight--semibold);
943
+ font-size: var(--font_size--body--s);
944
+ transition: var(--animation_transition);
945
+ box-sizing: border-box;
946
+ }
947
+ .sortButton:focus-visible {
948
+ outline: var(--outline_default);
949
+ outline-offset: calc(var(--outline_offset) * -1);
950
+ }
951
+ @media (hover: hover) and (pointer: fine) {
952
+ .sortButton:hover {
953
+ color: var(--color_on-bg);
954
+ }
955
+ }
956
+ .sortIcon {
957
+ width: 1rem;
958
+ height: 1rem;
959
+ opacity: 0.4;
960
+ transition: transform var(--animation_transition-duration) var(--animation_easing), opacity var(--animation_transition-duration) var(--animation_easing);
961
+ }
962
+ .sortIcon.--sort-active {
963
+ opacity: 1;
964
+ color: var(--color_interactive);
965
+ }
966
+ .sortIcon.--sort-desc {
967
+ transform: rotate(180deg);
968
+ }
969
+ .tbody .tr {
970
+ border-bottom: 1px solid var(--color_bg--subtle);
971
+ transition: var(--animation_transition);
972
+ }
973
+ .tbody .tr:last-child {
974
+ border-bottom: none;
975
+ }
976
+ @media (hover: hover) and (pointer: fine) {
977
+ .tbody .tr:hover {
978
+ background-color: var(--color_bg--subtle);
979
+ }
980
+ }
981
+ .td {
982
+ padding: var(--space_s) var(--space_m);
983
+ color: var(--color_on-bg);
984
+ vertical-align: middle;
985
+ }
986
+ @media (prefers-reduced-motion: reduce) {
987
+ .sortIcon {
988
+ transition: none;
989
+ }
990
+ }
991
+ }
992
+
993
+ /* src/components/ui/Tabs/Tabs.module.css */
994
+ @layer component {
995
+ .tabs {
996
+ display: flex;
997
+ flex-direction: column;
998
+ }
999
+ .tabList {
1000
+ display: flex;
1001
+ border-bottom: 1px solid var(--color_bg--subtle);
1002
+ gap: var(--space_xxs);
1003
+ }
1004
+ .tab {
1005
+ --tab_color: var(--color_on-bg);
1006
+ --tab_border-color: transparent;
1007
+ all: unset;
1008
+ display: inline-flex;
1009
+ align-items: center;
1010
+ padding: var(--space_s) var(--space_m);
1011
+ font-family: var(--font_family--body);
1012
+ font-size: var(--font_size--body);
1013
+ font-weight: var(--font_weight--semibold);
1014
+ color: var(--tab_color);
1015
+ border-bottom: 2px solid var(--tab_border-color);
1016
+ margin-bottom: -1px;
1017
+ cursor: pointer;
1018
+ transition: var(--animation_transition);
1019
+ }
1020
+ .tab.--active {
1021
+ --tab_color: var(--color_interactive);
1022
+ --tab_border-color: var(--color_interactive);
1023
+ }
1024
+ .tab:disabled {
1025
+ opacity: 0.4;
1026
+ cursor: not-allowed;
1027
+ }
1028
+ .tab:focus-visible {
1029
+ outline: var(--outline_default);
1030
+ outline-offset: var(--outline_offset);
1031
+ border-radius: var(--border_radius--xs);
1032
+ }
1033
+ @media (hover: hover) and (pointer: fine) {
1034
+ .tab:not(:disabled, .--active):hover {
1035
+ --tab_color: var(--color_interactive);
1036
+ }
1037
+ }
1038
+ .panel {
1039
+ padding-block-start: var(--space_m);
1040
+ }
1041
+ .panel:focus-visible {
1042
+ outline: var(--outline_default);
1043
+ outline-offset: var(--outline_offset);
1044
+ }
1045
+ }
1046
+
1047
+ /* src/components/ui/Tooltip/Tooltip.module.css */
1048
+ @layer component {
1049
+ .wrapper {
1050
+ position: relative;
1051
+ display: inline-flex;
1052
+ align-items: center;
1053
+ }
1054
+ .tooltip {
1055
+ --tooltip_bg: var(--color_on-bg);
1056
+ --tooltip_text: var(--color_bg);
1057
+ position: absolute;
1058
+ z-index: var(--z-index_popover);
1059
+ padding: var(--space_xxs) var(--space_xs);
1060
+ border-radius: var(--border_radius--xs);
1061
+ background-color: var(--tooltip_bg);
1062
+ color: var(--tooltip_text);
1063
+ font-size: var(--font_size--body--s);
1064
+ line-height: var(--font_line-height--body);
1065
+ white-space: nowrap;
1066
+ pointer-events: none;
1067
+ visibility: hidden;
1068
+ opacity: 0;
1069
+ transition: opacity var(--animation_transition-duration) var(--animation_easing);
1070
+ }
1071
+ .wrapper:hover .tooltip,
1072
+ .wrapper:focus-within .tooltip {
1073
+ visibility: visible;
1074
+ opacity: 1;
1075
+ }
1076
+ .--placement_top {
1077
+ bottom: calc(100% + var(--space_xs));
1078
+ left: 50%;
1079
+ transform: translateX(-50%);
1080
+ }
1081
+ .--placement_bottom {
1082
+ top: calc(100% + var(--space_xs));
1083
+ left: 50%;
1084
+ transform: translateX(-50%);
1085
+ }
1086
+ .--placement_left {
1087
+ right: calc(100% + var(--space_xs));
1088
+ top: 50%;
1089
+ transform: translateY(-50%);
1090
+ }
1091
+ .--placement_right {
1092
+ left: calc(100% + var(--space_xs));
1093
+ top: 50%;
1094
+ transform: translateY(-50%);
1095
+ }
1096
+ @media (prefers-reduced-motion: reduce) {
1097
+ .tooltip {
1098
+ transition: none;
1099
+ }
1100
+ }
1101
+ }
1102
+
1103
+ /* src/components/ui/Typography/Typography.module.css */
1104
+ @layer component {
1105
+ .typography {
1106
+ --typography_color: var(--color_on-bg);
1107
+ margin: 0;
1108
+ font-family: var(--font_family--body);
1109
+ color: var(--typography_color);
1110
+ }
1111
+ .--h1 {
1112
+ font-family: var(--font_family--heading);
1113
+ font-size: var(--font_size--heading-1);
1114
+ font-weight: var(--font_weight--bold);
1115
+ line-height: var(--font_line-height--heading);
1116
+ }
1117
+ .--h2 {
1118
+ font-family: var(--font_family--heading);
1119
+ font-size: var(--font_size--heading-2);
1120
+ font-weight: var(--font_weight--semibold);
1121
+ line-height: var(--font_line-height--heading);
1122
+ }
1123
+ .--h3 {
1124
+ font-family: var(--font_family--heading);
1125
+ font-size: var(--font_size--heading-3);
1126
+ font-weight: var(--font_weight--semibold);
1127
+ line-height: var(--font_line-height--heading);
1128
+ }
1129
+ .--body {
1130
+ font-size: var(--font_size--body);
1131
+ line-height: var(--font_line-height--body);
1132
+ }
1133
+ .--body_s {
1134
+ font-size: var(--font_size--body--s);
1135
+ line-height: var(--font_line-height--body);
1136
+ }
1137
+ }
1138
+
1139
+ /* src/components/interaction/Button/Button.module.css */
1140
+ @keyframes pulse {
1141
+ 0% {
1142
+ transform: scale(1);
1143
+ box-shadow: 0 0 0 0 rgb(from var(--button_pulse-color) r g b / 50%);
1144
+ }
1145
+ 70% {
1146
+ transform: scale(1.01);
1147
+ box-shadow: 0 0 0 var(--space_m) rgb(from var(--button_pulse-color) r g b / 0%);
1148
+ }
1149
+ 100% {
1150
+ transform: scale(1);
1151
+ box-shadow: 0 0 0 0 rgb(from var(--button_pulse-color) r g b / 0%);
1152
+ }
1153
+ }
1154
+ @layer component {
1155
+ .button,
1156
+ .button[href] {
1157
+ --button_height: 3em;
1158
+ --button_font-size: inherit;
1159
+ --button_bg: var(--color_cta);
1160
+ --button_text: var(--color_on-cta);
1161
+ --button_border-color: var(--color_cta);
1162
+ --button_pulse-color: var(--button_bg);
1163
+ all: unset;
1164
+ position: relative;
1165
+ font: inherit;
1166
+ padding-inline: var(--space_l);
1167
+ display: inline-flex;
1168
+ gap: var(--space_xs);
1169
+ border-radius: var(--border_radius--s);
1170
+ align-items: center;
1171
+ cursor: pointer;
1172
+ scroll-padding-block-end: var(--space_l);
1173
+ justify-content: center;
1174
+ height: var(--button_height);
1175
+ font-size: var(--button_font-size);
1176
+ white-space: nowrap;
1177
+ line-height: 1;
1178
+ background-color: var(--button_bg);
1179
+ color: var(--button_text);
1180
+ border: 2px solid var(--button_border-color);
1181
+ transition: var(--animation_transition);
1182
+ }
1183
+ .button.--primary {
1184
+ --button_bg: var(--color_cta);
1185
+ --button_text: var(--color_on-cta);
1186
+ --button_border-color: transparent;
1187
+ }
1188
+ .button.--secondary {
1189
+ --button_bg: var(--color_bg);
1190
+ --button_text: var(--color_on-bg);
1191
+ --button_border-color: var(--button_text);
1192
+ }
1193
+ .button.--size_small {
1194
+ --button_height: 2.25em;
1195
+ --button_font-size: var(--font_size--body--s);
1196
+ padding-inline: var(--space_m);
1197
+ }
1198
+ .button.--size_medium {
1199
+ --button_height: 3em;
1200
+ padding-inline: var(--space_l);
1201
+ }
1202
+ .button.--size_large {
1203
+ --button_height: 3.75em;
1204
+ --button_font-size: var(--font_size--heading-3);
1205
+ padding-inline: var(--space_xl);
1206
+ }
1207
+ .button.--hasPulse {
1208
+ animation: pulse 3s infinite;
1209
+ }
1210
+ .button[href] {
1211
+ text-decoration: none;
1212
+ }
1213
+ .button svg {
1214
+ --icon__stroke: currentcolor;
1215
+ fill: currentcolor;
1216
+ color: currentcolor;
1217
+ flex-shrink: 0;
1218
+ }
1219
+ .prefix {
1220
+ display: flex;
1221
+ align-items: center;
1222
+ margin-inline-start: calc(var(--space_s) * -1);
1223
+ transition: var(--animation_transition);
1224
+ }
1225
+ .suffix {
1226
+ display: flex;
1227
+ align-items: center;
1228
+ margin-inline-end: calc(var(--space_s) * -1);
1229
+ transition: var(--animation_transition);
1230
+ }
1231
+ @media (hover: hover) and (pointer: fine) {
1232
+ .button:hover .prefix svg {
1233
+ animation: 2s infinite fadeZoom ease-out;
1234
+ }
1235
+ .button:hover .suffix svg {
1236
+ animation: 2s infinite fadeZoom ease-out;
1237
+ }
1238
+ }
1239
+ .button:focus-visible {
1240
+ outline-offset: var(--outline_offset);
1241
+ outline: var(--outline_default);
1242
+ border-radius: var(--border_radius--s);
1243
+ }
1244
+ @media (hover: hover) and (pointer: fine) {
1245
+ .button:hover {
1246
+ --button_bg: var(--color_bg);
1247
+ --button_text: var(--color_interactive);
1248
+ --button_pulse-color: var(--color_interactive);
1249
+ --button_border-color: currentcolor;
1250
+ }
1251
+ }
1252
+ }
1253
+
1254
+ /* src/components/interaction/Command/Command.module.css */
1255
+ @layer component {
1256
+ .dialog {
1257
+ padding: 0;
1258
+ border: none;
1259
+ border-radius: var(--border_radius--m);
1260
+ background: transparent;
1261
+ width: min(40rem, 90vw);
1262
+ max-height: 70vh;
1263
+ overflow: visible;
1264
+ margin-block-start: 10vh;
1265
+ }
1266
+ .dialog::backdrop {
1267
+ background: rgb(0 0 0 / 50%);
1268
+ }
1269
+ .palette {
1270
+ display: flex;
1271
+ flex-direction: column;
1272
+ background-color: var(--color_bg);
1273
+ border-radius: var(--border_radius--m);
1274
+ box-shadow: var(--shadow_xl);
1275
+ overflow: hidden;
1276
+ max-height: 70vh;
1277
+ border: 1px solid var(--color_bg--subtle);
1278
+ }
1279
+ .searchRow {
1280
+ display: flex;
1281
+ align-items: center;
1282
+ gap: var(--space_xs);
1283
+ padding: var(--space_s) var(--space_m);
1284
+ border-block-end: 1px solid var(--color_bg--subtle);
1285
+ flex-shrink: 0;
1286
+ }
1287
+ .searchIcon {
1288
+ width: 1.25rem;
1289
+ height: 1.25rem;
1290
+ color: var(--color_on-bg--muted);
1291
+ flex-shrink: 0;
1292
+ }
1293
+ .search {
1294
+ flex: 1;
1295
+ border: none;
1296
+ outline: none;
1297
+ font-family: var(--font_family--body);
1298
+ font-size: var(--font_size--body);
1299
+ color: var(--color_on-bg);
1300
+ background: transparent;
1301
+ min-width: 0;
1302
+ }
1303
+ .search::placeholder {
1304
+ color: var(--color_on-bg--muted);
1305
+ }
1306
+ .escHint {
1307
+ font-size: var(--font_size--body--s);
1308
+ color: var(--color_on-bg--muted);
1309
+ border: 1px solid var(--color_on-bg--muted);
1310
+ border-radius: var(--border_radius--xs);
1311
+ padding: 0.1em 0.4em;
1312
+ flex-shrink: 0;
1313
+ }
1314
+ .list {
1315
+ overflow-y: auto;
1316
+ list-style: none;
1317
+ margin: 0;
1318
+ padding: var(--space_xs) 0;
1319
+ }
1320
+ .groupList {
1321
+ list-style: none;
1322
+ margin: 0;
1323
+ padding: 0;
1324
+ }
1325
+ .group {
1326
+ padding: var(--space_xs) var(--space_m);
1327
+ font-size: var(--font_size--body--s);
1328
+ font-weight: var(--font_weight--semibold);
1329
+ color: var(--color_on-bg--muted);
1330
+ text-transform: uppercase;
1331
+ letter-spacing: 0.05em;
1332
+ }
1333
+ .item {
1334
+ display: flex;
1335
+ align-items: center;
1336
+ gap: var(--space_s);
1337
+ padding: var(--space_s) var(--space_m);
1338
+ cursor: pointer;
1339
+ transition: background-color var(--animation_transition-duration) var(--animation_easing);
1340
+ }
1341
+ .itemActive {
1342
+ background-color: var(--color_bg--subtle);
1343
+ }
1344
+ .itemLabel {
1345
+ flex: 1;
1346
+ font-size: var(--font_size--body);
1347
+ color: var(--color_on-bg);
1348
+ }
1349
+ .itemDesc {
1350
+ font-size: var(--font_size--body--s);
1351
+ color: var(--color_on-bg--muted);
1352
+ }
1353
+ .shortcut {
1354
+ font-size: var(--font_size--body--s);
1355
+ color: var(--color_on-bg--muted);
1356
+ border: 1px solid var(--color_on-bg--muted);
1357
+ border-radius: var(--border_radius--xs);
1358
+ padding: 0.1em 0.4em;
1359
+ }
1360
+ .empty {
1361
+ padding: var(--space_l) var(--space_m);
1362
+ text-align: center;
1363
+ color: var(--color_on-bg--muted);
1364
+ font-size: var(--font_size--body);
1365
+ }
1366
+ }
1367
+
1368
+ /* src/components/interaction/Dialog/Dialog.module.css */
1369
+ @layer component {
1370
+ .dialog {
1371
+ display: grid;
1372
+ gap: var(--grid_gap);
1373
+ font-size: var(--font_size--body--s);
1374
+ border: 2px solid currentcolor;
1375
+ background-color: var(--color_grey--subtle);
1376
+ color: var(--color_on-grey--subtle);
1377
+ border-radius: var(--border_radius--m);
1378
+ padding: var(--space_l);
1379
+ overflow: visible;
1380
+ max-width: 90svw;
1381
+ }
1382
+ .closeForm {
1383
+ position: absolute;
1384
+ inset-block-start: -1em;
1385
+ inset-inline-end: -1em;
1386
+ }
1387
+ .closeButton {
1388
+ all: unset;
1389
+ width: 2em;
1390
+ height: 2em;
1391
+ display: flex;
1392
+ align-items: center;
1393
+ justify-content: center;
1394
+ border-radius: 50%;
1395
+ background-color: var(--color_bg);
1396
+ color: var(--color_on-bg);
1397
+ border: 2px solid currentcolor;
1398
+ cursor: pointer;
1399
+ }
1400
+ .closeButton svg {
1401
+ width: 1.25em;
1402
+ height: 1.25em;
1403
+ }
1404
+ }
1405
+
1406
+ /* src/components/interaction/Drawer/Drawer.module.css */
1407
+ @layer component {
1408
+ .drawer {
1409
+ position: fixed;
1410
+ inset: 0;
1411
+ margin: 0;
1412
+ padding: 0;
1413
+ width: 100%;
1414
+ max-width: 100%;
1415
+ height: 100%;
1416
+ max-height: 100%;
1417
+ border: none;
1418
+ background: transparent;
1419
+ overflow: hidden;
1420
+ }
1421
+ .drawer::backdrop {
1422
+ background: rgb(0 0 0 / 50%);
1423
+ }
1424
+ .panel {
1425
+ position: absolute;
1426
+ inset-block: 0;
1427
+ display: flex;
1428
+ flex-direction: column;
1429
+ width: min(28rem, 90vw);
1430
+ height: 100%;
1431
+ background-color: var(--color_bg);
1432
+ color: var(--color_on-bg);
1433
+ box-shadow: var(--shadow_xl);
1434
+ overflow: hidden;
1435
+ transition: transform var(--animation_transition-duration) var(--animation_easing);
1436
+ }
1437
+ .--side_right .panel {
1438
+ inset-inline-end: 0;
1439
+ }
1440
+ .--side_left .panel {
1441
+ inset-inline-start: 0;
1442
+ }
1443
+ .header {
1444
+ display: flex;
1445
+ align-items: center;
1446
+ justify-content: space-between;
1447
+ padding: var(--space_m) var(--space_l);
1448
+ border-block-end: 1px solid var(--color_bg--subtle);
1449
+ flex-shrink: 0;
1450
+ }
1451
+ .title {
1452
+ margin: 0;
1453
+ font-size: var(--font_size--heading--s);
1454
+ font-weight: var(--font_weight--semibold);
1455
+ line-height: var(--font_line-height--heading);
1456
+ }
1457
+ .closeButton {
1458
+ all: unset;
1459
+ display: flex;
1460
+ align-items: center;
1461
+ justify-content: center;
1462
+ width: 2rem;
1463
+ height: 2rem;
1464
+ border-radius: 50%;
1465
+ cursor: pointer;
1466
+ color: var(--color_on-bg);
1467
+ transition: var(--animation_transition);
1468
+ }
1469
+ .closeButton svg {
1470
+ width: 1.25rem;
1471
+ height: 1.25rem;
1472
+ }
1473
+ .closeButton:focus-visible {
1474
+ outline: var(--outline_default);
1475
+ outline-offset: var(--outline_offset);
1476
+ }
1477
+ @media (hover: hover) and (pointer: fine) {
1478
+ .closeButton:hover {
1479
+ background-color: var(--color_bg--subtle);
1480
+ }
1481
+ }
1482
+ .body {
1483
+ flex: 1;
1484
+ overflow-y: auto;
1485
+ padding: var(--space_l);
1486
+ }
1487
+ @media (prefers-reduced-motion: reduce) {
1488
+ .panel {
1489
+ transition: none;
1490
+ }
1491
+ }
1492
+ }
1493
+
1494
+ /* src/components/interaction/DropdownMenu/DropdownMenu.module.css */
1495
+ @layer component {
1496
+ .wrapper {
1497
+ position: relative;
1498
+ display: inline-flex;
1499
+ }
1500
+ .menu {
1501
+ position: absolute;
1502
+ top: calc(100% + var(--space_xxs));
1503
+ z-index: var(--z-index_dropdown);
1504
+ min-width: 10rem;
1505
+ padding: var(--space_xxs) 0;
1506
+ border-radius: var(--border_radius--s);
1507
+ border: 1px solid var(--color_bg--subtle);
1508
+ background-color: var(--color_bg);
1509
+ box-shadow: var(--shadow_m);
1510
+ list-style: none;
1511
+ margin: 0;
1512
+ }
1513
+ .--placement_bottom-start {
1514
+ left: 0;
1515
+ }
1516
+ .--placement_bottom-end {
1517
+ right: 0;
1518
+ }
1519
+ .separator {
1520
+ border: none;
1521
+ border-top: 1px solid var(--color_bg--subtle);
1522
+ margin: var(--space_xxs) 0;
1523
+ }
1524
+ .item {
1525
+ all: unset;
1526
+ display: flex;
1527
+ align-items: center;
1528
+ gap: var(--space_xs);
1529
+ width: 100%;
1530
+ padding: var(--space_xs) var(--space_m);
1531
+ font-family: var(--font_family--body);
1532
+ font-size: var(--font_size--body);
1533
+ color: var(--color_on-bg);
1534
+ cursor: pointer;
1535
+ box-sizing: border-box;
1536
+ transition: var(--animation_transition);
1537
+ }
1538
+ .item:disabled {
1539
+ opacity: 0.4;
1540
+ cursor: not-allowed;
1541
+ }
1542
+ .item:focus-visible {
1543
+ outline: var(--outline_default);
1544
+ outline-offset: calc(var(--outline_offset) * -1);
1545
+ border-radius: var(--border_radius--xs);
1546
+ }
1547
+ @media (hover: hover) and (pointer: fine) {
1548
+ .item:not(:disabled):hover {
1549
+ background-color: var(--color_bg--subtle);
1550
+ color: var(--color_interactive);
1551
+ }
1552
+ }
1553
+ .icon {
1554
+ display: flex;
1555
+ align-items: center;
1556
+ flex-shrink: 0;
1557
+ }
1558
+ }
1559
+
1560
+ /* src/components/interaction/Popover/Popover.module.css */
1561
+ @layer component {
1562
+ .wrapper {
1563
+ position: relative;
1564
+ display: inline-flex;
1565
+ }
1566
+ .panel {
1567
+ position: absolute;
1568
+ z-index: var(--z-index_popover);
1569
+ min-width: 12rem;
1570
+ padding: var(--space_m);
1571
+ border-radius: var(--border_radius--s);
1572
+ border: 1px solid var(--color_bg--subtle);
1573
+ background-color: var(--color_bg);
1574
+ box-shadow: var(--shadow_m);
1575
+ color: var(--color_on-bg);
1576
+ font-size: var(--font_size--body);
1577
+ }
1578
+ .--placement_bottom {
1579
+ top: calc(100% + var(--space_xs));
1580
+ left: 0;
1581
+ }
1582
+ .--placement_top {
1583
+ bottom: calc(100% + var(--space_xs));
1584
+ left: 0;
1585
+ }
1586
+ .--placement_right {
1587
+ left: calc(100% + var(--space_xs));
1588
+ top: 0;
1589
+ }
1590
+ .--placement_left {
1591
+ right: calc(100% + var(--space_xs));
1592
+ top: 0;
1593
+ }
1594
+ }
1595
+
1596
+ /* src/components/interaction/Rating/Rating.module.css */
1597
+ @layer component {
1598
+ .rating {
1599
+ display: inline-flex;
1600
+ gap: var(--space_xxxs);
1601
+ color: var(--color_bg);
1602
+ }
1603
+ .star {
1604
+ width: 1.5em;
1605
+ height: 1.5em;
1606
+ }
1607
+ .--filled {
1608
+ color: var(--color_warning);
1609
+ }
1610
+ }
1611
+
1612
+ /* src/components/interaction/Toast/Toast.module.css */
1613
+ @layer component {
1614
+ .toastContainer {
1615
+ position: fixed;
1616
+ bottom: var(--space_xl);
1617
+ right: var(--space_xl);
1618
+ display: flex;
1619
+ flex-direction: column;
1620
+ gap: var(--space_m);
1621
+ z-index: var(--z-index_toast);
1622
+ }
1623
+ .toast {
1624
+ padding: var(--space_m) var(--space_l);
1625
+ background-color: var(--color_bg);
1626
+ color: var(--color_on-bg);
1627
+ border-radius: var(--border_radius--s);
1628
+ box-shadow: var(--shadow_s);
1629
+ display: flex;
1630
+ align-items: center;
1631
+ gap: var(--space_m);
1632
+ min-width: 300px;
1633
+ animation: slideIn var(--animation_duration--fast) var(--animation_easing);
1634
+ }
1635
+ .--variant_success {
1636
+ border-left: 4px solid var(--color_success);
1637
+ }
1638
+ .--variant_error {
1639
+ border-left: 4px solid var(--color_error);
1640
+ }
1641
+ .--variant_info {
1642
+ border-left: 4px solid var(--color_interactive);
1643
+ }
1644
+ }
1645
+ @keyframes slideIn {
1646
+ from {
1647
+ transform: translateX(100%);
1648
+ opacity: 0;
1649
+ }
1650
+ to {
1651
+ transform: translateX(0);
1652
+ opacity: 1;
1653
+ }
1654
+ }
1655
+
1656
+ /* src/components/interaction/form/Checkbox/Checkbox.module.css */
1657
+ @layer component {
1658
+ .checkboxGroup {
1659
+ --inputSize: calc(var(--space_s) * 2);
1660
+ display: flex;
1661
+ flex-direction: column;
1662
+ margin-block-end: var(--space_m);
1663
+ }
1664
+ .inputWrapper {
1665
+ display: flex;
1666
+ align-items: stretch;
1667
+ gap: var(--space_xs);
1668
+ }
1669
+ .checkbox {
1670
+ margin-block-start: 0.25em;
1671
+ width: var(--inputSize);
1672
+ height: var(--inputSize);
1673
+ border: 1px solid var(--color_border);
1674
+ border-radius: var(--border_radius--xs);
1675
+ appearance: none;
1676
+ background-color: var(--color_bg);
1677
+ cursor: pointer;
1678
+ position: relative;
1679
+ transition: background-color 0.3s ease, border-color 0.3s ease;
1680
+ }
1681
+ .checkbox:checked {
1682
+ background-color: var(--color_green);
1683
+ border-color: var(--color_green);
1684
+ box-shadow: 0 0 0 2px var(--color_green);
1685
+ }
1686
+ .checkbox:checked::after {
1687
+ content: "";
1688
+ position: absolute;
1689
+ left: 0.6em;
1690
+ top: 0.2em;
1691
+ width: 0.5em;
1692
+ height: 1em;
1693
+ border: solid var(--color_on-green);
1694
+ border-width: 0 2px 2px 0;
1695
+ transform: rotate(45deg);
1696
+ }
1697
+ .checkbox:focus {
1698
+ outline: none;
1699
+ border-color: var(--color_interactive);
1700
+ box-shadow: 0 0 0 2px var(--color_green);
1701
+ }
1702
+ .checkboxError {
1703
+ border-color: var(--color_error);
1704
+ }
1705
+ .checkboxError:focus {
1706
+ border-color: var(--color_error);
1707
+ box-shadow: 0 0 0 2px rgb(from var(--color_error) r g b / 20%);
1708
+ }
1709
+ }
1710
+
1711
+ /* src/components/interaction/form/atoms/Message.module.css */
1712
+ @layer component {
1713
+ .error,
1714
+ .hint {
1715
+ font-size: var(--font_size--body--s);
1716
+ margin-inline-start: var(--labelPosition);
1717
+ }
1718
+ .error {
1719
+ color: var(--color_error);
1720
+ }
1721
+ }
1722
+
1723
+ /* src/components/interaction/form/atoms/Label.module.css */
1724
+ @layer component {
1725
+ .label {
1726
+ display: flex;
1727
+ align-items: center;
1728
+ font-family: var(--font_family--body);
1729
+ font-weight: var(--font_weight--semibold);
1730
+ color: var(--color_on-bg);
1731
+ cursor: pointer;
1732
+ }
1733
+ }
1734
+
1735
+ /* src/components/interaction/form/atoms/InputContainer.module.css */
1736
+ @layer component {
1737
+ .container {
1738
+ --labelPosition: calc(var(--inputSize) + var(--space_m));
1739
+ display: flex;
1740
+ flex-direction: column;
1741
+ gap: var(--space_xxxs);
1742
+ }
1743
+ }
1744
+
1745
+ /* src/components/interaction/form/Combobox/Combobox.module.css */
1746
+ @layer component {
1747
+ .formGroup {
1748
+ display: flex;
1749
+ flex-direction: column;
1750
+ }
1751
+ .inputWrapper {
1752
+ position: relative;
1753
+ display: flex;
1754
+ align-items: center;
1755
+ }
1756
+ .input {
1757
+ --combobox_border-color: var(--color_on-bg);
1758
+ --combobox_focus-ring: 0 0 0 2px rgb(from var(--color_interactive) r g b / 20%);
1759
+ appearance: none;
1760
+ width: 100%;
1761
+ font-family: var(--font_family--body);
1762
+ font-size: var(--font_size--body);
1763
+ padding: var(--space_s);
1764
+ padding-inline-end: var(--space_xxl);
1765
+ border: 1px solid var(--combobox_border-color);
1766
+ border-radius: var(--border_radius--xs);
1767
+ background-color: var(--color_bg);
1768
+ color: var(--color_on-bg);
1769
+ transition: var(--animation_transition);
1770
+ }
1771
+ .input:focus {
1772
+ --combobox_border-color: var(--color_interactive);
1773
+ outline: none;
1774
+ box-shadow: var(--combobox_focus-ring);
1775
+ }
1776
+ .input:disabled {
1777
+ opacity: 0.5;
1778
+ cursor: not-allowed;
1779
+ }
1780
+ .inputError {
1781
+ --combobox_border-color: var(--color_error);
1782
+ }
1783
+ .inputError:focus {
1784
+ --combobox_focus-ring: 0 0 0 2px rgb(from var(--color_error) r g b / 20%);
1785
+ }
1786
+ .chevron {
1787
+ position: absolute;
1788
+ inset-inline-end: var(--space_s);
1789
+ display: flex;
1790
+ align-items: center;
1791
+ pointer-events: none;
1792
+ color: var(--color_on-bg);
1793
+ }
1794
+ .chevron svg {
1795
+ width: 1rem;
1796
+ height: 1rem;
1797
+ }
1798
+ .listbox {
1799
+ position: absolute;
1800
+ top: calc(100% + var(--space_xxs));
1801
+ left: 0;
1802
+ right: 0;
1803
+ z-index: var(--z-index_dropdown);
1804
+ max-height: 15rem;
1805
+ overflow-y: auto;
1806
+ list-style: none;
1807
+ margin: 0;
1808
+ padding: var(--space_xxs) 0;
1809
+ border-radius: var(--border_radius--xs);
1810
+ border: 1px solid var(--color_bg--subtle);
1811
+ background-color: var(--color_bg);
1812
+ box-shadow: var(--shadow_m);
1813
+ }
1814
+ .option {
1815
+ display: flex;
1816
+ align-items: center;
1817
+ padding: var(--space_xs) var(--space_m);
1818
+ font-size: var(--font_size--body);
1819
+ color: var(--color_on-bg);
1820
+ cursor: pointer;
1821
+ transition: var(--animation_transition);
1822
+ }
1823
+ .option.--highlighted {
1824
+ background-color: var(--color_bg--subtle);
1825
+ color: var(--color_interactive);
1826
+ }
1827
+ .option.--selected {
1828
+ font-weight: var(--font_weight--semibold);
1829
+ }
1830
+ .option.--disabled {
1831
+ opacity: 0.4;
1832
+ cursor: not-allowed;
1833
+ }
1834
+ }
1835
+
1836
+ /* src/components/interaction/form/FileInput/FileInput.module.css */
1837
+ @layer component {
1838
+ .formGroup {
1839
+ display: flex;
1840
+ flex-direction: column;
1841
+ }
1842
+ .dropZone {
1843
+ display: flex;
1844
+ flex-direction: column;
1845
+ align-items: center;
1846
+ justify-content: center;
1847
+ gap: var(--space_xs);
1848
+ padding: var(--space_l) var(--space_m);
1849
+ border: 2px dashed var(--color_on-bg);
1850
+ border-radius: var(--border_radius--s);
1851
+ cursor: pointer;
1852
+ text-align: center;
1853
+ transition: var(--animation_transition);
1854
+ color: var(--color_on-bg--muted);
1855
+ }
1856
+ .dropZone:focus-within {
1857
+ outline: var(--outline_default);
1858
+ outline-offset: var(--outline_offset);
1859
+ border-color: var(--color_interactive);
1860
+ }
1861
+ .isDragging {
1862
+ border-color: var(--color_interactive);
1863
+ background-color: rgb(from var(--color_interactive) r g b / 8%);
1864
+ }
1865
+ .hasError {
1866
+ border-color: var(--color_error);
1867
+ }
1868
+ .isDisabled {
1869
+ opacity: 0.5;
1870
+ cursor: not-allowed;
1871
+ }
1872
+ .icon {
1873
+ width: 2rem;
1874
+ height: 2rem;
1875
+ flex-shrink: 0;
1876
+ }
1877
+ .prompt {
1878
+ font-size: var(--font_size--body);
1879
+ color: var(--color_on-bg--muted);
1880
+ }
1881
+ .prompt strong {
1882
+ color: var(--color_interactive);
1883
+ font-weight: var(--font_weight--semibold);
1884
+ }
1885
+ .acceptHint {
1886
+ font-size: var(--font_size--body--s);
1887
+ color: var(--color_on-bg--muted);
1888
+ }
1889
+ .hiddenInput {
1890
+ position: absolute;
1891
+ width: 1px;
1892
+ height: 1px;
1893
+ overflow: hidden;
1894
+ clip: rect(0, 0, 0, 0);
1895
+ white-space: nowrap;
1896
+ border: 0;
1897
+ }
1898
+ @media (hover: hover) and (pointer: fine) {
1899
+ .dropZone:not(.isDisabled):hover {
1900
+ border-color: var(--color_interactive);
1901
+ background-color: rgb(from var(--color_interactive) r g b / 4%);
1902
+ }
1903
+ }
1904
+ }
1905
+
1906
+ /* src/components/interaction/form/FormInput/FormInput.module.css */
1907
+ @layer component {
1908
+ .formGroup {
1909
+ --labelPosition: 0;
1910
+ display: flex;
1911
+ flex-direction: column;
1912
+ }
1913
+ .input {
1914
+ --input_border-color: var(--color_on-bg);
1915
+ --input_radius: var(--border_radius--xs);
1916
+ --input_focus-ring: 0 0 0 2px rgb(from var(--color_interactive) r g b / 20%);
1917
+ font-family: var(--font_family--body);
1918
+ font-size: var(--font_size--body);
1919
+ padding: var(--space_s);
1920
+ border: 1px solid var(--input_border-color);
1921
+ border-radius: var(--input_radius);
1922
+ transition: var(--animation_transition);
1923
+ }
1924
+ .input:focus {
1925
+ --input_border-color: var(--color_interactive);
1926
+ outline: none;
1927
+ box-shadow: var(--input_focus-ring);
1928
+ }
1929
+ .inputError {
1930
+ --input_border-color: var(--color_error);
1931
+ }
1932
+ .inputError:focus {
1933
+ --input_focus-ring: 0 0 0 2px rgb(from var(--color_error) r g b / 20%);
1934
+ }
1935
+ }
1936
+
1937
+ /* src/components/interaction/form/NumberInput/NumberInput.module.css */
1938
+ @layer component {
1939
+ .formGroup {
1940
+ display: flex;
1941
+ flex-direction: column;
1942
+ }
1943
+ .inputRow {
1944
+ display: flex;
1945
+ align-items: stretch;
1946
+ border: 1px solid var(--color_on-bg);
1947
+ border-radius: var(--border_radius--xs);
1948
+ overflow: hidden;
1949
+ transition: var(--animation_transition);
1950
+ }
1951
+ .inputRow:focus-within {
1952
+ border-color: var(--color_interactive);
1953
+ box-shadow: 0 0 0 2px rgb(from var(--color_interactive) r g b / 20%);
1954
+ }
1955
+ .input {
1956
+ flex: 1;
1957
+ border: none;
1958
+ outline: none;
1959
+ font-family: var(--font_family--body);
1960
+ font-size: var(--font_size--body);
1961
+ text-align: center;
1962
+ padding: var(--space_s);
1963
+ background: transparent;
1964
+ color: var(--color_on-bg);
1965
+ min-width: 0;
1966
+ appearance: textfield;
1967
+ }
1968
+ .input::-webkit-inner-spin-button,
1969
+ .input::-webkit-outer-spin-button {
1970
+ appearance: none;
1971
+ }
1972
+ .inputError {
1973
+ border-color: var(--color_error);
1974
+ }
1975
+ .inputError:focus-within {
1976
+ border-color: var(--color_error);
1977
+ box-shadow: 0 0 0 2px rgb(from var(--color_error) r g b / 20%);
1978
+ }
1979
+ .stepper {
1980
+ all: unset;
1981
+ display: flex;
1982
+ align-items: center;
1983
+ justify-content: center;
1984
+ padding: var(--space_xs);
1985
+ background-color: var(--color_bg--subtle);
1986
+ color: var(--color_on-bg);
1987
+ cursor: pointer;
1988
+ transition: var(--animation_transition);
1989
+ flex-shrink: 0;
1990
+ }
1991
+ .stepper svg {
1992
+ width: 1rem;
1993
+ height: 1rem;
1994
+ }
1995
+ .stepper:disabled {
1996
+ opacity: 0.4;
1997
+ cursor: not-allowed;
1998
+ }
1999
+ @media (hover: hover) and (pointer: fine) {
2000
+ .stepper:not(:disabled):hover {
2001
+ background-color: var(--color_bg--subtle);
2002
+ opacity: 0.7;
2003
+ }
2004
+ }
2005
+ }
2006
+
2007
+ /* src/components/interaction/form/Radio/Radio.module.css */
2008
+ @layer component {
2009
+ .radioGroup {
2010
+ --inputSize: calc(var(--space_s) * 2);
2011
+ --labelPosition: calc(var(--inputSize) + var(--space_m));
2012
+ display: flex;
2013
+ flex-direction: column;
2014
+ }
2015
+ .inputWrapper {
2016
+ display: flex;
2017
+ align-items: stretch;
2018
+ gap: var(--space_xs);
2019
+ }
2020
+ .radio {
2021
+ flex-shrink: 0;
2022
+ margin-block-start: 0.25em;
2023
+ width: var(--inputSize);
2024
+ height: var(--inputSize);
2025
+ border: 1px solid var(--color_border);
2026
+ border-radius: 50%;
2027
+ appearance: none;
2028
+ background-color: var(--color_bg);
2029
+ cursor: pointer;
2030
+ position: relative;
2031
+ transition: background-color 0.3s ease, border-color 0.3s ease;
2032
+ }
2033
+ .radio:checked {
2034
+ background-color: var(--color_green);
2035
+ border-color: var(--color_green);
2036
+ box-shadow: 0 0 0 2px var(--color_green);
2037
+ }
2038
+ .radio:checked::after {
2039
+ content: "";
2040
+ position: absolute;
2041
+ left: 0.6em;
2042
+ top: 0.25em;
2043
+ width: 0.5em;
2044
+ height: 1em;
2045
+ border: solid var(--color_on-green);
2046
+ border-width: 0 2px 2px 0;
2047
+ transform: rotate(45deg);
2048
+ }
2049
+ .radio:focus {
2050
+ outline: none;
2051
+ border-color: var(--color_interactive);
2052
+ box-shadow: 0 0 0 2px var(--color_green);
2053
+ }
2054
+ .radioError {
2055
+ border-color: var(--color_error);
2056
+ }
2057
+ .radioError:focus {
2058
+ border-color: var(--color_error);
2059
+ box-shadow: 0 0 0 2px rgb(from var(--color_error) r g b / 20%);
2060
+ }
2061
+ }
2062
+
2063
+ /* src/components/interaction/form/Select/Select.module.css */
2064
+ @layer component {
2065
+ .formGroup {
2066
+ display: flex;
2067
+ flex-direction: column;
2068
+ }
2069
+ .selectWrapper {
2070
+ position: relative;
2071
+ display: flex;
2072
+ align-items: center;
2073
+ }
2074
+ .select {
2075
+ --select_border-color: var(--color_on-bg);
2076
+ --select_focus-ring: 0 0 0 2px rgb(from var(--color_interactive) r g b / 20%);
2077
+ appearance: none;
2078
+ width: 100%;
2079
+ font-family: var(--font_family--body);
2080
+ font-size: var(--font_size--body);
2081
+ padding: var(--space_s);
2082
+ padding-inline-end: var(--space_xxl);
2083
+ border: 1px solid var(--select_border-color);
2084
+ border-radius: var(--border_radius--xs);
2085
+ background-color: var(--color_bg);
2086
+ color: var(--color_on-bg);
2087
+ cursor: pointer;
2088
+ transition: var(--animation_transition);
2089
+ }
2090
+ .select:focus {
2091
+ --select_border-color: var(--color_interactive);
2092
+ outline: none;
2093
+ box-shadow: var(--select_focus-ring);
2094
+ }
2095
+ .select:disabled {
2096
+ opacity: 0.5;
2097
+ cursor: not-allowed;
2098
+ }
2099
+ .selectError {
2100
+ --select_border-color: var(--color_error);
2101
+ }
2102
+ .selectError:focus {
2103
+ --select_focus-ring: 0 0 0 2px rgb(from var(--color_error) r g b / 20%);
2104
+ }
2105
+ .chevron {
2106
+ position: absolute;
2107
+ inset-inline-end: var(--space_s);
2108
+ display: flex;
2109
+ align-items: center;
2110
+ pointer-events: none;
2111
+ color: var(--color_on-bg);
2112
+ }
2113
+ .chevron svg {
2114
+ width: 1rem;
2115
+ height: 1rem;
2116
+ }
2117
+ }
2118
+
2119
+ /* src/components/interaction/form/Slider/Slider.module.css */
2120
+ @layer component {
2121
+ .formGroup {
2122
+ display: flex;
2123
+ flex-direction: column;
2124
+ gap: var(--space_xxs);
2125
+ }
2126
+ .labelRow {
2127
+ display: flex;
2128
+ justify-content: space-between;
2129
+ align-items: baseline;
2130
+ }
2131
+ .value {
2132
+ font-size: var(--font_size--body--s);
2133
+ font-variant-numeric: tabular-nums;
2134
+ color: var(--color_on-bg--subtle);
2135
+ }
2136
+ .slider {
2137
+ --slider_fill: 0%;
2138
+ --slider_track-height: var(--space_xxs);
2139
+ --slider_thumb-size: calc(var(--space_s) * 2);
2140
+ appearance: none;
2141
+ width: 100%;
2142
+ height: var(--slider_track-height);
2143
+ border-radius: 999px;
2144
+ background:
2145
+ linear-gradient(
2146
+ to right,
2147
+ var(--color_green) 0%,
2148
+ var(--color_green) var(--slider_fill),
2149
+ var(--color_bg--subtle) var(--slider_fill),
2150
+ var(--color_bg--subtle) 100%);
2151
+ cursor: pointer;
2152
+ transition: var(--animation_transition);
2153
+ }
2154
+ .slider:focus-visible {
2155
+ outline: var(--outline_default);
2156
+ outline-offset: var(--outline_offset);
2157
+ border-radius: 999px;
2158
+ }
2159
+ .slider:disabled {
2160
+ opacity: 0.4;
2161
+ cursor: not-allowed;
2162
+ }
2163
+ .slider::-webkit-slider-thumb {
2164
+ appearance: none;
2165
+ width: var(--slider_thumb-size);
2166
+ height: var(--slider_thumb-size);
2167
+ border-radius: 50%;
2168
+ background-color: var(--color_green);
2169
+ box-shadow: var(--shadow_s);
2170
+ transition: var(--animation_transition);
2171
+ cursor: pointer;
2172
+ }
2173
+ .slider::-moz-range-thumb {
2174
+ width: var(--slider_thumb-size);
2175
+ height: var(--slider_thumb-size);
2176
+ border: none;
2177
+ border-radius: 50%;
2178
+ background-color: var(--color_green);
2179
+ box-shadow: var(--shadow_s);
2180
+ cursor: pointer;
2181
+ }
2182
+ .sliderError {
2183
+ background:
2184
+ linear-gradient(
2185
+ to right,
2186
+ var(--color_error) 0%,
2187
+ var(--color_error) var(--slider_fill),
2188
+ var(--color_bg--subtle) var(--slider_fill),
2189
+ var(--color_bg--subtle) 100%);
2190
+ }
2191
+ .sliderError::-webkit-slider-thumb {
2192
+ background-color: var(--color_error);
2193
+ }
2194
+ .sliderError::-moz-range-thumb {
2195
+ background-color: var(--color_error);
2196
+ }
2197
+ @media (prefers-reduced-motion: reduce) {
2198
+ .slider,
2199
+ .slider::-webkit-slider-thumb,
2200
+ .slider::-moz-range-thumb {
2201
+ transition: none;
2202
+ }
2203
+ }
2204
+ }
2205
+
2206
+ /* src/components/interaction/form/Switch/Switch.module.css */
2207
+ @layer component {
2208
+ .switchGroup {
2209
+ --switch_thumb-size: 1.25em;
2210
+ --switch_track-pad: var(--space_xxxs);
2211
+ --switch_track-height: calc(var(--switch_thumb-size) + var(--switch_track-pad) * 2);
2212
+ --switch_track-width: calc(var(--switch_thumb-size) * 2 + var(--switch_track-pad) * 2);
2213
+ --track_bg: var(--color_grey--subtle);
2214
+ --track_active: var(--color_green--subtle);
2215
+ --thumb_bg: var(--color_grey);
2216
+ --thumb_bg--active: var(--color_green--strong);
2217
+ display: flex;
2218
+ flex-direction: column;
2219
+ margin-block-end: var(--space_m);
2220
+ }
2221
+ .switchGroup.--size_small {
2222
+ --switch_thumb-size: 1em;
2223
+ }
2224
+ .switchGroup.--size_medium {
2225
+ --switch_thumb-size: 1.25em;
2226
+ }
2227
+ .switchGroup.--size_large {
2228
+ --switch_thumb-size: 1.5em;
2229
+ }
2230
+ .inputWrapper {
2231
+ display: flex;
2232
+ align-items: center;
2233
+ gap: var(--space_xs);
2234
+ }
2235
+ .trackWrapper {
2236
+ position: relative;
2237
+ display: inline-flex;
2238
+ align-items: center;
2239
+ flex-shrink: 0;
2240
+ width: var(--switch_track-width);
2241
+ height: var(--switch_track-height);
2242
+ }
2243
+ .switch {
2244
+ position: absolute;
2245
+ inset: 0;
2246
+ appearance: none;
2247
+ opacity: 0;
2248
+ width: 100%;
2249
+ height: 100%;
2250
+ margin: 0;
2251
+ cursor: pointer;
2252
+ z-index: 1;
2253
+ }
2254
+ .switch:disabled {
2255
+ cursor: not-allowed;
2256
+ }
2257
+ .track {
2258
+ display: inline-flex;
2259
+ align-items: center;
2260
+ width: var(--switch_track-width);
2261
+ height: var(--switch_track-height);
2262
+ border-radius: 999px;
2263
+ background-color: var(--track_bg);
2264
+ padding-inline: var(--switch_track-pad);
2265
+ pointer-events: none;
2266
+ transition: var(--animation_transition);
2267
+ outline: 1px solid var(--thumb_bg);
2268
+ outline-offset: var(--outline_offset);
2269
+ }
2270
+ .thumb {
2271
+ display: block;
2272
+ width: var(--switch_thumb-size);
2273
+ height: var(--switch_thumb-size);
2274
+ border-radius: 50%;
2275
+ background-color: var(--thumb_bg);
2276
+ box-shadow: var(--shadow_s);
2277
+ transition: var(--animation_transition);
2278
+ transform: translateX(0);
2279
+ }
2280
+ .switch.switchError + .track {
2281
+ outline: 1px solid var(--color_error);
2282
+ }
2283
+ .switch:checked + .track {
2284
+ background-color: var(--track_active);
2285
+ outline-color: var(--thumb_bg--active);
2286
+ }
2287
+ .switch:checked + .track .thumb {
2288
+ background-color: var(--thumb_bg--active);
2289
+ transform: translateX(var(--switch_thumb-size));
2290
+ }
2291
+ .switch:focus-visible + .track {
2292
+ outline: var(--outline_default);
2293
+ outline-offset: var(--outline_offset);
2294
+ border-radius: 999px;
2295
+ }
2296
+ .switch:disabled + .track {
2297
+ opacity: 0.4;
2298
+ }
2299
+ @media (prefers-reduced-motion: reduce) {
2300
+ .track,
2301
+ .thumb {
2302
+ transition: none;
2303
+ }
2304
+ }
2305
+ }
2306
+
2307
+ /* src/components/interaction/form/Textarea/Textarea.module.css */
2308
+ @layer component {
2309
+ .formGroup {
2310
+ display: flex;
2311
+ flex-direction: column;
2312
+ }
2313
+ .textarea {
2314
+ --textarea_border-color: var(--color_on-bg);
2315
+ --textarea_focus-ring: 0 0 0 2px rgb(from var(--color_interactive) r g b / 20%);
2316
+ font-family: var(--font_family--body);
2317
+ font-size: var(--font_size--body);
2318
+ line-height: var(--font_line-height--body);
2319
+ padding: var(--space_s);
2320
+ border: 1px solid var(--textarea_border-color);
2321
+ border-radius: var(--border_radius--xs);
2322
+ background-color: var(--color_bg);
2323
+ color: var(--color_on-bg);
2324
+ resize: vertical;
2325
+ min-height: calc(var(--space_m) * 5);
2326
+ transition: var(--animation_transition);
2327
+ }
2328
+ .textarea:focus {
2329
+ --textarea_border-color: var(--color_interactive);
2330
+ outline: none;
2331
+ box-shadow: var(--textarea_focus-ring);
2332
+ }
2333
+ .textarea:disabled {
2334
+ opacity: 0.5;
2335
+ cursor: not-allowed;
2336
+ resize: none;
2337
+ }
2338
+ .textareaError {
2339
+ --textarea_border-color: var(--color_error);
2340
+ }
2341
+ .textareaError:focus {
2342
+ --textarea_focus-ring: 0 0 0 2px rgb(from var(--color_error) r g b / 20%);
2343
+ }
2344
+ }
2345
+
2346
+ /* src/components/layout/ButtonGroup/ButtonGroup.module.css */
2347
+ @layer component {
2348
+ .buttonGroup {
2349
+ container-type: inline-size;
2350
+ container-name: button-group;
2351
+ grid-column: var(--grid_span-100);
2352
+ }
2353
+ .buttonGroup .container {
2354
+ position: relative;
2355
+ display: flex;
2356
+ flex-direction: column-reverse;
2357
+ gap: var(--space_l);
2358
+ align-items: center;
2359
+ }
2360
+ .buttonGroup.--variant__card .container {
2361
+ align-items: stretch;
2362
+ }
2363
+ .buttonGroup.--variant__flow .container,
2364
+ .buttonGroup.--variant__modal .container {
2365
+ align-items: center;
2366
+ }
2367
+ .buttonGroup.--variant__content .container {
2368
+ align-items: flex-start;
2369
+ }
2370
+ @supports (contain: inline-size) {
2371
+ @container button-group (min-width: 30rem) {
2372
+ .buttonGroup .container {
2373
+ flex-direction: row;
2374
+ justify-content: space-between;
2375
+ }
2376
+ .buttonGroup.--variant__modal .container > :first-child:last-child,
2377
+ .buttonGroup.--variant__flow .container > :first-child:last-child {
2378
+ margin-inline-start: auto;
2379
+ }
2380
+ .buttonGroup.--variant__card .container {
2381
+ justify-content: center;
2382
+ }
2383
+ .buttonGroup.--variant__modal .container {
2384
+ justify-content: flex-end;
2385
+ }
2386
+ .buttonGroup.--variant__content .container {
2387
+ justify-content: flex-start;
2388
+ align-items: center;
2389
+ }
2390
+ .buttonGroup.--variant__grid .container {
2391
+ justify-content: center;
2392
+ }
2393
+ }
2394
+ }
2395
+ }
2396
+
2397
+ /* src/components/layout/Card/Card.module.css */
2398
+ @layer component {
2399
+ .card {
2400
+ background-color: var(--color_bg);
2401
+ border-radius: var(--border_radius--m);
2402
+ transition: all 0.3s ease;
2403
+ position: relative;
2404
+ }
2405
+ .card.--default {
2406
+ box-shadow: var(--shadow_s);
2407
+ }
2408
+ .card.--elevated {
2409
+ box-shadow: var(--shadow_m);
2410
+ }
2411
+ .card.--outlined {
2412
+ border: 1px solid var(--color_border);
2413
+ box-shadow: var(--shadow_s);
2414
+ }
2415
+ .card.--clickable {
2416
+ cursor: pointer;
2417
+ }
2418
+ .card.--padding-none {
2419
+ padding: 0;
2420
+ }
2421
+ .card.--padding-small {
2422
+ padding: var(--space_s);
2423
+ }
2424
+ .card.--padding-medium {
2425
+ padding: var(--space_m);
2426
+ }
2427
+ .card.--padding-large {
2428
+ padding: var(--space_l);
2429
+ }
2430
+ .card.--text-start {
2431
+ text-align: left;
2432
+ }
2433
+ .card.--text-center {
2434
+ text-align: center;
2435
+ }
2436
+ .card.--text-end {
2437
+ text-align: right;
2438
+ }
2439
+ @media (hover: hover) and (pointer: fine) {
2440
+ .card.--clickable:hover {
2441
+ transform: translateY(-2px);
2442
+ box-shadow: var(--shadow_xl);
2443
+ }
2444
+ .card.--default:hover {
2445
+ box-shadow: var(--shadow_m);
2446
+ }
2447
+ .card.--elevated:hover {
2448
+ box-shadow: var(--shadow_2xl);
2449
+ }
2450
+ .card.--outlined:hover {
2451
+ box-shadow: var(--shadow_s);
2452
+ }
2453
+ }
2454
+ }
2455
+
2456
+ /* src/components/layout/SectionHeader/SectionHeader.module.css */
2457
+ @layer component {
2458
+ .sectionHeader {
2459
+ --sectionHeader-title-color: var(--color_on-bg);
2460
+ --sectionHeader_subtitle-color: var(--color_grey--strong);
2461
+ display: flex;
2462
+ flex-direction: column;
2463
+ gap: var(--space_m);
2464
+ grid-column: var(--grid_span-100);
2465
+ margin-block-end: var(--space_xl);
2466
+ }
2467
+ .title {
2468
+ color: var(--sectionHeader-title-color);
2469
+ margin: 0;
2470
+ font-family: var(--font_family--body);
2471
+ }
2472
+ .subtitle {
2473
+ color: var(--sectionHeader_subtitle-color);
2474
+ margin: 0;
2475
+ font-family: var(--font_family--body);
2476
+ font-weight: var(--font_weight--medium);
2477
+ }
2478
+ .sectionHeader.--start {
2479
+ align-items: flex-start;
2480
+ text-align: left;
2481
+ }
2482
+ .sectionHeader.--center {
2483
+ align-items: center;
2484
+ text-align: center;
2485
+ }
2486
+ .sectionHeader.--end {
2487
+ align-items: flex-end;
2488
+ text-align: right;
2489
+ }
2490
+ .sectionHeader.--small .title {
2491
+ font-size: var(--font_size--heading-1);
2492
+ line-height: var(--font_line-height--heading);
2493
+ font-weight: var(--font_weight--bold);
2494
+ }
2495
+ .sectionHeader.--small .subtitle {
2496
+ font-size: var(--font_size--body);
2497
+ line-height: 1.4;
2498
+ }
2499
+ .sectionHeader.--medium .title {
2500
+ font-size: var(--font_size--display);
2501
+ line-height: var(--font_line-height--display);
2502
+ font-weight: var(--font_weight--bold);
2503
+ }
2504
+ .sectionHeader.--medium .subtitle {
2505
+ font-size: var(--font_size--heading-3);
2506
+ line-height: 1.3;
2507
+ }
2508
+ .sectionHeader.--large .title {
2509
+ font-size: var(--font_size--display);
2510
+ line-height: var(--font_line-height--display);
2511
+ font-weight: var(--font_weight--bold);
2512
+ letter-spacing: var(--font_tracking--tight);
2513
+ }
2514
+ .sectionHeader.--large .subtitle {
2515
+ font-size: var(--font_size--heading-2);
2516
+ line-height: 1.3;
2517
+ font-weight: var(--font_weight--medium);
2518
+ }
2519
+ }
2520
+
2521
+ /* src/components/layout/IconWrapper/IconWrapper.module.css */
2522
+ @layer component {
2523
+ .wrapper {
2524
+ --icon-wrapper-color: var(--color_bg);
2525
+ --color_on-icon-wrapper-color: var(--color_on-bg);
2526
+ width: 2em;
2527
+ height: 2em;
2528
+ font-size: 3em;
2529
+ border-radius: 50%;
2530
+ display: flex;
2531
+ align-items: center;
2532
+ justify-content: center;
2533
+ margin: var(--space_l) auto var(--space_m);
2534
+ background: var(--icon-wrapper-color);
2535
+ color: var(--color_on-icon-wrapper-color);
2536
+ fill: var(--color_on-icon-wrapper-color);
2537
+ position: relative;
2538
+ transition: var(--animation_transition);
2539
+ }
2540
+ .wrapper svg {
2541
+ fill: currentcolor;
2542
+ }
2543
+ }