fokus-styles 2.4.0 → 2.6.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.
Files changed (212) hide show
  1. package/dist/css/components.css +561 -83
  2. package/dist/css/components.min.css +1 -1
  3. package/dist/css/fokus-components.css +561 -83
  4. package/dist/css/fokus-components.min.css +1 -1
  5. package/dist/css/fokus-rtl.css +697 -83
  6. package/dist/css/fokus-rtl.min.css +1 -1
  7. package/dist/css/fokus-utilities.css +136 -0
  8. package/dist/css/fokus-utilities.min.css +1 -1
  9. package/dist/css/fokus.css +996 -258
  10. package/dist/css/fokus.min.css +1 -1
  11. package/dist/css/forms.css +300 -176
  12. package/dist/css/forms.min.css +1 -1
  13. package/dist/css/helpers.css +136 -0
  14. package/dist/css/helpers.min.css +1 -1
  15. package/dist/js/fokus.js +270 -25
  16. package/dist/js/fokus.min.js +18 -18
  17. package/package.json +17 -15
  18. package/packages/fokus-components/scss/components/_alerts.scss +128 -6
  19. package/packages/fokus-components/scss/components/_badges.scss +26 -10
  20. package/packages/fokus-components/scss/components/_index.scss +1 -0
  21. package/packages/fokus-components/scss/components/_popover.scss +131 -21
  22. package/packages/fokus-components/scss/components/_responsive.scss +23 -0
  23. package/packages/fokus-components/scss/components/_tag.scss +37 -14
  24. package/packages/fokus-components/scss/components/_toasts.scss +156 -11
  25. package/packages/fokus-components/scss/components/_tooltips.scss +70 -18
  26. package/packages/fokus-components/scss/forms/_check-radio-switch.scss +313 -215
  27. package/packages/fokus-components/scss/forms/_forms.scss +16 -0
  28. package/packages/fokus-js/js/carousel.d.ts +4 -0
  29. package/packages/fokus-js/js/carousel.js +8 -0
  30. package/packages/fokus-js/js/core/positioning.js +18 -9
  31. package/packages/fokus-js/js/dropdown.d.ts +4 -0
  32. package/packages/fokus-js/js/dropdown.js +7 -0
  33. package/packages/fokus-js/js/popover.js +26 -1
  34. package/packages/fokus-js/js/tabs.d.ts +3 -0
  35. package/packages/fokus-js/js/tabs.js +5 -0
  36. package/packages/fokus-js/js/tag.js +17 -0
  37. package/packages/fokus-js/js/toast.js +77 -3
  38. package/packages/fokus-js/js/tooltip.d.ts +8 -1
  39. package/packages/fokus-js/js/tooltip.js +106 -13
  40. package/packages/fokus-utilities/scss/utilities/_api.scss +48 -0
  41. package/CHANGELOG.md +0 -910
  42. package/dist/css/components.css.map +0 -1
  43. package/dist/css/components.min.css.map +0 -1
  44. package/dist/css/fokus-components.css.map +0 -1
  45. package/dist/css/fokus-components.min.css.map +0 -1
  46. package/dist/css/fokus-core.css.map +0 -1
  47. package/dist/css/fokus-core.min.css.map +0 -1
  48. package/dist/css/fokus-dark.css.map +0 -1
  49. package/dist/css/fokus-dark.min.css.map +0 -1
  50. package/dist/css/fokus-rtl.css.map +0 -1
  51. package/dist/css/fokus-rtl.min.css.map +0 -1
  52. package/dist/css/fokus-utilities.css.map +0 -1
  53. package/dist/css/fokus-utilities.min.css.map +0 -1
  54. package/dist/css/fokus.css.map +0 -1
  55. package/dist/css/fokus.min.css.map +0 -1
  56. package/dist/css/fonts.css.map +0 -1
  57. package/dist/css/fonts.min.css.map +0 -1
  58. package/dist/css/forms.css.map +0 -1
  59. package/dist/css/forms.min.css.map +0 -1
  60. package/dist/css/helpers.css.map +0 -1
  61. package/dist/css/helpers.min.css.map +0 -1
  62. package/dist/css/layout.css.map +0 -1
  63. package/dist/css/layout.min.css.map +0 -1
  64. package/dist/js/fokus.js.map +0 -7
  65. package/dist/js/fokus.min.js.map +0 -7
  66. package/docs/README.md +0 -86
  67. package/docs/comparison.md +0 -124
  68. package/docs/components/accordion.md +0 -104
  69. package/docs/components/alert-dialog.md +0 -99
  70. package/docs/components/alert.md +0 -59
  71. package/docs/components/avatar.md +0 -13
  72. package/docs/components/badge.md +0 -82
  73. package/docs/components/breadcrumb.md +0 -93
  74. package/docs/components/button-group.md +0 -13
  75. package/docs/components/button.md +0 -98
  76. package/docs/components/card.md +0 -111
  77. package/docs/components/carousel.md +0 -167
  78. package/docs/components/checkbox.md +0 -97
  79. package/docs/components/close-button.md +0 -13
  80. package/docs/components/code.md +0 -13
  81. package/docs/components/collapse.md +0 -78
  82. package/docs/components/combobox.md +0 -123
  83. package/docs/components/command-palette.md +0 -131
  84. package/docs/components/datatable.md +0 -173
  85. package/docs/components/datepicker.md +0 -137
  86. package/docs/components/divider.md +0 -57
  87. package/docs/components/dropdown.md +0 -103
  88. package/docs/components/empty-state.md +0 -65
  89. package/docs/components/file-upload-advanced.md +0 -116
  90. package/docs/components/file-upload.md +0 -93
  91. package/docs/components/icon-link.md +0 -13
  92. package/docs/components/input-group.md +0 -73
  93. package/docs/components/input.md +0 -90
  94. package/docs/components/list-group.md +0 -13
  95. package/docs/components/modal.md +0 -120
  96. package/docs/components/navbar.md +0 -74
  97. package/docs/components/nested-menu.md +0 -90
  98. package/docs/components/notification-center.md +0 -116
  99. package/docs/components/offcanvas.md +0 -102
  100. package/docs/components/pagination.md +0 -145
  101. package/docs/components/placeholder.md +0 -13
  102. package/docs/components/popover.md +0 -105
  103. package/docs/components/progress.md +0 -126
  104. package/docs/components/radio.md +0 -70
  105. package/docs/components/range.md +0 -83
  106. package/docs/components/rating.md +0 -91
  107. package/docs/components/ratio.md +0 -13
  108. package/docs/components/scrollspy.md +0 -13
  109. package/docs/components/segmented-control.md +0 -82
  110. package/docs/components/select.md +0 -89
  111. package/docs/components/skeleton.md +0 -70
  112. package/docs/components/stepper.md +0 -107
  113. package/docs/components/switch.md +0 -75
  114. package/docs/components/table.md +0 -90
  115. package/docs/components/tabs.md +0 -104
  116. package/docs/components/tag.md +0 -129
  117. package/docs/components/tile.md +0 -112
  118. package/docs/components/timeline.md +0 -78
  119. package/docs/components/toast.md +0 -95
  120. package/docs/components/tooltip.md +0 -77
  121. package/docs/components/tree-view.md +0 -118
  122. package/docs/contributing/contributing.md +0 -18
  123. package/docs/getting-started/installation.md +0 -70
  124. package/docs/getting-started/usage.md +0 -105
  125. package/docs/guides/accessibility.md +0 -102
  126. package/docs/guides/charts.md +0 -73
  127. package/docs/guides/dark-mode.md +0 -90
  128. package/docs/guides/icons.md +0 -99
  129. package/docs/guides/javascript-api.md +0 -9
  130. package/docs/guides/layout-advanced.md +0 -118
  131. package/docs/guides/migration-clarus-to-fokus.md +0 -48
  132. package/docs/guides/migration-external.md +0 -123
  133. package/docs/guides/migration-v1.md +0 -63
  134. package/docs/guides/print.md +0 -30
  135. package/docs/guides/rtl-and-system-preferences.md +0 -28
  136. package/docs/guides/theming.md +0 -140
  137. package/docs/guides/utility-api.md +0 -9
  138. package/docs/prompts/prompt-plan.md +0 -45
  139. package/docs/reference/accessibility-matrix.md +0 -77
  140. package/docs/reference/browser-support.md +0 -75
  141. package/docs/reference/contrast-report.md +0 -50
  142. package/docs/reference/definitions.md +0 -864
  143. package/docs/reference/design-tokens.md +0 -194
  144. package/docs/reference/scss-architecture.md +0 -227
  145. package/docs/reference/size-baseline.json +0 -34
  146. package/docs/reference/stability.md +0 -89
  147. package/docs/showcase.md +0 -25
  148. package/mockup/README.md +0 -41
  149. package/mockup/assets/carousel-planning.png +0 -0
  150. package/mockup/assets/carousel-workspace.png +0 -0
  151. package/mockup/assets/example-theme.css +0 -8
  152. package/mockup/assets/example-theme.js +0 -11
  153. package/mockup/assets/showcase-contracts.js +0 -84
  154. package/mockup/assets/showcase.css +0 -91
  155. package/mockup/assets/showcase.js +0 -724
  156. package/mockup/content-data.html +0 -9
  157. package/mockup/examples/accordion-tabs-toast.html +0 -149
  158. package/mockup/examples/alert-dialog.html +0 -84
  159. package/mockup/examples/alerts.html +0 -41
  160. package/mockup/examples/badges-alerts.html +0 -77
  161. package/mockup/examples/buttons.html +0 -58
  162. package/mockup/examples/cards.html +0 -132
  163. package/mockup/examples/carousel.html +0 -126
  164. package/mockup/examples/charts.html +0 -102
  165. package/mockup/examples/check-radio-switch.html +0 -144
  166. package/mockup/examples/collapse.html +0 -69
  167. package/mockup/examples/combobox.html +0 -60
  168. package/mockup/examples/command-palette.html +0 -64
  169. package/mockup/examples/datatable.html +0 -113
  170. package/mockup/examples/datepicker.html +0 -62
  171. package/mockup/examples/divider.html +0 -45
  172. package/mockup/examples/dropdown-tooltip.html +0 -77
  173. package/mockup/examples/empty-state.html +0 -56
  174. package/mockup/examples/file-drop.html +0 -74
  175. package/mockup/examples/file-upload-advanced.html +0 -68
  176. package/mockup/examples/forms-advanced.html +0 -77
  177. package/mockup/examples/hover-card.html +0 -86
  178. package/mockup/examples/icons.html +0 -157
  179. package/mockup/examples/input-group.html +0 -74
  180. package/mockup/examples/js-foundation.html +0 -215
  181. package/mockup/examples/layout.html +0 -134
  182. package/mockup/examples/modal-select.html +0 -127
  183. package/mockup/examples/nested-menu.html +0 -73
  184. package/mockup/examples/notification-center.html +0 -86
  185. package/mockup/examples/offcanvas-popover.html +0 -133
  186. package/mockup/examples/pagination-breadcrumbs.html +0 -92
  187. package/mockup/examples/range.html +0 -69
  188. package/mockup/examples/rating.html +0 -103
  189. package/mockup/examples/segmented-control.html +0 -96
  190. package/mockup/examples/skeletons.html +0 -82
  191. package/mockup/examples/spinner-progress.html +0 -130
  192. package/mockup/examples/stepper.html +0 -119
  193. package/mockup/examples/tables-navbar.html +0 -89
  194. package/mockup/examples/tag.html +0 -105
  195. package/mockup/examples/theming.html +0 -68
  196. package/mockup/examples/tile.html +0 -107
  197. package/mockup/examples/timeline.html +0 -108
  198. package/mockup/examples/tree-view.html +0 -68
  199. package/mockup/feedback-actions.html +0 -9
  200. package/mockup/forms.html +0 -13
  201. package/mockup/foundations.html +0 -7
  202. package/mockup/kitchen-sink.html +0 -696
  203. package/mockup/navigation-disclosure.html +0 -11
  204. package/mockup/overlays-commands.html +0 -12
  205. package/mockup/templates/README.md +0 -20
  206. package/mockup/templates/admin.html +0 -334
  207. package/mockup/templates/auth.html +0 -234
  208. package/mockup/templates/dashboard.html +0 -442
  209. package/mockup/templates/landing.html +0 -397
  210. package/packages/fokus-icons/package.json +0 -46
  211. package/scripts/migrate-fokus-map.json +0 -1366
  212. package/scripts/migrate-fokus.mjs +0 -97
@@ -607,46 +607,155 @@
607
607
  }
608
608
  @layer components {
609
609
  .fs-alert {
610
+ --fs-alert-padding-block: 12px;
611
+ --fs-alert-padding-inline: 16px;
612
+ --fs-alert-gap: 12px;
613
+ --fs-alert-radius: var(--fs-radius-md, 6px);
614
+ --fs-alert-border-width: 1px;
615
+ --fs-alert-accent-width: 4px;
616
+ --fs-alert-icon-size: 20px;
617
+ --fs-alert-heading-gap: 4px;
618
+ --fs-alert-actions-gap: 8px;
610
619
  display: flex;
611
620
  align-items: flex-start;
612
- gap: 8px;
613
- padding: 12px 16px;
614
- border: 1px solid var(--fs-color-border);
615
- border-left: 5px solid var(--fs-color-border);
616
- border-radius: 0;
621
+ gap: var(--fs-alert-gap);
622
+ min-inline-size: 0;
623
+ padding-block: var(--fs-alert-padding-block);
624
+ padding-inline: var(--fs-alert-padding-inline);
625
+ border: var(--fs-alert-border-width) solid var(--fs-color-border);
626
+ border-inline-start: var(--fs-alert-accent-width) solid var(--fs-color-border);
627
+ border-radius: var(--fs-alert-radius);
617
628
  color: var(--fs-color-text);
618
629
  background-color: var(--fs-color-surface-raised);
619
630
  font-size: 0.75rem;
620
631
  }
632
+ .fs-alert-inline {
633
+ --fs-alert-padding-block: 8px;
634
+ --fs-alert-padding-inline: 12px;
635
+ --fs-alert-gap: 8px;
636
+ --fs-alert-accent-width: 3px;
637
+ --fs-alert-icon-size: 16px;
638
+ }
639
+ .fs-alert-group {
640
+ display: grid;
641
+ gap: 12px;
642
+ min-inline-size: 0;
643
+ }
644
+ .fs-alert[aria-busy=true],
645
+ .fs-alert.is-loading {
646
+ cursor: progress;
647
+ }
648
+ .fs-alert[aria-busy=true] .fs-alert-actions,
649
+ .fs-alert.is-loading .fs-alert-actions {
650
+ opacity: 0.75;
651
+ }
652
+ .fs-alert .fs-spinner {
653
+ flex: 0 0 auto;
654
+ align-self: flex-start;
655
+ margin-block: 2px;
656
+ }
657
+ .fs-alert-icon {
658
+ display: inline-flex;
659
+ flex: 0 0 var(--fs-alert-icon-size);
660
+ align-items: center;
661
+ justify-content: center;
662
+ inline-size: var(--fs-alert-icon-size);
663
+ block-size: var(--fs-alert-icon-size);
664
+ color: currentcolor;
665
+ }
666
+ .fs-alert-icon .fs-icon,
667
+ .fs-alert-icon > svg {
668
+ inline-size: 100%;
669
+ block-size: 100%;
670
+ }
671
+ .fs-alert-content {
672
+ flex: 1 1 auto;
673
+ min-inline-size: 0;
674
+ }
675
+ .fs-alert-heading {
676
+ margin: 0 0 var(--fs-alert-heading-gap);
677
+ color: inherit;
678
+ font-size: inherit;
679
+ font-weight: 600;
680
+ line-height: 1.35;
681
+ }
682
+ .fs-alert-text {
683
+ margin: 0;
684
+ line-height: 1.5;
685
+ }
686
+ .fs-alert-actions {
687
+ display: flex;
688
+ flex-wrap: wrap;
689
+ gap: var(--fs-alert-actions-gap);
690
+ align-items: center;
691
+ margin-block-start: var(--fs-alert-actions-gap);
692
+ }
693
+ .fs-alert-link {
694
+ color: inherit;
695
+ font-weight: 500;
696
+ text-decoration: underline;
697
+ text-underline-offset: 2px;
698
+ }
699
+ .fs-alert-close {
700
+ flex: 0 0 auto;
701
+ margin-inline-start: auto;
702
+ color: inherit;
703
+ }
621
704
  .fs-alert-primary {
622
705
  color: var(--fs-alert-primary-text);
623
706
  background-color: var(--fs-alert-primary-bg);
624
- border-color: var(--fs-color-primary);
707
+ border-color: var(--fs-color-border);
708
+ border-inline-start-color: var(--fs-color-primary);
625
709
  }
626
710
  .fs-alert-secondary {
627
711
  color: var(--fs-alert-secondary-text);
628
712
  background-color: var(--fs-alert-secondary-bg);
629
- border-color: var(--fs-color-secondary);
713
+ border-color: var(--fs-color-border);
714
+ border-inline-start-color: var(--fs-color-secondary);
630
715
  }
631
716
  .fs-alert-success {
632
717
  color: var(--fs-alert-success-text);
633
718
  background-color: var(--fs-alert-success-bg);
634
- border-color: var(--fs-color-success);
719
+ border-color: var(--fs-color-border);
720
+ border-inline-start-color: var(--fs-color-success);
635
721
  }
636
722
  .fs-alert-warning {
637
723
  color: var(--fs-alert-warning-text);
638
724
  background-color: var(--fs-alert-warning-bg);
639
- border-color: var(--fs-color-warning);
725
+ border-color: var(--fs-color-border);
726
+ border-inline-start-color: var(--fs-color-warning);
640
727
  }
641
728
  .fs-alert-danger {
642
729
  color: var(--fs-alert-danger-text);
643
730
  background-color: var(--fs-alert-danger-bg);
644
- border-color: var(--fs-color-danger);
731
+ border-color: var(--fs-color-border);
732
+ border-inline-start-color: var(--fs-color-danger);
645
733
  }
646
734
  .fs-alert-info {
647
735
  color: var(--fs-alert-info-text);
648
736
  background-color: var(--fs-alert-info-bg);
649
- border-color: var(--fs-color-info);
737
+ border-color: var(--fs-color-border);
738
+ border-inline-start-color: var(--fs-color-info);
739
+ }
740
+ @media (width <= 480px) {
741
+ .fs-alert {
742
+ --fs-alert-padding-inline: 12px;
743
+ }
744
+ .fs-alert-actions {
745
+ align-items: flex-start;
746
+ }
747
+ }
748
+ @media (forced-colors: active) {
749
+ .fs-alert {
750
+ border-color: CanvasText;
751
+ border-inline-start-color: Highlight;
752
+ color: CanvasText;
753
+ background-color: Canvas;
754
+ }
755
+ .fs-alert-link,
756
+ .fs-alert .fs-btn {
757
+ forced-color-adjust: none;
758
+ }
650
759
  }
651
760
  }
652
761
  @layer components {
@@ -655,13 +764,16 @@
655
764
  --fs-badge-bg: var(--fs-color-subtle);
656
765
  --fs-badge-border: transparent;
657
766
  --fs-badge-height: 22px;
658
- --fs-badge-radius: 0;
767
+ --fs-badge-radius: var(--fs-radius-sm);
768
+ --fs-badge-padding-inline: 8px;
769
+ --fs-badge-padding-block-start: 2px;
770
+ --fs-badge-padding-block-end: 2px;
659
771
  display: inline-flex;
660
772
  align-items: center;
661
773
  gap: 6px;
662
774
  justify-content: center;
663
775
  min-height: var(--fs-badge-height);
664
- padding: 1px 8px 3px;
776
+ padding: var(--fs-badge-padding-block-start) var(--fs-badge-padding-inline) var(--fs-badge-padding-block-end);
665
777
  border: 1px solid var(--fs-badge-border);
666
778
  border-radius: var(--fs-badge-radius);
667
779
  color: var(--fs-badge-color);
@@ -758,12 +870,16 @@
758
870
  }
759
871
  .fs-badge-sm {
760
872
  --fs-badge-height: 18px;
761
- padding: 0 6px 2px;
873
+ --fs-badge-padding-inline: 6px;
874
+ --fs-badge-padding-block-start: 1px;
875
+ --fs-badge-padding-block-end: 1px;
762
876
  font-size: 0.6875rem;
763
877
  }
764
878
  .fs-badge-lg {
765
879
  --fs-badge-height: 26px;
766
- padding: 2px 10px 4px;
880
+ --fs-badge-padding-inline: 10px;
881
+ --fs-badge-padding-block-start: 3px;
882
+ --fs-badge-padding-block-end: 3px;
767
883
  font-size: 0.8125rem;
768
884
  }
769
885
  .fs-badge-dot::before {
@@ -780,13 +896,19 @@
780
896
  padding-inline: 6px;
781
897
  font-variant-numeric: tabular-nums;
782
898
  }
899
+ .fs-badge-count-circle {
900
+ aspect-ratio: 1;
901
+ min-width: var(--fs-badge-height);
902
+ padding-inline: 0;
903
+ border-radius: 50%;
904
+ }
783
905
  .fs-badge-split {
784
906
  --fs-badge-split-label-bg: var(--fs-color-black);
785
907
  --fs-badge-split-label-color: var(--fs-color-white);
786
908
  --fs-badge-split-value-bg: var(--fs-color-primary);
787
909
  --fs-badge-split-value-color: #ffffff;
788
910
  --fs-badge-split-height: 22px;
789
- --fs-badge-split-radius: 0;
911
+ --fs-badge-split-radius: var(--fs-radius-sm);
790
912
  display: inline-flex;
791
913
  min-height: var(--fs-badge-split-height);
792
914
  overflow: hidden;
@@ -802,7 +924,8 @@
802
924
  display: inline-flex;
803
925
  align-items: center;
804
926
  min-height: var(--fs-badge-split-height);
805
- padding: 1px 8px 3px;
927
+ padding-block: 2px;
928
+ padding-inline: 8px;
806
929
  }
807
930
  .fs-badge-split-label {
808
931
  color: var(--fs-badge-split-label-color);
@@ -850,11 +973,13 @@
850
973
  }
851
974
  .fs-badge-split.fs-badge-sm .fs-badge-split-label,
852
975
  .fs-badge-split.fs-badge-sm .fs-badge-split-value {
853
- padding: 0 6px 2px;
976
+ padding-block: 1px;
977
+ padding-inline: 6px;
854
978
  }
855
979
  .fs-badge-split.fs-badge-lg .fs-badge-split-label,
856
980
  .fs-badge-split.fs-badge-lg .fs-badge-split-value {
857
- padding: 2px 10px 4px;
981
+ padding-block: 3px;
982
+ padding-inline: 10px;
858
983
  }
859
984
  }
860
985
  @layer components {
@@ -1602,8 +1727,17 @@
1602
1727
  }
1603
1728
  @layer components {
1604
1729
  .fs-tag {
1730
+ --fs-tag-icon-size: var(--fs-tag-close-size);
1731
+ --fs-tag-icon-glyph-size: 12px;
1732
+ --fs-tag-icon-gap: 4px;
1733
+ --fs-tag-icon-color: currentcolor;
1734
+ --fs-tag-close-size: calc(var(--fs-badge-height) - 2px);
1735
+ --fs-tag-close-gap: 4px;
1736
+ --fs-tag-padding-inline-start: 8px;
1737
+ --fs-tag-padding-inline-end: 2px;
1605
1738
  gap: 0;
1606
- padding: 0 0 0 8px;
1739
+ padding-inline-start: var(--fs-tag-padding-inline-start);
1740
+ padding-inline-end: var(--fs-tag-padding-inline-end);
1607
1741
  }
1608
1742
  .fs-tag-label {
1609
1743
  min-width: 0;
@@ -1618,23 +1752,29 @@
1618
1752
  }
1619
1753
  .fs-tag-icon {
1620
1754
  display: inline-grid;
1621
- width: 12px;
1622
- height: 12px;
1623
- flex: 0 0 12px;
1624
- margin-right: 4px;
1755
+ width: var(--fs-tag-icon-size);
1756
+ height: var(--fs-tag-icon-size);
1757
+ flex: 0 0 var(--fs-tag-icon-size);
1625
1758
  place-items: center;
1759
+ color: var(--fs-tag-icon-color);
1760
+ margin-inline-end: var(--fs-tag-icon-gap);
1761
+ }
1762
+ .fs-tag-icon-end {
1763
+ margin-inline-start: auto;
1764
+ margin-inline-end: var(--fs-tag-icon-gap);
1626
1765
  }
1627
1766
  .fs-tag-icon .fs-icon {
1628
- width: 12px;
1629
- height: 12px;
1767
+ display: block;
1768
+ width: var(--fs-tag-icon-glyph-size);
1769
+ height: var(--fs-tag-icon-glyph-size);
1630
1770
  stroke: currentcolor;
1631
1771
  }
1632
1772
  .fs-tag .fs-btn-close {
1633
- width: calc(var(--fs-badge-height) - 2px);
1634
- height: calc(var(--fs-badge-height) - 2px);
1635
- flex: 0 0 calc(var(--fs-badge-height) - 2px);
1636
- margin-left: 4px;
1637
- border-radius: 0;
1773
+ width: var(--fs-tag-close-size);
1774
+ height: var(--fs-tag-close-size);
1775
+ flex: 0 0 var(--fs-tag-close-size);
1776
+ margin-inline-start: var(--fs-tag-close-gap);
1777
+ border-radius: var(--fs-badge-radius);
1638
1778
  background-color: transparent;
1639
1779
  color: inherit;
1640
1780
  opacity: 0.7;
@@ -1642,7 +1782,7 @@
1642
1782
  }
1643
1783
  .fs-tag .fs-btn-close::before,
1644
1784
  .fs-tag .fs-btn-close::after {
1645
- top: calc(50% + 1px);
1785
+ top: 50%;
1646
1786
  width: 8px;
1647
1787
  }
1648
1788
  .fs-tag .fs-btn-close:hover {
@@ -1705,6 +1845,9 @@
1705
1845
  .fs-tag-group .fs-tag:focus-within {
1706
1846
  background-color: color-mix(in srgb, currentcolor 18%, transparent);
1707
1847
  }
1848
+ .fs-tag:has(> .fs-tag-icon:not(.fs-tag-icon-end)) {
1849
+ --fs-tag-padding-inline-start: 2px;
1850
+ }
1708
1851
  .fs-tag-overflow {
1709
1852
  --fs-badge-bg: transparent;
1710
1853
  --fs-badge-color: var(--fs-alert-primary-text);
@@ -1755,7 +1898,7 @@
1755
1898
  display: inline-grid;
1756
1899
  width: calc(var(--fs-badge-height) - 2px);
1757
1900
  height: calc(var(--fs-badge-height) - 2px);
1758
- margin-left: 4px;
1901
+ margin-inline-start: var(--fs-tag-close-gap);
1759
1902
  place-items: center;
1760
1903
  }
1761
1904
  .fs-tag-lock svg {
@@ -2016,118 +2159,229 @@
2016
2159
  }
2017
2160
  @layer components {
2018
2161
  .fs-tooltip {
2162
+ --fs-tooltip-max-width: 240px;
2163
+ --fs-tooltip-padding-block: 6px;
2164
+ --fs-tooltip-padding-inline: 10px;
2165
+ --fs-tooltip-radius: var(--fs-radius-sm);
2166
+ --fs-tooltip-offset: 8px;
2167
+ --fs-tooltip-shadow: var(--fs-shadow-sm, 0 2px 8px rgb(0 0 0 / 18%));
2168
+ --fs-tooltip-arrow-size: 8px;
2169
+ --fs-tooltip-transition-duration: 120ms;
2019
2170
  position: absolute;
2020
2171
  z-index: var(--fs-z-tooltip);
2021
2172
  display: none;
2022
- max-width: 220px;
2173
+ max-inline-size: min(var(--fs-tooltip-max-width), 100vw - 16px);
2174
+ min-inline-size: 0;
2175
+ overflow-wrap: anywhere;
2023
2176
  }
2024
2177
  .fs-tooltip.is-open {
2025
2178
  display: block;
2179
+ pointer-events: none;
2180
+ animation: fs-tooltip-in var(--fs-tooltip-transition-duration) ease-out;
2026
2181
  }
2027
2182
  .fs-tooltip-inner {
2028
- padding: 6px 10px;
2029
- border-radius: var(--fs-radius-sm);
2183
+ padding-block: var(--fs-tooltip-padding-block);
2184
+ padding-inline: var(--fs-tooltip-padding-inline);
2185
+ border: 1px solid transparent;
2186
+ border-radius: var(--fs-tooltip-radius);
2030
2187
  color: var(--fs-tooltip-text);
2031
2188
  background-color: var(--fs-tooltip-bg);
2189
+ box-shadow: var(--fs-tooltip-shadow);
2032
2190
  font-size: 0.6875rem;
2033
- text-align: center;
2191
+ line-height: 1.4;
2192
+ text-align: start;
2034
2193
  }
2035
2194
  .fs-tooltip-arrow {
2036
2195
  position: absolute;
2037
- width: 8px;
2038
- height: 8px;
2196
+ inline-size: var(--fs-tooltip-arrow-size);
2197
+ block-size: var(--fs-tooltip-arrow-size);
2039
2198
  background-color: var(--fs-tooltip-bg);
2040
2199
  transform: rotate(45deg);
2041
2200
  }
2042
2201
  .fs-tooltip[data-placement=top] .fs-tooltip-arrow {
2043
- bottom: -4px;
2044
- left: 50%;
2045
- margin-left: -4px;
2202
+ inset-block-end: -4px;
2203
+ inset-inline-start: var(--fs-tooltip-arrow-offset, 50%);
2204
+ margin-inline-start: -4px;
2046
2205
  }
2047
2206
  .fs-tooltip[data-placement=bottom] .fs-tooltip-arrow {
2048
- top: -4px;
2049
- left: 50%;
2050
- margin-left: -4px;
2207
+ inset-block-start: -4px;
2208
+ inset-inline-start: var(--fs-tooltip-arrow-offset, 50%);
2209
+ margin-inline-start: -4px;
2051
2210
  }
2052
2211
  .fs-tooltip[data-placement=left] .fs-tooltip-arrow {
2053
- top: 50%;
2054
- right: -4px;
2055
- margin-top: -4px;
2212
+ inset-block-start: var(--fs-tooltip-arrow-offset, 50%);
2213
+ inset-inline-end: -4px;
2214
+ margin-block-start: -4px;
2056
2215
  }
2057
2216
  .fs-tooltip[data-placement=right] .fs-tooltip-arrow {
2058
- top: 50%;
2059
- left: -4px;
2060
- margin-top: -4px;
2217
+ inset-block-start: var(--fs-tooltip-arrow-offset, 50%);
2218
+ inset-inline-start: -4px;
2219
+ margin-block-start: -4px;
2220
+ }
2221
+ @media (prefers-reduced-motion: reduce) {
2222
+ .fs-tooltip {
2223
+ animation: none;
2224
+ }
2225
+ }
2226
+ @media (forced-colors: active) {
2227
+ .fs-tooltip-inner,
2228
+ .fs-tooltip-arrow {
2229
+ color: CanvasText;
2230
+ background-color: Canvas;
2231
+ border-color: CanvasText;
2232
+ box-shadow: none;
2233
+ }
2234
+ }
2235
+ @media (prefers-contrast: more) {
2236
+ .fs-tooltip-inner {
2237
+ border-color: currentcolor;
2238
+ box-shadow: none;
2239
+ }
2240
+ }
2241
+ @keyframes fs-tooltip-in {
2242
+ from {
2243
+ opacity: 0;
2244
+ transform: translateY(2px);
2245
+ }
2246
+ to {
2247
+ opacity: 1;
2248
+ transform: translateY(0);
2249
+ }
2061
2250
  }
2062
2251
  }
2063
2252
  @layer components {
2064
2253
  .fs-popover {
2254
+ --fs-popover-width: 320px;
2255
+ --fs-popover-max-width: min(var(--fs-popover-width), calc(100vw - 32px));
2256
+ --fs-popover-padding-block: 12px;
2257
+ --fs-popover-padding-inline: 14px;
2258
+ --fs-popover-gap: 10px;
2259
+ --fs-popover-radius: var(--fs-radius-md, 6px);
2260
+ --fs-popover-shadow: var(--fs-shadow-md);
2261
+ --fs-popover-icon-size: 20px;
2262
+ --fs-popover-heading-gap: 4px;
2263
+ --fs-popover-footer-gap: 8px;
2264
+ --fs-popover-arrow-size: 8px;
2265
+ --fs-popover-border-width: 1px;
2065
2266
  position: absolute;
2066
2267
  z-index: var(--fs-z-offcanvas);
2067
2268
  display: none;
2068
- max-width: 280px;
2269
+ inline-size: var(--fs-popover-width);
2270
+ max-inline-size: var(--fs-popover-max-width);
2271
+ min-inline-size: 0;
2069
2272
  color: var(--fs-color-text);
2070
2273
  background-color: var(--fs-color-surface);
2071
- border: 1px solid var(--fs-color-border);
2072
- border-radius: var(--fs-radius-md);
2073
- box-shadow: var(--fs-shadow-md);
2274
+ border: var(--fs-popover-border-width) solid var(--fs-color-border);
2275
+ border-radius: var(--fs-popover-radius);
2276
+ box-shadow: var(--fs-popover-shadow);
2277
+ overflow-wrap: anywhere;
2074
2278
  }
2075
2279
  .fs-popover.is-open {
2076
2280
  display: block;
2077
2281
  }
2078
2282
  .fs-popover-header {
2079
- padding: 10px 14px;
2283
+ display: flex;
2284
+ align-items: center;
2285
+ gap: var(--fs-popover-gap);
2286
+ min-inline-size: 0;
2287
+ padding-block: var(--fs-popover-padding-block);
2288
+ padding-inline: var(--fs-popover-padding-inline);
2080
2289
  background-color: var(--fs-color-subtle);
2081
2290
  border-bottom: 1px solid var(--fs-color-border);
2082
- border-radius: var(--fs-radius-md) var(--fs-radius-md) 0 0;
2291
+ border-radius: var(--fs-popover-radius) var(--fs-popover-radius) 0 0;
2083
2292
  font-size: 0.75rem;
2084
2293
  font-weight: 500;
2085
2294
  }
2086
2295
  .fs-popover-body {
2087
- padding: 14px;
2296
+ min-inline-size: 0;
2297
+ padding-block: var(--fs-popover-padding-block);
2298
+ padding-inline: var(--fs-popover-padding-inline);
2088
2299
  font-size: 0.75rem;
2300
+ line-height: 1.5;
2301
+ }
2302
+ .fs-popover-icon {
2303
+ display: inline-flex;
2304
+ flex: 0 0 var(--fs-popover-icon-size);
2305
+ align-items: center;
2306
+ justify-content: center;
2307
+ inline-size: var(--fs-popover-icon-size);
2308
+ block-size: var(--fs-popover-icon-size);
2309
+ color: currentcolor;
2310
+ }
2311
+ .fs-popover-icon .fs-icon,
2312
+ .fs-popover-icon > svg {
2313
+ inline-size: 100%;
2314
+ block-size: 100%;
2315
+ }
2316
+ .fs-popover-heading {
2317
+ display: flex;
2318
+ flex: 1 1 auto;
2319
+ flex-wrap: wrap;
2320
+ align-items: baseline;
2321
+ gap: var(--fs-popover-heading-gap);
2322
+ min-inline-size: 0;
2323
+ }
2324
+ .fs-popover-title,
2325
+ .fs-popover-meta,
2326
+ .fs-popover-text {
2327
+ min-inline-size: 0;
2328
+ }
2329
+ .fs-popover-meta {
2330
+ color: var(--fs-color-muted);
2331
+ font-size: 0.6875rem;
2332
+ font-weight: 400;
2333
+ }
2334
+ .fs-popover-text {
2335
+ margin: 0;
2336
+ }
2337
+ .fs-popover-close {
2338
+ flex: 0 0 auto;
2339
+ margin-inline-start: auto;
2340
+ color: inherit;
2089
2341
  }
2090
2342
  .fs-popover-footer {
2091
2343
  display: flex;
2092
2344
  align-items: center;
2093
2345
  justify-content: flex-end;
2094
- gap: 8px;
2095
- padding: 10px 14px;
2346
+ flex-wrap: wrap;
2347
+ gap: var(--fs-popover-footer-gap);
2348
+ padding-block: var(--fs-popover-padding-block);
2349
+ padding-inline: var(--fs-popover-padding-inline);
2096
2350
  border-top: 1px solid var(--fs-color-border);
2097
2351
  }
2098
2352
  .fs-popover-arrow {
2099
2353
  position: absolute;
2100
- width: 8px;
2101
- height: 8px;
2354
+ inline-size: var(--fs-popover-arrow-size);
2355
+ block-size: var(--fs-popover-arrow-size);
2102
2356
  background-color: var(--fs-color-surface);
2103
2357
  border: 1px solid var(--fs-color-border);
2104
2358
  transform: rotate(45deg);
2105
2359
  }
2106
2360
  .fs-popover[data-placement=top] .fs-popover-arrow {
2107
2361
  bottom: -5px;
2108
- left: 50%;
2109
- margin-left: -4px;
2362
+ inset-inline-start: var(--fs-popover-arrow-offset, 50%);
2363
+ margin-inline-start: calc(var(--fs-popover-arrow-size) / -2);
2110
2364
  border-top: 0;
2111
2365
  border-left: 0;
2112
2366
  }
2113
2367
  .fs-popover[data-placement=bottom] .fs-popover-arrow {
2114
2368
  top: -5px;
2115
- left: 50%;
2116
- margin-left: -4px;
2369
+ inset-inline-start: var(--fs-popover-arrow-offset, 50%);
2370
+ margin-inline-start: calc(var(--fs-popover-arrow-size) / -2);
2117
2371
  border-right: 0;
2118
2372
  border-bottom: 0;
2119
2373
  }
2120
2374
  .fs-popover[data-placement=left] .fs-popover-arrow {
2121
- top: 50%;
2122
- right: -5px;
2123
- margin-top: -4px;
2375
+ inset-block-start: var(--fs-popover-arrow-offset, 50%);
2376
+ inset-inline-end: calc(var(--fs-popover-arrow-size) / -2 - 1px);
2377
+ margin-block-start: calc(var(--fs-popover-arrow-size) / -2);
2124
2378
  border-bottom: 0;
2125
2379
  border-left: 0;
2126
2380
  }
2127
2381
  .fs-popover[data-placement=right] .fs-popover-arrow {
2128
- top: 50%;
2129
- left: -5px;
2130
- margin-top: -4px;
2382
+ inset-block-start: var(--fs-popover-arrow-offset, 50%);
2383
+ inset-inline-start: calc(var(--fs-popover-arrow-size) / -2 - 1px);
2384
+ margin-block-start: calc(var(--fs-popover-arrow-size) / -2);
2131
2385
  border-top: 0;
2132
2386
  border-right: 0;
2133
2387
  }
@@ -2138,66 +2392,237 @@
2138
2392
  display: flex;
2139
2393
  gap: 12px;
2140
2394
  }
2395
+ .fs-popover[aria-busy=true] {
2396
+ cursor: progress;
2397
+ }
2398
+ @media (width <= 480px) {
2399
+ .fs-popover {
2400
+ --fs-popover-padding-inline: 12px;
2401
+ --fs-popover-max-width: calc(100vw - 24px);
2402
+ }
2403
+ .fs-popover-footer {
2404
+ align-items: flex-start;
2405
+ }
2406
+ }
2407
+ @media (prefers-reduced-motion: reduce) {
2408
+ .fs-popover {
2409
+ transition: none;
2410
+ }
2411
+ }
2412
+ @media (forced-colors: active) {
2413
+ .fs-popover,
2414
+ .fs-popover-arrow {
2415
+ border-color: CanvasText;
2416
+ color: CanvasText;
2417
+ background-color: Canvas;
2418
+ box-shadow: none;
2419
+ }
2420
+ .fs-popover-header,
2421
+ .fs-popover-footer {
2422
+ border-color: CanvasText;
2423
+ background-color: Canvas;
2424
+ }
2425
+ }
2141
2426
  }
2142
2427
  @layer components {
2143
2428
  .fs-toast-container {
2429
+ --fs-toast-offset: 16px;
2430
+ --fs-toast-gap: 8px;
2431
+ --fs-toast-width: 360px;
2432
+ --fs-toast-max-width: calc(100vw - 32px);
2144
2433
  position: fixed;
2145
- right: 16px;
2146
- bottom: 16px;
2434
+ inset-inline-end: calc(var(--fs-toast-offset) + env(safe-area-inset-inline-end, 0px));
2435
+ inset-block-end: calc(var(--fs-toast-offset) + env(safe-area-inset-bottom, 0px));
2147
2436
  z-index: var(--fs-z-toast);
2148
2437
  display: flex;
2149
2438
  flex-direction: column;
2150
- gap: 8px;
2151
- width: min(360px, 100%);
2152
- max-width: calc(100vw - 2 * var(--fs-space-3));
2439
+ gap: var(--fs-toast-gap);
2440
+ inline-size: min(var(--fs-toast-width), 100%);
2441
+ max-inline-size: var(--fs-toast-max-width);
2153
2442
  }
2154
2443
  .fs-toast {
2444
+ --fs-toast-padding-block: 12px;
2445
+ --fs-toast-padding-inline: 14px;
2446
+ --fs-toast-gap: 10px;
2447
+ --fs-toast-radius: var(--fs-radius-md, 6px);
2448
+ --fs-toast-shadow: var(--fs-shadow-md);
2449
+ --fs-toast-icon-size: 20px;
2450
+ --fs-toast-title-gap: 4px;
2451
+ --fs-toast-actions-gap: 8px;
2452
+ --fs-toast-border-width: 1px;
2453
+ --fs-toast-progress-height: 3px;
2155
2454
  display: flex;
2156
2455
  overflow: hidden;
2157
2456
  flex-direction: column;
2158
- border: 1px solid var(--fs-color-border);
2159
- border-radius: var(--fs-radius-md);
2457
+ min-inline-size: 0;
2458
+ border: var(--fs-toast-border-width) solid var(--fs-color-border);
2459
+ border-inline-start: 4px solid var(--fs-color-border);
2460
+ border-radius: var(--fs-toast-radius);
2160
2461
  color: var(--fs-color-text);
2161
2462
  background-color: var(--fs-color-surface);
2162
- box-shadow: var(--fs-shadow-md);
2463
+ box-shadow: var(--fs-toast-shadow);
2464
+ overflow-wrap: anywhere;
2163
2465
  }
2164
2466
  .fs-toast-header {
2165
2467
  display: flex;
2166
2468
  align-items: center;
2167
- justify-content: space-between;
2168
- padding: 10px 12px;
2469
+ gap: var(--fs-toast-gap);
2470
+ min-inline-size: 0;
2471
+ padding-block: var(--fs-toast-padding-block);
2472
+ padding-inline: var(--fs-toast-padding-inline);
2169
2473
  border-bottom: 1px solid var(--fs-color-border);
2170
2474
  font-size: 0.75rem;
2171
2475
  font-weight: 500;
2172
2476
  }
2477
+ .fs-toast-icon {
2478
+ display: inline-flex;
2479
+ flex: 0 0 var(--fs-toast-icon-size);
2480
+ align-items: center;
2481
+ justify-content: center;
2482
+ inline-size: var(--fs-toast-icon-size);
2483
+ block-size: var(--fs-toast-icon-size);
2484
+ color: currentcolor;
2485
+ }
2486
+ .fs-toast-icon .fs-icon,
2487
+ .fs-toast-icon > svg {
2488
+ inline-size: 100%;
2489
+ block-size: 100%;
2490
+ }
2491
+ .fs-toast-heading {
2492
+ display: flex;
2493
+ flex: 1 1 auto;
2494
+ flex-wrap: wrap;
2495
+ align-items: baseline;
2496
+ gap: var(--fs-toast-title-gap);
2497
+ min-inline-size: 0;
2498
+ }
2499
+ .fs-toast-title,
2500
+ .fs-toast-meta {
2501
+ min-inline-size: 0;
2502
+ }
2503
+ .fs-toast-meta {
2504
+ color: var(--fs-color-muted);
2505
+ font-size: 0.6875rem;
2506
+ font-weight: 400;
2507
+ }
2508
+ .fs-toast-close {
2509
+ flex: 0 0 auto;
2510
+ margin-inline-start: auto;
2511
+ color: inherit;
2512
+ }
2173
2513
  .fs-toast-body {
2174
- padding: 12px;
2514
+ min-inline-size: 0;
2515
+ padding-block: var(--fs-toast-padding-block);
2516
+ padding-inline: var(--fs-toast-padding-inline);
2175
2517
  font-size: 0.75rem;
2518
+ line-height: 1.5;
2519
+ }
2520
+ .fs-toast-actions {
2521
+ display: flex;
2522
+ flex-wrap: wrap;
2523
+ gap: var(--fs-toast-actions-gap);
2524
+ align-items: center;
2525
+ padding-block: 0 var(--fs-toast-padding-block);
2526
+ padding-inline: var(--fs-toast-padding-inline);
2527
+ }
2528
+ .fs-toast-link {
2529
+ color: inherit;
2530
+ font-weight: 500;
2531
+ text-decoration: underline;
2532
+ text-underline-offset: 2px;
2533
+ }
2534
+ .fs-toast-progress {
2535
+ display: none;
2536
+ align-self: stretch;
2537
+ margin-inline-start: auto;
2538
+ inline-size: 100%;
2539
+ block-size: var(--fs-toast-progress-height);
2540
+ background-color: currentcolor;
2541
+ opacity: 0.5;
2542
+ }
2543
+ .fs-toast.is-progressing[data-toast-progress=true]:not([data-autohide=false]) .fs-toast-progress {
2544
+ display: block;
2545
+ inline-size: 100%;
2546
+ transition: inline-size 50ms linear;
2547
+ }
2548
+ .fs-toast.is-paused .fs-toast-progress,
2549
+ .fs-toast.is-progressing[data-toast-progress=true]:not([data-autohide=false]):hover .fs-toast-progress {
2550
+ animation-play-state: paused;
2176
2551
  }
2177
2552
  .fs-toast-primary .fs-toast-header {
2178
2553
  color: var(--fs-alert-primary-text);
2179
2554
  background-color: var(--fs-alert-primary-bg);
2180
2555
  }
2556
+ .fs-toast-primary {
2557
+ border-inline-start-color: var(--fs-color-primary);
2558
+ }
2181
2559
  .fs-toast-secondary .fs-toast-header {
2182
2560
  color: var(--fs-alert-secondary-text);
2183
2561
  background-color: var(--fs-alert-secondary-bg);
2184
2562
  }
2563
+ .fs-toast-secondary {
2564
+ border-inline-start-color: var(--fs-color-secondary);
2565
+ }
2185
2566
  .fs-toast-success .fs-toast-header {
2186
2567
  color: var(--fs-alert-success-text);
2187
2568
  background-color: var(--fs-alert-success-bg);
2188
2569
  }
2570
+ .fs-toast-success {
2571
+ border-inline-start-color: var(--fs-color-success);
2572
+ }
2189
2573
  .fs-toast-warning .fs-toast-header {
2190
2574
  color: var(--fs-alert-warning-text);
2191
2575
  background-color: var(--fs-alert-warning-bg);
2192
2576
  }
2577
+ .fs-toast-warning {
2578
+ border-inline-start-color: var(--fs-color-warning);
2579
+ }
2193
2580
  .fs-toast-danger .fs-toast-header {
2194
2581
  color: var(--fs-alert-danger-text);
2195
2582
  background-color: var(--fs-alert-danger-bg);
2196
2583
  }
2584
+ .fs-toast-danger {
2585
+ border-inline-start-color: var(--fs-color-danger);
2586
+ }
2197
2587
  .fs-toast-info .fs-toast-header {
2198
2588
  color: var(--fs-alert-info-text);
2199
2589
  background-color: var(--fs-alert-info-bg);
2200
2590
  }
2591
+ .fs-toast-info {
2592
+ border-inline-start-color: var(--fs-color-info);
2593
+ }
2594
+ @media (width <= 480px) {
2595
+ .fs-toast-container {
2596
+ --fs-toast-offset: 12px;
2597
+ --fs-toast-max-width: calc(100vw - 24px);
2598
+ }
2599
+ .fs-toast-actions {
2600
+ align-items: flex-start;
2601
+ }
2602
+ }
2603
+ @media (prefers-reduced-motion: reduce) {
2604
+ .fs-toast.is-progressing[data-toast-progress=true]:not([data-autohide=false]) .fs-toast-progress {
2605
+ animation: none;
2606
+ inline-size: 100%;
2607
+ transition: none;
2608
+ }
2609
+ }
2610
+ @media (forced-colors: active) {
2611
+ .fs-toast {
2612
+ border-color: CanvasText;
2613
+ border-inline-start-color: Highlight;
2614
+ color: CanvasText;
2615
+ background-color: Canvas;
2616
+ box-shadow: none;
2617
+ }
2618
+ .fs-toast-header {
2619
+ border-color: CanvasText;
2620
+ background-color: Canvas;
2621
+ }
2622
+ .fs-toast-progress {
2623
+ background-color: Highlight;
2624
+ }
2625
+ }
2201
2626
  }
2202
2627
  @layer components {
2203
2628
  .fs-pagination {
@@ -3848,6 +4273,59 @@
3848
4273
  inset-block-start: var(--fs-space-4);
3849
4274
  }
3850
4275
  }
4276
+ /* stylelint-disable declaration-block-single-line-max-declarations */
4277
+ @layer components {
4278
+ .fs-stack {
4279
+ display: flex;
4280
+ flex-direction: column;
4281
+ gap: var(--fs-stack-gap, var(--fs-space-3));
4282
+ }
4283
+ .fs-cluster {
4284
+ display: flex;
4285
+ flex-wrap: wrap;
4286
+ align-items: center;
4287
+ gap: var(--fs-cluster-gap, var(--fs-space-2));
4288
+ }
4289
+ .fs-responsive-media {
4290
+ width: 100%;
4291
+ height: auto;
4292
+ object-fit: cover;
4293
+ }
4294
+ @media (width <= 639.98px) {
4295
+ .fs-modal-dialog, .fs-offcanvas {
4296
+ max-width: 100%;
4297
+ margin-inline: 0;
4298
+ border-radius: 0;
4299
+ }
4300
+ .fs-table-responsive {
4301
+ overflow-x: auto;
4302
+ -webkit-overflow-scrolling: touch;
4303
+ }
4304
+ .fs-btn-group-responsive, .fs-btn-group-responsive > .fs-btn {
4305
+ width: 100%;
4306
+ }
4307
+ .fs-btn-group-responsive {
4308
+ flex-direction: column;
4309
+ }
4310
+ }
4311
+ @media (width >= 640px) {
4312
+ .fs-stack-md-row {
4313
+ flex-direction: row;
4314
+ align-items: center;
4315
+ }
4316
+ }
4317
+ @media (prefers-reduced-motion: reduce) {
4318
+ .fs-stack, .fs-cluster {
4319
+ scroll-behavior: auto;
4320
+ }
4321
+ }
4322
+ @media (forced-colors: active) {
4323
+ .fs-card, .fs-dropdown-menu, .fs-modal-content, .fs-offcanvas, .fs-toast {
4324
+ border: 1px solid CanvasText;
4325
+ box-shadow: none;
4326
+ }
4327
+ }
4328
+ }
3851
4329
  @layer tokens {
3852
4330
  [data-fs-brand=violet] {
3853
4331
  --fs-color-primary: #6d28d9;