fokus-styles 2.0.0 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +4 -3
  3. package/dist/css/components.css +510 -2
  4. package/dist/css/components.css.map +1 -1
  5. package/dist/css/components.min.css +1 -1
  6. package/dist/css/components.min.css.map +1 -1
  7. package/dist/css/fokus-components.css +4050 -0
  8. package/dist/css/fokus-components.css.map +1 -0
  9. package/dist/css/fokus-components.min.css +2 -0
  10. package/dist/css/fokus-components.min.css.map +1 -0
  11. package/dist/css/fokus-core.css +1563 -0
  12. package/dist/css/fokus-core.css.map +1 -0
  13. package/dist/css/fokus-core.min.css +2 -0
  14. package/dist/css/fokus-core.min.css.map +1 -0
  15. package/dist/css/fokus-dark.css +304 -0
  16. package/dist/css/fokus-dark.css.map +1 -0
  17. package/dist/css/fokus-dark.min.css +2 -0
  18. package/dist/css/fokus-dark.min.css.map +1 -0
  19. package/dist/css/fokus-utilities.css +4176 -0
  20. package/dist/css/fokus-utilities.css.map +1 -0
  21. package/dist/css/fokus-utilities.min.css +2 -0
  22. package/dist/css/fokus-utilities.min.css.map +1 -0
  23. package/dist/css/fokus.css +1339 -53
  24. package/dist/css/fokus.css.map +1 -1
  25. package/dist/css/fokus.min.css +1 -1
  26. package/dist/css/fokus.min.css.map +1 -1
  27. package/dist/css/forms.css +115 -2
  28. package/dist/css/forms.css.map +1 -1
  29. package/dist/css/forms.min.css +1 -1
  30. package/dist/css/forms.min.css.map +1 -1
  31. package/dist/css/helpers.css +376 -2
  32. package/dist/css/helpers.css.map +1 -1
  33. package/dist/css/helpers.min.css +1 -1
  34. package/dist/css/helpers.min.css.map +1 -1
  35. package/dist/css/layout.css +560 -2
  36. package/dist/css/layout.css.map +1 -1
  37. package/dist/css/layout.min.css +1 -1
  38. package/dist/css/layout.min.css.map +1 -1
  39. package/dist/js/fokus.js +347 -12
  40. package/dist/js/fokus.js.map +4 -4
  41. package/dist/js/fokus.min.js +17 -17
  42. package/dist/js/fokus.min.js.map +4 -4
  43. package/docs/components/accordion.md +3 -0
  44. package/docs/components/avatar.md +13 -0
  45. package/docs/components/button-group.md +13 -0
  46. package/docs/components/close-button.md +13 -0
  47. package/docs/components/code.md +13 -0
  48. package/docs/components/icon-link.md +13 -0
  49. package/docs/components/list-group.md +13 -0
  50. package/docs/components/modal.md +3 -0
  51. package/docs/components/navbar.md +3 -0
  52. package/docs/components/pagination.md +3 -0
  53. package/docs/components/placeholder.md +13 -0
  54. package/docs/components/ratio.md +13 -0
  55. package/docs/components/scrollspy.md +13 -0
  56. package/docs/components/skeleton.md +3 -0
  57. package/docs/components/table.md +3 -0
  58. package/docs/guides/javascript-api.md +9 -0
  59. package/docs/guides/utility-api.md +9 -0
  60. package/docs/reference/size-baseline.json +13 -13
  61. package/mockup/assets/example-theme.css +3 -1
  62. package/mockup/assets/example-theme.js +2 -0
  63. package/mockup/assets/showcase-contracts.js +2 -2
  64. package/mockup/assets/showcase.css +4 -2
  65. package/mockup/assets/showcase.js +2 -0
  66. package/mockup/examples/js-foundation.html +25 -0
  67. package/mockup/examples/tables-navbar.html +12 -8
  68. package/mockup/examples/theming.html +2 -1
  69. package/mockup/foundations.html +2 -2
  70. package/package.json +14 -1
  71. package/packages/fokus-cli/bin/fokus.mjs +18 -1
  72. package/packages/fokus-cli/lib/build.mjs +12 -2
  73. package/packages/fokus-components/scss/components/_accordion.scss +19 -0
  74. package/packages/fokus-components/scss/components/_avatar.scss +22 -0
  75. package/packages/fokus-components/scss/components/_button-group.scss +14 -0
  76. package/packages/fokus-components/scss/components/_close-button.scss +22 -0
  77. package/packages/fokus-components/scss/components/_code.scss +19 -0
  78. package/packages/fokus-components/scss/components/_icon-link.scss +8 -0
  79. package/packages/fokus-components/scss/components/_index.scss +10 -0
  80. package/packages/fokus-components/scss/components/_list-group.scss +26 -0
  81. package/packages/fokus-components/scss/components/_modal.scss +36 -0
  82. package/packages/fokus-components/scss/components/_navbar.scss +48 -0
  83. package/packages/fokus-components/scss/components/_offcanvas.scss +19 -0
  84. package/packages/fokus-components/scss/components/_pagination.scss +10 -0
  85. package/packages/fokus-components/scss/components/_placeholder.scss +13 -0
  86. package/packages/fokus-components/scss/components/_progress.scss +8 -0
  87. package/packages/fokus-components/scss/components/_ratio.scss +10 -0
  88. package/packages/fokus-components/scss/components/_scrollspy.scss +5 -0
  89. package/packages/fokus-components/scss/components/_skeleton.scss +19 -0
  90. package/packages/fokus-components/scss/components/_spinner.scss +9 -53
  91. package/packages/fokus-components/scss/components/_tables.scss +20 -0
  92. package/packages/fokus-components/scss/forms/_forms.scss +29 -0
  93. package/packages/fokus-core/scss/base/_accessibility.scss +45 -0
  94. package/packages/fokus-core/scss/base/_index.scss +1 -0
  95. package/packages/fokus-core/scss/layout/_grid.scss +18 -0
  96. package/packages/fokus-core/scss/settings/_config.scss +43 -0
  97. package/packages/fokus-core/scss/settings/_index.scss +1 -0
  98. package/packages/fokus-core/scss/themes/_dark.scss +38 -2
  99. package/packages/fokus-core/scss/tokens/_root.scss +14 -0
  100. package/packages/fokus-core/scss/tools/_mixins.scss +8 -0
  101. package/packages/fokus-js/js/accordion.js +7 -1
  102. package/packages/fokus-js/js/core/focus.js +20 -0
  103. package/packages/fokus-js/js/core/overlay.d.ts +2 -0
  104. package/packages/fokus-js/js/core/overlay.js +10 -0
  105. package/packages/fokus-js/js/core/register.js +4 -2
  106. package/packages/fokus-js/js/focus-trap.d.ts +3 -0
  107. package/packages/fokus-js/js/focus-trap.js +1 -0
  108. package/packages/fokus-js/js/fokus.d.ts +7 -0
  109. package/packages/fokus-js/js/fokus.js +7 -0
  110. package/packages/fokus-js/js/form-validation.d.ts +7 -0
  111. package/packages/fokus-js/js/form-validation.js +20 -0
  112. package/packages/fokus-js/js/modal.js +16 -2
  113. package/packages/fokus-js/js/navbar.d.ts +10 -0
  114. package/packages/fokus-js/js/navbar.js +27 -0
  115. package/packages/fokus-js/js/offcanvas.d.ts +4 -0
  116. package/packages/fokus-js/js/offcanvas.js +16 -2
  117. package/packages/fokus-js/js/pagination.d.ts +7 -0
  118. package/packages/fokus-js/js/pagination.js +38 -0
  119. package/packages/fokus-js/js/scrollspy.d.ts +7 -0
  120. package/packages/fokus-js/js/scrollspy.js +26 -0
  121. package/packages/fokus-js/js/spinner.d.ts +9 -0
  122. package/packages/fokus-js/js/spinner.js +18 -0
  123. package/packages/fokus-js/js/theme.d.ts +9 -0
  124. package/packages/fokus-js/js/theme.js +19 -0
  125. package/packages/fokus-js/js/toast.js +4 -0
  126. package/packages/fokus-utilities/scss/utilities/_api.scss +48 -0
  127. package/packages/fokus-utilities/scss/utilities/_index.scss +2 -0
  128. package/packages/fokus-utilities/scss/utilities/_states.scss +19 -0
  129. package/packages/fokus-utilities/scss/utilities/_visibility.scss +24 -0
  130. package/scss/entries/core-entry.scss +5 -0
  131. package/scss/entries/dark-entry.scss +3 -0
@@ -0,0 +1,4050 @@
1
+ @charset "UTF-8";
2
+ @layer reset, tokens, base, layout, components, utilities, overrides;
3
+ @layer tokens {
4
+ :root {
5
+ --fs-color-white: #ffffff;
6
+ --fs-color-black: #000000;
7
+ --fs-color-text: #1e293b;
8
+ --fs-color-muted: #64748b;
9
+ --fs-color-border: #e2e8f0;
10
+ --fs-color-surface: #ffffff;
11
+ --fs-color-subtle: #f8fafc;
12
+ --fs-font-sans: Plus Jakarta Sans, sans-serif;
13
+ --fs-font-mono: Source Code Pro, monospace;
14
+ --fs-font-size-md: 0.8125rem;
15
+ --fs-font-size-h1: 1.75rem;
16
+ --fs-font-size-h2: 1.5rem;
17
+ --fs-font-size-h3: 1.3125rem;
18
+ --fs-font-size-h4: 1.125rem;
19
+ --fs-font-size-h5: 1rem;
20
+ --fs-font-size-h6: 0.875rem;
21
+ --fs-font-weight-semibold: 600;
22
+ --fs-line-height-base: 1.5;
23
+ --fs-line-height-heading: 1.25;
24
+ --fs-radius-sm: 4px;
25
+ --fs-radius-md: 6px;
26
+ --fs-radius-lg: 8px;
27
+ --fs-gutter-x: 1.5rem;
28
+ --fs-gutter-y: 0px;
29
+ --fs-space-0: 0;
30
+ --fs-space-1: 0.25rem;
31
+ --fs-space-2: 0.5rem;
32
+ --fs-space-3: 1rem;
33
+ --fs-space-4: 1.5rem;
34
+ --fs-space-5: 3rem;
35
+ --fs-z-base: 0;
36
+ --fs-z-dropdown: 1000;
37
+ --fs-z-sticky: 1020;
38
+ --fs-z-modal: 1050;
39
+ --fs-z-offcanvas: 1060;
40
+ --fs-z-notification: 1080;
41
+ --fs-z-toast: 1090;
42
+ --fs-z-tooltip: 1100;
43
+ --fs-control-height: 38px;
44
+ --fs-control-height-sm: 30px;
45
+ --fs-control-height-lg: 46px;
46
+ --fs-control-padding-x: 12px;
47
+ --fs-control-padding-x-sm: 8px;
48
+ --fs-control-padding-x-lg: 16px;
49
+ --fs-focus-width: 2px;
50
+ --fs-focus-offset: 2px;
51
+ --fs-focus-color: var(--fs-color-primary);
52
+ --fs-focus-ring-size: 3px;
53
+ --fs-focus-ring-color: color-mix(in srgb, var(--fs-focus-color) 22%, transparent);
54
+ --fs-focus-ring-alpha: 22%;
55
+ --fs-transition-fast: 150ms;
56
+ --fs-transition-normal: 220ms;
57
+ --fs-motion-duration-fast: var(--fs-transition-fast);
58
+ --fs-motion-duration-normal: var(--fs-transition-normal);
59
+ --fs-motion-ease-standard: var(--fs-ease-standard);
60
+ --fs-ease-standard: cubic-bezier(0.2, 0, 0, 1);
61
+ --fs-border-width: 1px;
62
+ --fs-disabled-opacity: 0.5;
63
+ --fs-safe-area-top: env(safe-area-inset-top, 0px);
64
+ --fs-safe-area-right: env(safe-area-inset-right, 0px);
65
+ --fs-safe-area-bottom: env(safe-area-inset-bottom, 0px);
66
+ --fs-safe-area-left: env(safe-area-inset-left, 0px);
67
+ --fs-component-control-height: var(--fs-control-height);
68
+ --fs-component-overlay-backdrop: rgb(0 0 0 / 55%);
69
+ --fs-component-panel-radius: var(--fs-radius-md);
70
+ --fs-component-panel-shadow: var(--fs-shadow-lg);
71
+ --fs-cq-sm: 320px;
72
+ --fs-cq-md: 480px;
73
+ --fs-cq-lg: 640px;
74
+ --fs-shadow-sm: 0 1px 3px rgb(0 0 0 / 15%), 0 1px 2px rgb(0 0 0 / 10%);
75
+ --fs-shadow-md: 0 6px 12px rgb(0 0 0 / 15%), 0 3px 6px rgb(0 0 0 / 10%);
76
+ --fs-shadow-lg: 0 15px 30px rgb(0 0 0 / 18%), 0 6px 12px rgb(0 0 0 / 12%);
77
+ --fs-tooltip-bg: #1e293b;
78
+ --fs-tooltip-text: #ffffff;
79
+ --fs-color-primary: #1a61e6;
80
+ --fs-color-on-primary: #ffffff;
81
+ --fs-alert-primary-bg: rgb(220.3846532222, 232.689549371, 254.1042117072);
82
+ --fs-alert-primary-text: rgb(4.2540793692, 32.6552622518, 88.5748738661);
83
+ --fs-color-secondary: #64748b;
84
+ --fs-color-on-secondary: #ffffff;
85
+ --fs-alert-secondary-bg: rgb(230.2895610064, 233.0325853352, 236.9919508609);
86
+ --fs-alert-secondary-text: rgb(33.9166068747, 40.6437781967, 50.3140869721);
87
+ --fs-color-success: rgb(13, 209, 87);
88
+ --fs-color-on-success: #000000;
89
+ --fs-alert-success-bg: rgb(228.9046733915, 249.1514320752, 230.8709345684);
90
+ --fs-alert-success-text: rgb(1.6574790861, 79.745461506, 28.4507801755);
91
+ --fs-color-warning: #fab633;
92
+ --fs-color-on-warning: #000000;
93
+ --fs-alert-warning-bg: rgb(254.9170612621, 244.6528756631, 228.9710928247);
94
+ --fs-alert-warning-text: rgb(96.9838380187, 68.3933599001, 13.3146447009);
95
+ --fs-color-danger: #cc3335;
96
+ --fs-color-on-danger: #ffffff;
97
+ --fs-alert-danger-bg: rgb(251.9225977632, 226.389403069, 223.5618211362);
98
+ --fs-alert-danger-text: rgb(77.6432204678, 13.3146447009, 14.1555411162);
99
+ --fs-color-info: #5e5cc7;
100
+ --fs-color-on-info: #ffffff;
101
+ --fs-alert-info-bg: rgb(228.2395257626, 230.4806192824, 248.3934544766);
102
+ --fs-alert-info-text: rgb(31.3939176289, 30.5530212136, 75.5409794297);
103
+ --fs-feedback-primary-bg: #e6f0ff;
104
+ --fs-feedback-secondary-bg: #f8fafc;
105
+ --fs-feedback-success-bg: #e6fff2;
106
+ --fs-feedback-warning-bg: #fff9e6;
107
+ --fs-feedback-danger-bg: #fff2f3;
108
+ --fs-feedback-info-bg: #f2f2ff;
109
+ }
110
+ @supports (color: oklch(0% 0 0deg)) {
111
+ :root {
112
+ --fs-color-text: oklch(27.9495237712% 0.0368481257 260.0309873929deg);
113
+ --fs-color-muted: oklch(55.4391007662% 0.040717043 257.4166191214deg);
114
+ --fs-color-border: oklch(92.876126719% 0.0126187744 255.5078854448deg);
115
+ --fs-color-subtle: oklch(98.4151869501% 0.0034126992 247.8577745944deg);
116
+ --fs-tooltip-bg: oklch(27.9495237712% 0.0368481257 260.0309873929deg);
117
+ --fs-color-primary: oklch(53.5630074284% 0.2132145174 261.6264320248deg);
118
+ --fs-color-on-primary: #ffffff;
119
+ --fs-alert-primary-bg: oklch(93.0344511143% 0.0319821776 261.6264320248deg);
120
+ --fs-alert-primary-text: oklch(26.7815037142% 0.1066072587 261.6264320248deg);
121
+ --fs-color-secondary: oklch(55.4391007662% 0.040717043 257.4166191214deg);
122
+ --fs-color-on-secondary: #ffffff;
123
+ --fs-alert-secondary-bg: oklch(93.3158651149% 0.0061075564 257.4166191214deg);
124
+ --fs-alert-secondary-text: oklch(27.7195503831% 0.0203585215 257.4166191214deg);
125
+ --fs-color-success: oklch(75.151587899% 0.2146126169 148.125846236deg);
126
+ --fs-color-on-success: #000000;
127
+ --fs-alert-success-bg: oklch(96.2727381849% 0.0321918925 148.125846236deg);
128
+ --fs-alert-success-text: oklch(37.5757939495% 0.1073063085 148.125846236deg);
129
+ --fs-color-warning: oklch(81.9510815663% 0.1562613975 78.6575213966deg);
130
+ --fs-color-on-warning: #000000;
131
+ --fs-alert-warning-bg: oklch(97.2926622349% 0.0234392096 78.6575213966deg);
132
+ --fs-alert-warning-text: oklch(40.9755407832% 0.0781306987 78.6575213966deg);
133
+ --fs-color-danger: oklch(55.9653139301% 0.1897270855 25.2407937498deg);
134
+ --fs-color-on-danger: #ffffff;
135
+ --fs-alert-danger-bg: oklch(93.3947970895% 0.0284590628 25.2407937498deg);
136
+ --fs-alert-danger-text: oklch(27.982656965% 0.0948635427 25.2407937498deg);
137
+ --fs-color-info: oklch(53.3359780029% 0.1620131129 280.2231949375deg);
138
+ --fs-color-on-info: #ffffff;
139
+ --fs-alert-info-bg: oklch(93.0003967004% 0.0243019669 280.2231949375deg);
140
+ --fs-alert-info-text: oklch(26.6679890014% 0.0810065564 280.2231949375deg);
141
+ --fs-feedback-primary-bg: oklch(95.2067827456% 0.0228899025 258.359342143deg);
142
+ --fs-feedback-secondary-bg: oklch(98.4151869501% 0.0034126992 247.8577745944deg);
143
+ --fs-feedback-success-bg: oklch(97.8305614459% 0.0311593614 163.2740567608deg);
144
+ --fs-feedback-warning-bg: oklch(98.17094418% 0.025708244 92.3886876566deg);
145
+ --fs-feedback-danger-bg: oklch(97.1603097552% 0.0140720277 12.0135639679deg);
146
+ --fs-feedback-info-bg: oklch(96.4918490239% 0.0173174767 286.0707018324deg);
147
+ }
148
+ }
149
+ }
150
+ @layer tokens {
151
+ :root {
152
+ --fs-color-bg-surface: var(--fs-color-surface);
153
+ --fs-color-bg-subtle: var(--fs-color-subtle);
154
+ --fs-color-text-primary: var(--fs-color-text);
155
+ --fs-color-text-muted: var(--fs-color-muted);
156
+ --fs-color-border-default: var(--fs-color-border);
157
+ --fs-color-focus: var(--fs-color-primary);
158
+ --fs-color-surface-raised: var(--fs-color-surface);
159
+ --fs-color-surface-interactive: var(--fs-color-subtle);
160
+ --fs-color-action-primary: var(--fs-color-primary);
161
+ --fs-color-action-danger: var(--fs-color-danger);
162
+ }
163
+ }
164
+ @layer tokens {
165
+ :root {
166
+ --fs-chart-series-1: var(--fs-color-primary);
167
+ --fs-chart-series-2: var(--fs-color-success);
168
+ --fs-chart-series-3: var(--fs-color-warning);
169
+ --fs-chart-series-4: var(--fs-color-danger);
170
+ --fs-chart-series-5: var(--fs-color-info);
171
+ --fs-chart-series-6: var(--fs-color-secondary);
172
+ --fs-chart-grid: var(--fs-color-border);
173
+ --fs-chart-axis: var(--fs-color-muted);
174
+ --fs-chart-tooltip-bg: var(--fs-tooltip-bg);
175
+ --fs-chart-tooltip-text: var(--fs-tooltip-text);
176
+ }
177
+ }
178
+ @layer reset {
179
+ *,
180
+ *::before,
181
+ *::after {
182
+ box-sizing: border-box;
183
+ }
184
+ html {
185
+ line-height: var(--fs-line-height-base);
186
+ -webkit-text-size-adjust: 100%;
187
+ text-size-adjust: 100%;
188
+ }
189
+ body {
190
+ margin: 0;
191
+ color: var(--fs-color-text);
192
+ background-color: var(--fs-color-surface);
193
+ }
194
+ [hidden] {
195
+ display: none !important;
196
+ }
197
+ }
198
+ @layer base {
199
+ body,
200
+ button,
201
+ input,
202
+ select,
203
+ textarea {
204
+ font-family: var(--fs-font-sans);
205
+ font-size: var(--fs-font-size-md);
206
+ }
207
+ code,
208
+ kbd,
209
+ pre,
210
+ samp {
211
+ font-family: var(--fs-font-mono);
212
+ }
213
+ h1,
214
+ h2,
215
+ h3,
216
+ h4,
217
+ h5,
218
+ h6 {
219
+ margin-top: 0;
220
+ font-weight: var(--fs-font-weight-semibold);
221
+ line-height: var(--fs-line-height-heading);
222
+ }
223
+ h1 {
224
+ font-size: var(--fs-font-size-h1);
225
+ }
226
+ h2 {
227
+ font-size: var(--fs-font-size-h2);
228
+ }
229
+ h3 {
230
+ font-size: var(--fs-font-size-h3);
231
+ }
232
+ h4 {
233
+ font-size: var(--fs-font-size-h4);
234
+ }
235
+ h5 {
236
+ font-size: var(--fs-font-size-h5);
237
+ }
238
+ h6 {
239
+ font-size: var(--fs-font-size-h6);
240
+ }
241
+ }
242
+ @layer base {
243
+ @media (prefers-reduced-motion: reduce) {
244
+ *,
245
+ *::before,
246
+ *::after {
247
+ scroll-behavior: auto !important;
248
+ transition-duration: 0.01ms !important;
249
+ animation-duration: 0.01ms !important;
250
+ animation-iteration-count: 1 !important;
251
+ }
252
+ .fs-spinner,
253
+ .fs-progress-bar-animated,
254
+ .fs-progress-indeterminate .fs-progress-bar {
255
+ animation-duration: 1.5s !important;
256
+ animation-iteration-count: infinite !important;
257
+ }
258
+ }
259
+ }
260
+ /* stylelint-disable property-no-deprecated, selector-not-notation */
261
+ @layer reset {
262
+ :focus-visible {
263
+ outline: var(--fs-focus-width) solid var(--fs-focus-color);
264
+ outline-offset: var(--fs-focus-offset);
265
+ }
266
+ @media (forced-colors: active) {
267
+ :focus-visible {
268
+ outline: 2px solid CanvasText;
269
+ outline-offset: 2px;
270
+ }
271
+ }
272
+ }
273
+ @layer utilities {
274
+ .fs-u-visually-hidden:not(:focus):not(:focus-within),
275
+ .fs-u-visually-hidden-focusable:not(:focus):not(:focus-within) {
276
+ position: absolute !important;
277
+ width: 1px !important;
278
+ height: 1px !important;
279
+ padding: 0 !important;
280
+ margin: -1px !important;
281
+ overflow: hidden !important;
282
+ clip-path: inset(50%) !important;
283
+ white-space: nowrap !important;
284
+ border: 0 !important;
285
+ }
286
+ .fs-skip-link {
287
+ position: fixed;
288
+ z-index: 1000;
289
+ inset-block-start: var(--fs-space-2);
290
+ inset-inline-start: var(--fs-space-2);
291
+ transform: translateY(-200%);
292
+ padding: var(--fs-space-2) var(--fs-space-3);
293
+ color: var(--fs-color-on-primary);
294
+ background: var(--fs-color-primary);
295
+ border-radius: var(--fs-radius-sm);
296
+ }
297
+ .fs-skip-link:focus {
298
+ transform: translateY(0);
299
+ }
300
+ }
301
+ @layer components {
302
+ .fs-btn {
303
+ --fs-btn-color: var(--fs-color-text-primary);
304
+ --fs-btn-bg: var(--fs-color-bg-subtle);
305
+ --fs-btn-border-color: var(--fs-color-border-default);
306
+ display: inline-flex;
307
+ align-items: center;
308
+ justify-content: center;
309
+ gap: var(--fs-space-1);
310
+ min-height: var(--fs-control-height);
311
+ padding: 0 var(--fs-control-padding-x);
312
+ border: var(--fs-border-width) solid var(--fs-btn-border-color);
313
+ border-radius: var(--fs-radius-sm);
314
+ color: var(--fs-btn-color);
315
+ background-color: var(--fs-btn-bg);
316
+ font-size: 0.8125rem;
317
+ font-weight: 500;
318
+ text-decoration: none;
319
+ cursor: pointer;
320
+ transition: color var(--fs-transition-fast) var(--fs-ease-standard), background-color var(--fs-transition-fast) var(--fs-ease-standard), border-color var(--fs-transition-fast) var(--fs-ease-standard), box-shadow var(--fs-transition-fast) var(--fs-ease-standard);
321
+ }
322
+ .fs-btn:hover {
323
+ --fs-btn-bg: var(--fs-btn-hover-bg, var(--fs-color-subtle));
324
+ }
325
+ .fs-btn:active {
326
+ --fs-btn-bg: var(--fs-btn-active-bg, var(--fs-color-border));
327
+ }
328
+ .fs-btn:focus-visible {
329
+ outline: var(--fs-focus-width) solid var(--fs-color-primary);
330
+ outline-offset: var(--fs-focus-offset);
331
+ border-color: var(--fs-color-primary);
332
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--fs-color-primary) 22%, transparent);
333
+ }
334
+ .fs-btn:disabled,
335
+ .fs-btn.is-disabled {
336
+ opacity: var(--fs-disabled-opacity);
337
+ pointer-events: none;
338
+ }
339
+ .fs-btn-primary {
340
+ --fs-btn-color: var(--fs-color-on-primary);
341
+ --fs-btn-bg: var(--fs-color-primary);
342
+ --fs-btn-border-color: var(--fs-color-primary);
343
+ --fs-btn-hover-bg: var(--fs-color-primary);
344
+ --fs-btn-active-bg: var(--fs-color-primary);
345
+ }
346
+ .fs-btn-outline-primary {
347
+ --fs-btn-color: var(--fs-alert-primary-text);
348
+ --fs-btn-bg: transparent;
349
+ --fs-btn-border-color: var(--fs-color-primary);
350
+ }
351
+ .fs-btn-outline-primary:hover,
352
+ .fs-btn-outline-primary:active {
353
+ --fs-btn-color: var(--fs-color-on-primary);
354
+ --fs-btn-bg: var(--fs-color-primary);
355
+ }
356
+ .fs-btn-secondary {
357
+ --fs-btn-color: var(--fs-color-on-secondary);
358
+ --fs-btn-bg: var(--fs-color-secondary);
359
+ --fs-btn-border-color: var(--fs-color-secondary);
360
+ --fs-btn-hover-bg: var(--fs-color-secondary);
361
+ --fs-btn-active-bg: var(--fs-color-secondary);
362
+ }
363
+ .fs-btn-outline-secondary {
364
+ --fs-btn-color: var(--fs-alert-secondary-text);
365
+ --fs-btn-bg: transparent;
366
+ --fs-btn-border-color: var(--fs-color-secondary);
367
+ }
368
+ .fs-btn-outline-secondary:hover,
369
+ .fs-btn-outline-secondary:active {
370
+ --fs-btn-color: var(--fs-color-on-secondary);
371
+ --fs-btn-bg: var(--fs-color-secondary);
372
+ }
373
+ .fs-btn-success {
374
+ --fs-btn-color: var(--fs-color-on-success);
375
+ --fs-btn-bg: var(--fs-color-success);
376
+ --fs-btn-border-color: var(--fs-color-success);
377
+ --fs-btn-hover-bg: var(--fs-color-success);
378
+ --fs-btn-active-bg: var(--fs-color-success);
379
+ }
380
+ .fs-btn-outline-success {
381
+ --fs-btn-color: var(--fs-alert-success-text);
382
+ --fs-btn-bg: transparent;
383
+ --fs-btn-border-color: var(--fs-color-success);
384
+ }
385
+ .fs-btn-outline-success:hover,
386
+ .fs-btn-outline-success:active {
387
+ --fs-btn-color: var(--fs-color-on-success);
388
+ --fs-btn-bg: var(--fs-color-success);
389
+ }
390
+ .fs-btn-warning {
391
+ --fs-btn-color: var(--fs-color-on-warning);
392
+ --fs-btn-bg: var(--fs-color-warning);
393
+ --fs-btn-border-color: var(--fs-color-warning);
394
+ --fs-btn-hover-bg: var(--fs-color-warning);
395
+ --fs-btn-active-bg: var(--fs-color-warning);
396
+ }
397
+ .fs-btn-outline-warning {
398
+ --fs-btn-color: var(--fs-alert-warning-text);
399
+ --fs-btn-bg: transparent;
400
+ --fs-btn-border-color: var(--fs-color-warning);
401
+ }
402
+ .fs-btn-outline-warning:hover,
403
+ .fs-btn-outline-warning:active {
404
+ --fs-btn-color: var(--fs-color-on-warning);
405
+ --fs-btn-bg: var(--fs-color-warning);
406
+ }
407
+ .fs-btn-danger {
408
+ --fs-btn-color: var(--fs-color-on-danger);
409
+ --fs-btn-bg: var(--fs-color-danger);
410
+ --fs-btn-border-color: var(--fs-color-danger);
411
+ --fs-btn-hover-bg: var(--fs-color-danger);
412
+ --fs-btn-active-bg: var(--fs-color-danger);
413
+ }
414
+ .fs-btn-outline-danger {
415
+ --fs-btn-color: var(--fs-alert-danger-text);
416
+ --fs-btn-bg: transparent;
417
+ --fs-btn-border-color: var(--fs-color-danger);
418
+ }
419
+ .fs-btn-outline-danger:hover,
420
+ .fs-btn-outline-danger:active {
421
+ --fs-btn-color: var(--fs-color-on-danger);
422
+ --fs-btn-bg: var(--fs-color-danger);
423
+ }
424
+ .fs-btn-info {
425
+ --fs-btn-color: var(--fs-color-on-info);
426
+ --fs-btn-bg: var(--fs-color-info);
427
+ --fs-btn-border-color: var(--fs-color-info);
428
+ --fs-btn-hover-bg: var(--fs-color-info);
429
+ --fs-btn-active-bg: var(--fs-color-info);
430
+ }
431
+ .fs-btn-outline-info {
432
+ --fs-btn-color: var(--fs-alert-info-text);
433
+ --fs-btn-bg: transparent;
434
+ --fs-btn-border-color: var(--fs-color-info);
435
+ }
436
+ .fs-btn-outline-info:hover,
437
+ .fs-btn-outline-info:active {
438
+ --fs-btn-color: var(--fs-color-on-info);
439
+ --fs-btn-bg: var(--fs-color-info);
440
+ }
441
+ .fs-btn-sm {
442
+ min-height: var(--fs-control-height-sm);
443
+ padding: 0 var(--fs-control-padding-x-sm);
444
+ font-size: 0.75rem;
445
+ }
446
+ .fs-btn-lg {
447
+ min-height: var(--fs-control-height-lg);
448
+ padding: 0 var(--fs-control-padding-x-lg);
449
+ font-size: 1rem;
450
+ }
451
+ .fs-btn-close {
452
+ position: relative;
453
+ width: 20px;
454
+ height: 20px;
455
+ padding: 0;
456
+ border: none;
457
+ border-radius: var(--fs-radius-sm);
458
+ color: var(--fs-color-muted);
459
+ background-color: var(--fs-color-surface-raised);
460
+ cursor: pointer;
461
+ }
462
+ .fs-btn-close::before,
463
+ .fs-btn-close::after {
464
+ position: absolute;
465
+ top: 50%;
466
+ left: 50%;
467
+ width: 12px;
468
+ height: 2px;
469
+ background-color: currentcolor;
470
+ content: "";
471
+ }
472
+ .fs-btn-close::before {
473
+ transform: translate(-50%, -50%) rotate(45deg);
474
+ }
475
+ .fs-btn-close::after {
476
+ transform: translate(-50%, -50%) rotate(-45deg);
477
+ }
478
+ .fs-btn-close:hover {
479
+ color: var(--fs-color-text);
480
+ background-color: var(--fs-color-subtle);
481
+ }
482
+ .fs-btn-close:focus-visible {
483
+ outline: var(--fs-focus-width) solid var(--fs-color-primary);
484
+ outline-offset: var(--fs-focus-offset);
485
+ border-color: var(--fs-color-primary);
486
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--fs-color-primary) 22%, transparent);
487
+ }
488
+ }
489
+ @layer components {
490
+ .fs-card {
491
+ position: relative;
492
+ display: flex;
493
+ flex-direction: column;
494
+ border: var(--fs-border-width) solid var(--fs-color-border-default);
495
+ border-radius: var(--fs-radius-lg);
496
+ background-color: var(--fs-color-surface);
497
+ }
498
+ .fs-card-horizontal {
499
+ flex-direction: row;
500
+ }
501
+ .fs-card-horizontal .fs-card-header:first-child {
502
+ border-radius: calc(var(--fs-radius-lg) - 1px) 0 0 calc(var(--fs-radius-lg) - 1px);
503
+ border-right: 1px solid var(--fs-color-border);
504
+ border-bottom: none;
505
+ }
506
+ .fs-card-horizontal .fs-card-footer:last-child {
507
+ border-radius: 0 calc(var(--fs-radius-lg) - 1px) calc(var(--fs-radius-lg) - 1px) 0;
508
+ border-left: 1px solid var(--fs-color-border);
509
+ border-top: none;
510
+ }
511
+ .fs-card-clickable {
512
+ transition: border-color var(--fs-transition-fast) var(--fs-ease-standard), box-shadow var(--fs-transition-fast) var(--fs-ease-standard), transform var(--fs-transition-fast) var(--fs-ease-standard);
513
+ }
514
+ .fs-card-clickable:hover,
515
+ .fs-card-clickable:focus-within {
516
+ border-color: var(--fs-color-primary);
517
+ box-shadow: var(--fs-shadow-sm);
518
+ transform: translateY(-1px);
519
+ }
520
+ .fs-stretched-link {
521
+ color: inherit;
522
+ text-decoration: none;
523
+ }
524
+ .fs-stretched-link::after {
525
+ position: absolute;
526
+ inset: 0;
527
+ z-index: 1;
528
+ content: "";
529
+ }
530
+ .fs-card-header,
531
+ .fs-card-body,
532
+ .fs-card-footer {
533
+ padding: 10px;
534
+ }
535
+ .fs-card-header {
536
+ display: flex;
537
+ align-items: center;
538
+ justify-content: space-between;
539
+ gap: 8px;
540
+ border-bottom: 1px solid var(--fs-color-border);
541
+ background-color: var(--fs-color-subtle);
542
+ }
543
+ .fs-card-header .fs-card-title {
544
+ margin: 0;
545
+ }
546
+ .fs-card-header:first-child {
547
+ border-radius: calc(var(--fs-radius-lg) - 1px) calc(var(--fs-radius-lg) - 1px) 0 0;
548
+ }
549
+ .fs-card-footer {
550
+ border-top: 1px solid var(--fs-color-border);
551
+ background-color: var(--fs-color-subtle);
552
+ }
553
+ .fs-card-footer:last-child {
554
+ border-radius: 0 0 calc(var(--fs-radius-lg) - 1px) calc(var(--fs-radius-lg) - 1px);
555
+ }
556
+ .fs-card-title {
557
+ margin: 0 0 4px;
558
+ color: var(--fs-color-text);
559
+ font-size: 1rem;
560
+ font-weight: 500;
561
+ }
562
+ .fs-card-subtitle {
563
+ margin: 0 0 8px;
564
+ color: var(--fs-color-muted);
565
+ font-size: 0.75rem;
566
+ }
567
+ .fs-card-text {
568
+ margin: 0 0 8px;
569
+ color: var(--fs-color-text);
570
+ font-size: 0.8125rem;
571
+ }
572
+ .fs-card-text:last-child {
573
+ margin-bottom: 0;
574
+ }
575
+ .fs-card-sm .fs-card-header,
576
+ .fs-card-sm .fs-card-body,
577
+ .fs-card-sm .fs-card-footer {
578
+ padding: 5px;
579
+ }
580
+ .fs-card-lg .fs-card-header,
581
+ .fs-card-lg .fs-card-body,
582
+ .fs-card-lg .fs-card-footer {
583
+ padding: 15px;
584
+ }
585
+ }
586
+ @layer components {
587
+ .fs-alert {
588
+ display: flex;
589
+ align-items: flex-start;
590
+ gap: 8px;
591
+ padding: 12px 16px;
592
+ border: 1px solid var(--fs-color-border);
593
+ border-left: 5px solid var(--fs-color-border);
594
+ border-radius: 0;
595
+ color: var(--fs-color-text);
596
+ background-color: var(--fs-color-surface-raised);
597
+ font-size: 0.75rem;
598
+ }
599
+ .fs-alert-primary {
600
+ color: var(--fs-alert-primary-text);
601
+ background-color: var(--fs-alert-primary-bg);
602
+ border-color: var(--fs-color-primary);
603
+ }
604
+ .fs-alert-secondary {
605
+ color: var(--fs-alert-secondary-text);
606
+ background-color: var(--fs-alert-secondary-bg);
607
+ border-color: var(--fs-color-secondary);
608
+ }
609
+ .fs-alert-success {
610
+ color: var(--fs-alert-success-text);
611
+ background-color: var(--fs-alert-success-bg);
612
+ border-color: var(--fs-color-success);
613
+ }
614
+ .fs-alert-warning {
615
+ color: var(--fs-alert-warning-text);
616
+ background-color: var(--fs-alert-warning-bg);
617
+ border-color: var(--fs-color-warning);
618
+ }
619
+ .fs-alert-danger {
620
+ color: var(--fs-alert-danger-text);
621
+ background-color: var(--fs-alert-danger-bg);
622
+ border-color: var(--fs-color-danger);
623
+ }
624
+ .fs-alert-info {
625
+ color: var(--fs-alert-info-text);
626
+ background-color: var(--fs-alert-info-bg);
627
+ border-color: var(--fs-color-info);
628
+ }
629
+ }
630
+ @layer components {
631
+ .fs-badge {
632
+ --fs-badge-color: var(--fs-color-text);
633
+ --fs-badge-bg: var(--fs-color-subtle);
634
+ --fs-badge-border: transparent;
635
+ --fs-badge-height: 22px;
636
+ --fs-badge-radius: 0;
637
+ display: inline-flex;
638
+ align-items: center;
639
+ gap: 6px;
640
+ justify-content: center;
641
+ min-height: var(--fs-badge-height);
642
+ padding: 1px 8px 3px;
643
+ border: 1px solid var(--fs-badge-border);
644
+ border-radius: var(--fs-badge-radius);
645
+ color: var(--fs-badge-color);
646
+ background-color: var(--fs-badge-bg);
647
+ font-size: 0.6875rem;
648
+ font-weight: 500;
649
+ line-height: 1;
650
+ vertical-align: middle;
651
+ white-space: nowrap;
652
+ }
653
+ .fs-badge-primary {
654
+ --fs-badge-color: #ffffff;
655
+ --fs-badge-bg: var(--fs-color-primary);
656
+ }
657
+ .fs-badge-soft-primary {
658
+ --fs-badge-color: color-mix(in srgb, var(--fs-color-primary) 45%, var(--fs-color-text));
659
+ --fs-badge-bg: color-mix(in srgb, var(--fs-color-primary) 14%, transparent);
660
+ --fs-badge-border: color-mix(in srgb, var(--fs-color-primary) 38%, transparent);
661
+ }
662
+ .fs-badge-outline-primary {
663
+ --fs-badge-color: color-mix(in srgb, var(--fs-color-primary) 45%, var(--fs-color-text));
664
+ --fs-badge-bg: transparent;
665
+ --fs-badge-border: var(--fs-badge-color);
666
+ }
667
+ .fs-badge-secondary {
668
+ --fs-badge-color: #ffffff;
669
+ --fs-badge-bg: var(--fs-color-secondary);
670
+ }
671
+ .fs-badge-soft-secondary {
672
+ --fs-badge-color: color-mix(in srgb, var(--fs-color-secondary) 45%, var(--fs-color-text));
673
+ --fs-badge-bg: color-mix(in srgb, var(--fs-color-secondary) 14%, transparent);
674
+ --fs-badge-border: color-mix(in srgb, var(--fs-color-secondary) 38%, transparent);
675
+ }
676
+ .fs-badge-outline-secondary {
677
+ --fs-badge-color: color-mix(in srgb, var(--fs-color-secondary) 45%, var(--fs-color-text));
678
+ --fs-badge-bg: transparent;
679
+ --fs-badge-border: var(--fs-badge-color);
680
+ }
681
+ .fs-badge-success {
682
+ --fs-badge-color: #000000;
683
+ --fs-badge-bg: var(--fs-color-success);
684
+ }
685
+ .fs-badge-soft-success {
686
+ --fs-badge-color: color-mix(in srgb, var(--fs-color-success) 45%, var(--fs-color-text));
687
+ --fs-badge-bg: color-mix(in srgb, var(--fs-color-success) 14%, transparent);
688
+ --fs-badge-border: color-mix(in srgb, var(--fs-color-success) 38%, transparent);
689
+ }
690
+ .fs-badge-outline-success {
691
+ --fs-badge-color: color-mix(in srgb, var(--fs-color-success) 45%, var(--fs-color-text));
692
+ --fs-badge-bg: transparent;
693
+ --fs-badge-border: var(--fs-badge-color);
694
+ }
695
+ .fs-badge-warning {
696
+ --fs-badge-color: #000000;
697
+ --fs-badge-bg: var(--fs-color-warning);
698
+ }
699
+ .fs-badge-soft-warning {
700
+ --fs-badge-color: color-mix(in srgb, var(--fs-color-warning) 45%, var(--fs-color-text));
701
+ --fs-badge-bg: color-mix(in srgb, var(--fs-color-warning) 14%, transparent);
702
+ --fs-badge-border: color-mix(in srgb, var(--fs-color-warning) 38%, transparent);
703
+ }
704
+ .fs-badge-outline-warning {
705
+ --fs-badge-color: color-mix(in srgb, var(--fs-color-warning) 45%, var(--fs-color-text));
706
+ --fs-badge-bg: transparent;
707
+ --fs-badge-border: var(--fs-badge-color);
708
+ }
709
+ .fs-badge-danger {
710
+ --fs-badge-color: #ffffff;
711
+ --fs-badge-bg: var(--fs-color-danger);
712
+ }
713
+ .fs-badge-soft-danger {
714
+ --fs-badge-color: color-mix(in srgb, var(--fs-color-danger) 45%, var(--fs-color-text));
715
+ --fs-badge-bg: color-mix(in srgb, var(--fs-color-danger) 14%, transparent);
716
+ --fs-badge-border: color-mix(in srgb, var(--fs-color-danger) 38%, transparent);
717
+ }
718
+ .fs-badge-outline-danger {
719
+ --fs-badge-color: color-mix(in srgb, var(--fs-color-danger) 45%, var(--fs-color-text));
720
+ --fs-badge-bg: transparent;
721
+ --fs-badge-border: var(--fs-badge-color);
722
+ }
723
+ .fs-badge-info {
724
+ --fs-badge-color: #ffffff;
725
+ --fs-badge-bg: var(--fs-color-info);
726
+ }
727
+ .fs-badge-soft-info {
728
+ --fs-badge-color: color-mix(in srgb, var(--fs-color-info) 45%, var(--fs-color-text));
729
+ --fs-badge-bg: color-mix(in srgb, var(--fs-color-info) 14%, transparent);
730
+ --fs-badge-border: color-mix(in srgb, var(--fs-color-info) 38%, transparent);
731
+ }
732
+ .fs-badge-outline-info {
733
+ --fs-badge-color: color-mix(in srgb, var(--fs-color-info) 45%, var(--fs-color-text));
734
+ --fs-badge-bg: transparent;
735
+ --fs-badge-border: var(--fs-badge-color);
736
+ }
737
+ .fs-badge-sm {
738
+ --fs-badge-height: 18px;
739
+ padding: 0 6px 2px;
740
+ font-size: 0.6875rem;
741
+ }
742
+ .fs-badge-lg {
743
+ --fs-badge-height: 26px;
744
+ padding: 2px 10px 4px;
745
+ font-size: 0.8125rem;
746
+ }
747
+ .fs-badge-dot::before {
748
+ width: 6px;
749
+ height: 6px;
750
+ flex: 0 0 6px;
751
+ border-radius: 50%;
752
+ background-color: currentcolor;
753
+ transform: translateY(1px);
754
+ content: "";
755
+ }
756
+ .fs-badge-count {
757
+ min-width: var(--fs-badge-height);
758
+ padding-inline: 6px;
759
+ font-variant-numeric: tabular-nums;
760
+ }
761
+ .fs-badge-split {
762
+ --fs-badge-split-label-bg: var(--fs-color-black);
763
+ --fs-badge-split-label-color: var(--fs-color-white);
764
+ --fs-badge-split-value-bg: var(--fs-color-primary);
765
+ --fs-badge-split-value-color: #ffffff;
766
+ --fs-badge-split-height: 22px;
767
+ --fs-badge-split-radius: 0;
768
+ display: inline-flex;
769
+ min-height: var(--fs-badge-split-height);
770
+ overflow: hidden;
771
+ border-radius: var(--fs-badge-split-radius);
772
+ font-size: 0.6875rem;
773
+ font-weight: 500;
774
+ line-height: 1;
775
+ vertical-align: middle;
776
+ white-space: nowrap;
777
+ }
778
+ .fs-badge-split-label,
779
+ .fs-badge-split-value {
780
+ display: inline-flex;
781
+ align-items: center;
782
+ min-height: var(--fs-badge-split-height);
783
+ padding: 1px 8px 3px;
784
+ }
785
+ .fs-badge-split-label {
786
+ color: var(--fs-badge-split-label-color);
787
+ background-color: var(--fs-badge-split-label-bg);
788
+ }
789
+ .fs-badge-split-value {
790
+ color: var(--fs-badge-split-value-color);
791
+ background-color: var(--fs-badge-split-value-bg);
792
+ font-variant-numeric: tabular-nums;
793
+ }
794
+ .fs-badge-split-primary {
795
+ --fs-badge-split-value-bg: var(--fs-color-primary);
796
+ --fs-badge-split-value-color: #ffffff;
797
+ }
798
+ .fs-badge-split-secondary {
799
+ --fs-badge-split-value-bg: var(--fs-color-secondary);
800
+ --fs-badge-split-value-color: #ffffff;
801
+ }
802
+ .fs-badge-split-success {
803
+ --fs-badge-split-value-bg: var(--fs-color-success);
804
+ --fs-badge-split-value-color: #000000;
805
+ }
806
+ .fs-badge-split-warning {
807
+ --fs-badge-split-value-bg: var(--fs-color-warning);
808
+ --fs-badge-split-value-color: #000000;
809
+ }
810
+ .fs-badge-split-danger {
811
+ --fs-badge-split-value-bg: var(--fs-color-danger);
812
+ --fs-badge-split-value-color: #ffffff;
813
+ }
814
+ .fs-badge-split-info {
815
+ --fs-badge-split-value-bg: var(--fs-color-info);
816
+ --fs-badge-split-value-color: #ffffff;
817
+ }
818
+ .fs-badge-split.fs-badge-sm {
819
+ --fs-badge-split-height: 18px;
820
+ min-height: var(--fs-badge-split-height);
821
+ padding: 0;
822
+ }
823
+ .fs-badge-split.fs-badge-lg {
824
+ --fs-badge-split-height: 26px;
825
+ min-height: var(--fs-badge-split-height);
826
+ padding: 0;
827
+ font-size: 0.8125rem;
828
+ }
829
+ .fs-badge-split.fs-badge-sm .fs-badge-split-label,
830
+ .fs-badge-split.fs-badge-sm .fs-badge-split-value {
831
+ padding: 0 6px 2px;
832
+ }
833
+ .fs-badge-split.fs-badge-lg .fs-badge-split-label,
834
+ .fs-badge-split.fs-badge-lg .fs-badge-split-value {
835
+ padding: 2px 10px 4px;
836
+ }
837
+ }
838
+ @layer components {
839
+ .fs-table {
840
+ width: 100%;
841
+ margin-bottom: 0;
842
+ color: var(--fs-color-text);
843
+ background-color: var(--fs-color-surface-raised);
844
+ border-collapse: collapse;
845
+ }
846
+ .fs-table th,
847
+ .fs-table td {
848
+ padding: 8px 12px;
849
+ border-bottom: 1px solid var(--fs-color-border);
850
+ text-align: left;
851
+ vertical-align: middle;
852
+ }
853
+ .fs-table thead th {
854
+ border-bottom-width: 2px;
855
+ color: var(--fs-color-muted);
856
+ font-size: 0.75rem;
857
+ font-weight: 500;
858
+ text-transform: uppercase;
859
+ }
860
+ .fs-table-striped tbody tr:nth-of-type(odd) {
861
+ background-color: var(--fs-color-subtle);
862
+ }
863
+ .fs-table-hover tbody tr:hover {
864
+ background-color: var(--fs-color-subtle);
865
+ }
866
+ .fs-table-bordered th,
867
+ .fs-table-bordered td {
868
+ border: 1px solid var(--fs-color-border);
869
+ }
870
+ .fs-table-borderless th,
871
+ .fs-table-borderless td {
872
+ border: 0;
873
+ }
874
+ .fs-table-primary {
875
+ background-color: var(--fs-alert-primary-bg);
876
+ color: var(--fs-alert-primary-text);
877
+ }
878
+ .fs-table-secondary {
879
+ background-color: var(--fs-alert-secondary-bg);
880
+ color: var(--fs-alert-secondary-text);
881
+ }
882
+ .fs-table-success {
883
+ background-color: var(--fs-alert-success-bg);
884
+ color: var(--fs-alert-success-text);
885
+ }
886
+ .fs-table-warning {
887
+ background-color: var(--fs-alert-warning-bg);
888
+ color: var(--fs-alert-warning-text);
889
+ }
890
+ .fs-table-danger {
891
+ background-color: var(--fs-alert-danger-bg);
892
+ color: var(--fs-alert-danger-text);
893
+ }
894
+ .fs-table-info {
895
+ background-color: var(--fs-alert-info-bg);
896
+ color: var(--fs-alert-info-text);
897
+ }
898
+ .fs-table-sm th,
899
+ .fs-table-sm td {
900
+ padding: 4px 8px;
901
+ }
902
+ .fs-table-responsive {
903
+ overflow-x: auto;
904
+ }
905
+ .fs-table-caption {
906
+ caption-side: top;
907
+ padding: var(--fs-space-2) 0;
908
+ color: var(--fs-color-muted);
909
+ text-align: start;
910
+ }
911
+ .fs-table-empty {
912
+ padding: var(--fs-space-5);
913
+ color: var(--fs-color-muted);
914
+ text-align: center;
915
+ }
916
+ @media (width < 640px) {
917
+ .fs-table-priority th:nth-child(n+4),
918
+ .fs-table-priority td:nth-child(n+4) {
919
+ display: none;
920
+ }
921
+ }
922
+ }
923
+ @layer components {
924
+ .fs-navbar {
925
+ display: flex;
926
+ flex-wrap: wrap;
927
+ align-items: center;
928
+ justify-content: space-between;
929
+ gap: 16px;
930
+ padding: 12px 16px;
931
+ border-bottom: 1px solid var(--fs-color-border);
932
+ background-color: var(--fs-color-surface);
933
+ }
934
+ .fs-navbar-brand {
935
+ color: var(--fs-color-text);
936
+ font-size: 1rem;
937
+ font-weight: 500;
938
+ text-decoration: none;
939
+ }
940
+ .fs-navbar-nav {
941
+ display: flex;
942
+ align-items: center;
943
+ gap: 4px;
944
+ margin: 0;
945
+ padding: 0;
946
+ list-style: none;
947
+ }
948
+ .fs-navbar-toggler {
949
+ display: inline-flex;
950
+ align-items: center;
951
+ justify-content: center;
952
+ min-width: 44px;
953
+ min-height: 44px;
954
+ padding: 8px;
955
+ color: var(--fs-color-text);
956
+ background: transparent;
957
+ border: 1px solid var(--fs-color-border);
958
+ border-radius: var(--fs-radius-sm);
959
+ cursor: pointer;
960
+ }
961
+ .fs-navbar-collapse {
962
+ flex-basis: 100%;
963
+ width: 100%;
964
+ }
965
+ .fs-navbar-collapse:not(.is-open) {
966
+ display: none;
967
+ }
968
+ .fs-navbar-collapse.is-open .fs-navbar-nav {
969
+ flex-direction: column;
970
+ align-items: stretch;
971
+ }
972
+ @media (width >= 768px) {
973
+ .fs-navbar-toggler {
974
+ display: none;
975
+ }
976
+ .fs-navbar-collapse,
977
+ .fs-navbar-collapse:not(.is-open),
978
+ .fs-navbar-collapse[hidden] {
979
+ display: flex;
980
+ flex: 1 1 auto;
981
+ align-items: center;
982
+ justify-content: flex-end;
983
+ width: auto;
984
+ }
985
+ .fs-navbar-collapse .fs-navbar-nav {
986
+ flex-direction: row;
987
+ }
988
+ }
989
+ .fs-nav-link {
990
+ display: inline-flex;
991
+ align-items: center;
992
+ gap: 6px;
993
+ padding: 8px 12px;
994
+ border-radius: var(--fs-radius-sm);
995
+ color: var(--fs-color-text);
996
+ background-color: var(--fs-color-surface-raised);
997
+ text-decoration: none;
998
+ transition: background-color 0.15s ease-in-out;
999
+ }
1000
+ .fs-nav-link:hover {
1001
+ background-color: var(--fs-color-subtle);
1002
+ }
1003
+ .fs-nav-link:focus-visible {
1004
+ outline: var(--fs-focus-width) solid var(--fs-color-primary);
1005
+ outline-offset: var(--fs-focus-offset);
1006
+ border-color: var(--fs-color-primary);
1007
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--fs-color-primary) 22%, transparent);
1008
+ }
1009
+ .fs-nav-link.is-active {
1010
+ color: var(--fs-alert-primary-text);
1011
+ font-weight: 500;
1012
+ }
1013
+ .fs-nav-link.is-disabled {
1014
+ color: var(--fs-color-muted);
1015
+ pointer-events: none;
1016
+ }
1017
+ }
1018
+ @layer components {
1019
+ .fs-combobox {
1020
+ position: relative;
1021
+ display: inline-flex;
1022
+ width: 100%;
1023
+ }
1024
+ .fs-combobox-listbox {
1025
+ overflow-y: auto;
1026
+ max-height: 240px;
1027
+ }
1028
+ }
1029
+ @layer components {
1030
+ [data-theme=dark] .fs-form-control[type=date]::-webkit-calendar-picker-indicator,
1031
+ [data-theme=dark] .fs-form-control[type=time]::-webkit-calendar-picker-indicator {
1032
+ filter: invert(1);
1033
+ }
1034
+ .fs-datepicker {
1035
+ position: relative;
1036
+ display: inline-flex;
1037
+ width: 100%;
1038
+ }
1039
+ .fs-datepicker-panel {
1040
+ display: none;
1041
+ width: min(280px, 100vw - 2 * var(--fs-space-3));
1042
+ padding: 12px;
1043
+ border: 1px solid var(--fs-color-border);
1044
+ border-radius: var(--fs-radius-md);
1045
+ color: var(--fs-color-text);
1046
+ background-color: var(--fs-color-surface);
1047
+ box-shadow: var(--fs-shadow-md);
1048
+ z-index: var(--fs-z-dropdown);
1049
+ }
1050
+ .fs-datepicker-panel.is-open {
1051
+ display: block;
1052
+ }
1053
+ .fs-datepicker-header {
1054
+ display: flex;
1055
+ align-items: center;
1056
+ justify-content: space-between;
1057
+ margin-bottom: 8px;
1058
+ }
1059
+ .fs-datepicker-nav {
1060
+ display: inline-flex;
1061
+ align-items: center;
1062
+ justify-content: center;
1063
+ width: 28px;
1064
+ height: 28px;
1065
+ padding: 0;
1066
+ border: none;
1067
+ border-radius: var(--fs-radius-sm);
1068
+ color: var(--fs-color-text);
1069
+ background-color: var(--fs-color-surface-raised);
1070
+ font-size: 0.8125rem;
1071
+ cursor: pointer;
1072
+ }
1073
+ .fs-datepicker-nav:hover {
1074
+ background-color: var(--fs-color-subtle);
1075
+ }
1076
+ .fs-datepicker-nav:focus-visible {
1077
+ outline: var(--fs-focus-width) solid var(--fs-color-primary);
1078
+ outline-offset: var(--fs-focus-offset);
1079
+ border-color: var(--fs-color-primary);
1080
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--fs-color-primary) 22%, transparent);
1081
+ }
1082
+ .fs-datepicker-title {
1083
+ font-size: 0.75rem;
1084
+ font-weight: 500;
1085
+ text-transform: capitalize;
1086
+ }
1087
+ .fs-datepicker-grid {
1088
+ display: flex;
1089
+ flex-direction: column;
1090
+ gap: 2px;
1091
+ }
1092
+ .fs-datepicker-weekdays,
1093
+ .fs-datepicker-week {
1094
+ display: grid;
1095
+ grid-template-columns: repeat(7, 1fr);
1096
+ gap: 2px;
1097
+ }
1098
+ .fs-datepicker-weekday {
1099
+ display: flex;
1100
+ align-items: center;
1101
+ justify-content: center;
1102
+ height: 28px;
1103
+ color: var(--fs-color-muted);
1104
+ font-size: 0.6875rem;
1105
+ font-weight: 500;
1106
+ text-align: center;
1107
+ text-transform: uppercase;
1108
+ }
1109
+ .fs-datepicker-day {
1110
+ display: flex;
1111
+ align-items: center;
1112
+ justify-content: center;
1113
+ height: 32px;
1114
+ border: none;
1115
+ border-radius: var(--fs-radius-sm);
1116
+ color: var(--fs-color-text);
1117
+ background-color: var(--fs-color-surface-raised);
1118
+ font-size: 0.75rem;
1119
+ cursor: pointer;
1120
+ }
1121
+ .fs-datepicker-day:hover {
1122
+ background-color: var(--fs-color-subtle);
1123
+ }
1124
+ .fs-datepicker-day:focus-visible {
1125
+ outline: var(--fs-focus-width) solid var(--fs-color-primary);
1126
+ outline-offset: var(--fs-focus-offset);
1127
+ border-color: var(--fs-color-primary);
1128
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--fs-color-primary) 22%, transparent);
1129
+ }
1130
+ .fs-datepicker-day.is-outside {
1131
+ color: var(--fs-color-muted);
1132
+ }
1133
+ .fs-datepicker-day.is-today {
1134
+ font-weight: 600;
1135
+ box-shadow: inset 0 0 0 1px var(--fs-color-primary);
1136
+ }
1137
+ .fs-datepicker-day.is-selected {
1138
+ color: var(--fs-color-on-primary);
1139
+ background-color: var(--fs-color-primary);
1140
+ }
1141
+ .fs-datepicker-day:disabled {
1142
+ color: var(--fs-color-muted);
1143
+ pointer-events: none;
1144
+ opacity: 0.4;
1145
+ }
1146
+ }
1147
+ @layer components {
1148
+ .fs-datatable-toolbar {
1149
+ display: flex;
1150
+ align-items: center;
1151
+ gap: 8px;
1152
+ margin-bottom: 12px;
1153
+ }
1154
+ .fs-datatable-sort-btn {
1155
+ display: inline-flex;
1156
+ align-items: center;
1157
+ width: 100%;
1158
+ padding: 0;
1159
+ border: 0;
1160
+ background-color: var(--fs-color-surface-raised);
1161
+ color: inherit;
1162
+ font: inherit;
1163
+ text-transform: inherit;
1164
+ text-align: left;
1165
+ cursor: pointer;
1166
+ }
1167
+ .fs-datatable-sort-btn:focus-visible {
1168
+ outline: var(--fs-focus-width) solid var(--fs-color-primary);
1169
+ outline-offset: var(--fs-focus-offset);
1170
+ border-color: var(--fs-color-primary);
1171
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--fs-color-primary) 22%, transparent);
1172
+ }
1173
+ .fs-datatable-sort-btn::after {
1174
+ flex-shrink: 0;
1175
+ margin-left: auto;
1176
+ padding-left: 4px;
1177
+ color: var(--fs-color-muted);
1178
+ font-size: 0.6875rem;
1179
+ content: "↕";
1180
+ }
1181
+ th[aria-sort=ascending] .fs-datatable-sort-btn::after {
1182
+ color: var(--fs-color-text);
1183
+ content: "↑";
1184
+ }
1185
+ th[aria-sort=descending] .fs-datatable-sort-btn::after {
1186
+ color: var(--fs-color-text);
1187
+ content: "↓";
1188
+ }
1189
+ .fs-datatable [data-fs-datatable-pagination] {
1190
+ display: flex;
1191
+ justify-content: flex-end;
1192
+ margin-top: 12px;
1193
+ }
1194
+ .fs-datatable td:focus-visible,
1195
+ .fs-datatable th:focus-visible {
1196
+ outline: var(--fs-focus-width) solid var(--fs-color-primary);
1197
+ outline-offset: var(--fs-focus-offset);
1198
+ border-color: var(--fs-color-primary);
1199
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--fs-color-primary) 22%, transparent);
1200
+ outline-offset: -2px;
1201
+ }
1202
+ }
1203
+ @layer components {
1204
+ .fs-command-palette {
1205
+ position: fixed;
1206
+ inset: 0;
1207
+ z-index: var(--fs-z-modal);
1208
+ display: none;
1209
+ align-items: flex-start;
1210
+ justify-content: center;
1211
+ padding: 72px 16px 16px;
1212
+ background-color: rgba(0, 0, 0, 0.5);
1213
+ }
1214
+ .fs-command-palette.is-open {
1215
+ display: flex;
1216
+ }
1217
+ .fs-command-palette-dialog {
1218
+ display: flex;
1219
+ flex-direction: column;
1220
+ width: 100%;
1221
+ max-width: 480px;
1222
+ max-height: calc(100vh - 88px);
1223
+ overflow: hidden;
1224
+ border-radius: var(--fs-radius-md);
1225
+ color: var(--fs-color-text);
1226
+ background-color: var(--fs-color-surface);
1227
+ box-shadow: var(--fs-shadow-lg);
1228
+ }
1229
+ .fs-command-palette-input {
1230
+ width: 100%;
1231
+ padding: 16px 20px;
1232
+ border: none;
1233
+ border-bottom: 1px solid var(--fs-color-border);
1234
+ color: var(--fs-color-text);
1235
+ background-color: var(--fs-color-surface-raised);
1236
+ font-size: 1rem;
1237
+ }
1238
+ .fs-command-palette-input:focus-visible {
1239
+ outline: var(--fs-focus-width) solid var(--fs-color-primary);
1240
+ outline-offset: var(--fs-focus-offset);
1241
+ border-color: var(--fs-color-primary);
1242
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--fs-color-primary) 22%, transparent);
1243
+ }
1244
+ .fs-command-palette-list {
1245
+ margin: 0;
1246
+ padding: 6px 0;
1247
+ overflow-y: auto;
1248
+ list-style: none;
1249
+ }
1250
+ }
1251
+ @layer components {
1252
+ .fs-tree,
1253
+ .fs-tree [role=group] {
1254
+ margin: 0;
1255
+ padding: 0;
1256
+ list-style: none;
1257
+ }
1258
+ .fs-tree [role=group] {
1259
+ padding-left: 20px;
1260
+ }
1261
+ .fs-tree [role=treeitem] {
1262
+ border-radius: var(--fs-radius-sm);
1263
+ }
1264
+ .fs-tree [role=treeitem]:focus-visible {
1265
+ outline: none;
1266
+ }
1267
+ .fs-tree [role=treeitem]:focus-visible > .fs-tree-label {
1268
+ outline: var(--fs-focus-width) solid var(--fs-color-primary);
1269
+ outline-offset: var(--fs-focus-offset);
1270
+ border-color: var(--fs-color-primary);
1271
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--fs-color-primary) 22%, transparent);
1272
+ }
1273
+ .fs-tree-label {
1274
+ display: flex;
1275
+ align-items: center;
1276
+ gap: 6px;
1277
+ padding: 6px 8px;
1278
+ border-radius: var(--fs-radius-sm);
1279
+ color: var(--fs-color-text);
1280
+ font-size: 0.8125rem;
1281
+ cursor: pointer;
1282
+ -webkit-user-select: none;
1283
+ user-select: none;
1284
+ }
1285
+ .fs-tree-label:hover {
1286
+ background-color: var(--fs-color-subtle);
1287
+ }
1288
+ .fs-tree [role=treeitem][aria-selected=true] > .fs-tree-label {
1289
+ color: var(--fs-color-on-primary);
1290
+ background-color: var(--fs-color-primary);
1291
+ }
1292
+ .fs-tree-toggle {
1293
+ flex-shrink: 0;
1294
+ width: 0;
1295
+ height: 0;
1296
+ border-top: 4px solid transparent;
1297
+ border-bottom: 4px solid transparent;
1298
+ border-left: 5px solid currentcolor;
1299
+ transition: transform 0.15s ease-in-out;
1300
+ }
1301
+ .fs-tree [role=treeitem][aria-expanded=true] > .fs-tree-label > .fs-tree-toggle {
1302
+ transform: rotate(90deg);
1303
+ }
1304
+ }
1305
+ @layer components {
1306
+ .fs-dropdown {
1307
+ position: relative;
1308
+ display: inline-flex;
1309
+ }
1310
+ .fs-dropdown-toggle::after {
1311
+ display: inline-block;
1312
+ width: 0;
1313
+ height: 0;
1314
+ vertical-align: middle;
1315
+ content: "";
1316
+ border-top: 5px solid;
1317
+ border-right: 5px solid transparent;
1318
+ border-left: 5px solid transparent;
1319
+ }
1320
+ .fs-dropdown-menu {
1321
+ position: absolute;
1322
+ display: none;
1323
+ min-width: 180px;
1324
+ margin: 0;
1325
+ padding: 6px 0;
1326
+ border: var(--fs-border-width) solid var(--fs-color-border-default);
1327
+ border-radius: var(--fs-radius-md);
1328
+ color: var(--fs-color-text);
1329
+ background-color: var(--fs-color-surface);
1330
+ box-shadow: var(--fs-shadow-md);
1331
+ z-index: var(--fs-z-dropdown);
1332
+ }
1333
+ .fs-dropdown-menu.is-open {
1334
+ display: block;
1335
+ }
1336
+ .fs-dropdown-item {
1337
+ display: flex;
1338
+ align-items: center;
1339
+ width: 100%;
1340
+ padding: 8px 16px;
1341
+ border: 0;
1342
+ color: var(--fs-color-text);
1343
+ background-color: var(--fs-color-surface-raised);
1344
+ font-size: 0.8125rem;
1345
+ text-align: left;
1346
+ text-decoration: none;
1347
+ cursor: pointer;
1348
+ }
1349
+ .fs-dropdown-item:hover,
1350
+ .fs-dropdown-item:focus-visible {
1351
+ color: var(--fs-color-text);
1352
+ background-color: var(--fs-color-subtle);
1353
+ outline: none;
1354
+ }
1355
+ .fs-dropdown-item.is-active {
1356
+ color: var(--fs-color-on-primary);
1357
+ background-color: var(--fs-color-primary);
1358
+ }
1359
+ .fs-dropdown-item.is-disabled {
1360
+ color: var(--fs-color-muted);
1361
+ pointer-events: none;
1362
+ opacity: 0.6;
1363
+ }
1364
+ .fs-dropdown-divider {
1365
+ height: 1px;
1366
+ margin: 6px 0;
1367
+ border: none;
1368
+ background-color: var(--fs-color-border);
1369
+ }
1370
+ .fs-dropdown-header {
1371
+ padding: 4px 16px;
1372
+ color: var(--fs-color-muted);
1373
+ font-size: 0.6875rem;
1374
+ font-weight: 500;
1375
+ text-transform: uppercase;
1376
+ }
1377
+ }
1378
+ @layer components {
1379
+ .fs-modal {
1380
+ position: fixed;
1381
+ inset: 0;
1382
+ z-index: var(--fs-z-modal);
1383
+ display: none;
1384
+ align-items: center;
1385
+ justify-content: center;
1386
+ padding: var(--fs-space-4);
1387
+ background-color: rgba(0, 0, 0, 0.5);
1388
+ }
1389
+ .fs-modal.is-open {
1390
+ display: flex;
1391
+ }
1392
+ .fs-modal-dialog {
1393
+ width: 100%;
1394
+ max-width: 480px;
1395
+ }
1396
+ .fs-modal-dialog.fs-modal-sm {
1397
+ max-width: 320px;
1398
+ }
1399
+ .fs-modal-dialog.fs-modal-lg {
1400
+ max-width: 720px;
1401
+ }
1402
+ .fs-modal-dialog.fs-modal-xl {
1403
+ max-width: 1140px;
1404
+ }
1405
+ .fs-modal-dialog.fs-modal-fullscreen {
1406
+ max-width: none;
1407
+ height: 100%;
1408
+ }
1409
+ .fs-modal-content {
1410
+ display: flex;
1411
+ flex-direction: column;
1412
+ max-height: calc(100vh - 2 * var(--fs-space-4));
1413
+ border: var(--fs-border-width) solid var(--fs-color-border-default);
1414
+ border-radius: var(--fs-radius-md);
1415
+ color: var(--fs-color-text);
1416
+ background-color: var(--fs-color-surface);
1417
+ box-shadow: var(--fs-shadow-lg);
1418
+ }
1419
+ .fs-modal-header {
1420
+ display: flex;
1421
+ align-items: center;
1422
+ justify-content: space-between;
1423
+ padding: 16px 20px;
1424
+ border-bottom: 1px solid var(--fs-color-border);
1425
+ }
1426
+ .fs-modal-title {
1427
+ margin: 0;
1428
+ font-size: 1rem;
1429
+ font-weight: 500;
1430
+ }
1431
+ .fs-modal-body {
1432
+ padding: 20px;
1433
+ overflow-y: auto;
1434
+ }
1435
+ .fs-modal-scrollable .fs-modal-content {
1436
+ overflow: hidden;
1437
+ }
1438
+ .fs-modal-scrollable .fs-modal-body {
1439
+ overflow-y: auto;
1440
+ }
1441
+ @media (width < 640px) {
1442
+ .fs-modal {
1443
+ align-items: flex-end;
1444
+ padding: 0;
1445
+ }
1446
+ .fs-modal-dialog,
1447
+ .fs-modal-dialog.fs-modal-sm,
1448
+ .fs-modal-dialog.fs-modal-lg,
1449
+ .fs-modal-dialog.fs-modal-xl {
1450
+ max-width: none;
1451
+ }
1452
+ .fs-modal-content {
1453
+ max-height: calc(100dvh - var(--fs-safe-area-top));
1454
+ border-radius: var(--fs-radius-md) var(--fs-radius-md) 0 0;
1455
+ }
1456
+ }
1457
+ .fs-modal-footer {
1458
+ display: flex;
1459
+ align-items: center;
1460
+ justify-content: flex-end;
1461
+ gap: 8px;
1462
+ padding: 16px 20px;
1463
+ border-top: 1px solid var(--fs-color-border);
1464
+ }
1465
+ }
1466
+ @layer components {
1467
+ .fs-alert-dialog-message {
1468
+ margin: 4px 0 0;
1469
+ color: var(--fs-color-muted);
1470
+ font-size: 0.75rem;
1471
+ }
1472
+ }
1473
+ @layer components {
1474
+ .fs-divider {
1475
+ margin: 16px 0;
1476
+ border: 0;
1477
+ border-top: 1px solid var(--fs-color-border);
1478
+ }
1479
+ .fs-divider:not(hr) {
1480
+ display: flex;
1481
+ align-items: center;
1482
+ border-top: none;
1483
+ color: var(--fs-color-muted);
1484
+ font-size: 0.75rem;
1485
+ }
1486
+ .fs-divider:not(hr)::before,
1487
+ .fs-divider:not(hr)::after {
1488
+ flex: 1;
1489
+ content: "";
1490
+ border-top: 1px solid var(--fs-color-border);
1491
+ }
1492
+ .fs-divider-label {
1493
+ padding: 0 12px;
1494
+ }
1495
+ }
1496
+ @layer components {
1497
+ .fs-empty-state {
1498
+ display: flex;
1499
+ flex-direction: column;
1500
+ align-items: center;
1501
+ padding: 48px 24px;
1502
+ text-align: center;
1503
+ }
1504
+ .fs-empty-state[hidden] {
1505
+ display: none;
1506
+ }
1507
+ .fs-empty-state-icon {
1508
+ display: flex;
1509
+ align-items: center;
1510
+ justify-content: center;
1511
+ width: 64px;
1512
+ height: 64px;
1513
+ margin-bottom: 16px;
1514
+ border-radius: 50%;
1515
+ color: var(--fs-color-muted);
1516
+ background-color: var(--fs-color-subtle);
1517
+ font-size: 28px;
1518
+ }
1519
+ .fs-empty-state-title {
1520
+ margin: 0;
1521
+ color: var(--fs-color-text);
1522
+ font-size: 1rem;
1523
+ font-weight: 500;
1524
+ }
1525
+ .fs-empty-state-text {
1526
+ max-width: 360px;
1527
+ margin: 4px 0 20px;
1528
+ color: var(--fs-color-muted);
1529
+ font-size: 0.75rem;
1530
+ }
1531
+ }
1532
+ @layer components {
1533
+ .fs-rating {
1534
+ display: inline-flex;
1535
+ flex-direction: row-reverse;
1536
+ }
1537
+ .fs-rating-input {
1538
+ position: absolute;
1539
+ width: 1px;
1540
+ height: 1px;
1541
+ padding: 0;
1542
+ margin: -1px;
1543
+ overflow: hidden;
1544
+ clip-path: inset(50%);
1545
+ white-space: nowrap;
1546
+ border: 0;
1547
+ }
1548
+ .fs-rating-star {
1549
+ display: flex;
1550
+ padding: 2px;
1551
+ color: var(--fs-color-border);
1552
+ font-size: 24px;
1553
+ cursor: pointer;
1554
+ }
1555
+ .fs-rating-input:checked ~ .fs-rating-star,
1556
+ .fs-rating-star:hover,
1557
+ .fs-rating-star:hover ~ .fs-rating-star {
1558
+ color: var(--fs-color-warning);
1559
+ }
1560
+ .fs-rating-input:checked ~ .fs-rating-star .fs-icon,
1561
+ .fs-rating-star:hover .fs-icon,
1562
+ .fs-rating-star:hover ~ .fs-rating-star .fs-icon {
1563
+ fill: currentcolor;
1564
+ }
1565
+ .fs-rating-input:focus-visible + .fs-rating-star {
1566
+ border-radius: var(--fs-radius-sm);
1567
+ outline: 2px solid var(--fs-color-primary);
1568
+ outline-offset: 2px;
1569
+ }
1570
+ .fs-rating-input:disabled + .fs-rating-star {
1571
+ opacity: 0.5;
1572
+ pointer-events: none;
1573
+ }
1574
+ .fs-rating-sm .fs-rating-star {
1575
+ font-size: 16px;
1576
+ }
1577
+ .fs-rating-lg .fs-rating-star {
1578
+ font-size: 32px;
1579
+ }
1580
+ }
1581
+ @layer components {
1582
+ .fs-tag {
1583
+ gap: 0;
1584
+ padding: 0 0 0 8px;
1585
+ }
1586
+ .fs-tag-label {
1587
+ min-width: 0;
1588
+ }
1589
+ .fs-tag-truncate {
1590
+ max-inline-size: min(100%, var(--fs-tag-max-inline-size, 20rem));
1591
+ }
1592
+ .fs-tag-truncate .fs-tag-label {
1593
+ overflow: hidden;
1594
+ text-overflow: ellipsis;
1595
+ white-space: nowrap;
1596
+ }
1597
+ .fs-tag-icon {
1598
+ display: inline-grid;
1599
+ width: 12px;
1600
+ height: 12px;
1601
+ flex: 0 0 12px;
1602
+ margin-right: 4px;
1603
+ place-items: center;
1604
+ }
1605
+ .fs-tag-icon .fs-icon {
1606
+ width: 12px;
1607
+ height: 12px;
1608
+ stroke: currentcolor;
1609
+ }
1610
+ .fs-tag .fs-btn-close {
1611
+ width: calc(var(--fs-badge-height) - 2px);
1612
+ height: calc(var(--fs-badge-height) - 2px);
1613
+ flex: 0 0 calc(var(--fs-badge-height) - 2px);
1614
+ margin-left: 4px;
1615
+ border-radius: 0;
1616
+ background-color: transparent;
1617
+ color: inherit;
1618
+ opacity: 0.7;
1619
+ transition: opacity 0.1s ease-in-out, background-color 0.1s ease-in-out, transform 0.1s ease-in-out;
1620
+ }
1621
+ .fs-tag .fs-btn-close::before,
1622
+ .fs-tag .fs-btn-close::after {
1623
+ top: calc(50% + 1px);
1624
+ width: 8px;
1625
+ }
1626
+ .fs-tag .fs-btn-close:hover {
1627
+ color: inherit;
1628
+ background-color: color-mix(in srgb, currentcolor 18%, transparent);
1629
+ opacity: 1;
1630
+ }
1631
+ .fs-tag .fs-btn-close:active {
1632
+ background-color: color-mix(in srgb, currentcolor 28%, transparent);
1633
+ transform: scale(0.9);
1634
+ }
1635
+ .fs-tag-group {
1636
+ display: flex;
1637
+ flex-wrap: wrap;
1638
+ gap: 0;
1639
+ }
1640
+ .fs-tag:focus-within {
1641
+ outline: var(--fs-focus-width) solid var(--fs-color-primary);
1642
+ outline-offset: var(--fs-focus-offset);
1643
+ border-color: var(--fs-color-primary);
1644
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--fs-color-primary) 22%, transparent);
1645
+ }
1646
+ .fs-tag.is-loading,
1647
+ .fs-tag[aria-busy=true] {
1648
+ --fs-badge-bg: var(--fs-color-warning);
1649
+ --fs-badge-color: var(--fs-color-black);
1650
+ --fs-badge-border: transparent;
1651
+ cursor: progress;
1652
+ }
1653
+ .fs-tag.is-loading .fs-spinner,
1654
+ .fs-tag[aria-busy=true] .fs-spinner {
1655
+ width: 12px;
1656
+ height: 12px;
1657
+ flex: 0 0 12px;
1658
+ margin: 0 6px 0 4px;
1659
+ border-width: 2px;
1660
+ color: var(--fs-color-black);
1661
+ }
1662
+ .fs-tag.is-loading .fs-btn-close,
1663
+ .fs-tag[aria-busy=true] .fs-btn-close {
1664
+ display: none;
1665
+ }
1666
+ .fs-tag-group .fs-tag + .fs-tag {
1667
+ border-inline-start-color: color-mix(in srgb, currentcolor 24%, transparent);
1668
+ }
1669
+ .fs-tag-group .fs-tag {
1670
+ padding-inline-start: calc(var(--fs-badge-height) + 2px);
1671
+ transition: background-color 0.1s ease-in-out;
1672
+ }
1673
+ .fs-tag-group .fs-btn-close {
1674
+ pointer-events: none;
1675
+ opacity: 0;
1676
+ }
1677
+ .fs-tag-group .fs-tag:hover .fs-btn-close,
1678
+ .fs-tag-group .fs-tag:focus-within .fs-btn-close {
1679
+ pointer-events: auto;
1680
+ opacity: 0.7;
1681
+ }
1682
+ .fs-tag-group .fs-tag:hover,
1683
+ .fs-tag-group .fs-tag:focus-within {
1684
+ background-color: color-mix(in srgb, currentcolor 18%, transparent);
1685
+ }
1686
+ .fs-tag-overflow {
1687
+ --fs-badge-bg: transparent;
1688
+ --fs-badge-color: var(--fs-alert-primary-text);
1689
+ --fs-badge-border: transparent;
1690
+ width: var(--fs-badge-height);
1691
+ height: var(--fs-badge-height);
1692
+ min-width: var(--fs-badge-height);
1693
+ padding: 0;
1694
+ border: 0;
1695
+ appearance: none;
1696
+ cursor: pointer;
1697
+ display: inline-flex;
1698
+ align-items: center;
1699
+ justify-content: center;
1700
+ font: inherit;
1701
+ line-height: 0;
1702
+ }
1703
+ .fs-tag-overflow .fs-icon {
1704
+ display: block;
1705
+ flex: 0 0 13px;
1706
+ width: 13px;
1707
+ height: 13px;
1708
+ stroke: currentcolor;
1709
+ }
1710
+ .fs-tag-overflow:hover,
1711
+ .fs-tag-group .fs-tag-overflow:hover {
1712
+ background-color: transparent;
1713
+ border-color: transparent;
1714
+ }
1715
+ .fs-tag-group .fs-tag-overflow {
1716
+ padding-inline-start: 0;
1717
+ }
1718
+ .fs-tag-overflow:focus-visible {
1719
+ outline: var(--fs-focus-width) solid var(--fs-color-primary);
1720
+ outline-offset: var(--fs-focus-offset);
1721
+ border-color: var(--fs-color-primary);
1722
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--fs-color-primary) 22%, transparent);
1723
+ }
1724
+ .fs-tag-group .fs-btn-close:hover {
1725
+ color: inherit;
1726
+ background-color: transparent;
1727
+ opacity: 0.7;
1728
+ }
1729
+ .fs-tag-protected {
1730
+ pointer-events: none;
1731
+ }
1732
+ .fs-tag-lock {
1733
+ display: inline-grid;
1734
+ width: calc(var(--fs-badge-height) - 2px);
1735
+ height: calc(var(--fs-badge-height) - 2px);
1736
+ margin-left: 4px;
1737
+ place-items: center;
1738
+ }
1739
+ .fs-tag-lock svg {
1740
+ width: 12px;
1741
+ height: 12px;
1742
+ stroke: currentcolor;
1743
+ stroke-width: 2;
1744
+ }
1745
+ }
1746
+ @layer components {
1747
+ .fs-offcanvas {
1748
+ position: fixed;
1749
+ z-index: var(--fs-z-offcanvas);
1750
+ display: flex;
1751
+ flex-direction: column;
1752
+ color: var(--fs-color-text);
1753
+ background-color: var(--fs-color-surface);
1754
+ box-shadow: var(--fs-shadow-lg);
1755
+ visibility: hidden;
1756
+ transition: transform 0.3s ease, visibility 0.3s ease;
1757
+ }
1758
+ .fs-offcanvas.is-open {
1759
+ visibility: visible;
1760
+ transform: none;
1761
+ }
1762
+ .fs-offcanvas-start {
1763
+ inset: 0 auto 0 0;
1764
+ width: 320px;
1765
+ transform: translateX(-100%);
1766
+ }
1767
+ .fs-offcanvas-end {
1768
+ inset: 0 0 0 auto;
1769
+ width: 320px;
1770
+ transform: translateX(100%);
1771
+ }
1772
+ .fs-offcanvas-top {
1773
+ inset: 0 0 auto;
1774
+ height: 40vh;
1775
+ transform: translateY(-100%);
1776
+ }
1777
+ .fs-offcanvas-bottom {
1778
+ inset: auto 0 0;
1779
+ height: 40vh;
1780
+ transform: translateY(100%);
1781
+ }
1782
+ .fs-offcanvas-backdrop {
1783
+ position: fixed;
1784
+ inset: 0;
1785
+ z-index: calc(var(--fs-z-offcanvas) - 1);
1786
+ background-color: rgba(0, 0, 0, 0.5);
1787
+ opacity: 0;
1788
+ visibility: hidden;
1789
+ transition: opacity 0.3s ease, visibility 0.3s ease;
1790
+ }
1791
+ .fs-offcanvas-backdrop.is-open {
1792
+ visibility: visible;
1793
+ opacity: 1;
1794
+ }
1795
+ .fs-offcanvas-header {
1796
+ display: flex;
1797
+ align-items: center;
1798
+ justify-content: space-between;
1799
+ padding: 16px 20px;
1800
+ border-bottom: 1px solid var(--fs-color-border);
1801
+ }
1802
+ .fs-offcanvas-title {
1803
+ margin: 0;
1804
+ font-size: 1rem;
1805
+ font-weight: 500;
1806
+ }
1807
+ .fs-offcanvas-body {
1808
+ flex: 1 1 auto;
1809
+ padding: 20px;
1810
+ overflow-y: auto;
1811
+ }
1812
+ .fs-offcanvas-footer {
1813
+ display: flex;
1814
+ align-items: center;
1815
+ justify-content: flex-end;
1816
+ gap: 8px;
1817
+ padding: 16px 20px;
1818
+ border-top: 1px solid var(--fs-color-border);
1819
+ }
1820
+ .fs-offcanvas-responsive {
1821
+ width: min(100%, 420px);
1822
+ }
1823
+ @media (width >= 1024px) {
1824
+ .fs-offcanvas-lg {
1825
+ position: static;
1826
+ width: auto;
1827
+ height: auto;
1828
+ visibility: visible;
1829
+ transform: none;
1830
+ box-shadow: none;
1831
+ }
1832
+ .fs-offcanvas-lg + .fs-offcanvas-backdrop {
1833
+ display: none;
1834
+ }
1835
+ }
1836
+ @media (prefers-reduced-motion: reduce) {
1837
+ .fs-offcanvas,
1838
+ .fs-offcanvas-backdrop {
1839
+ transition: none;
1840
+ }
1841
+ }
1842
+ }
1843
+ @layer components {
1844
+ .fs-accordion {
1845
+ display: flex;
1846
+ flex-direction: column;
1847
+ }
1848
+ .fs-accordion-item {
1849
+ overflow: hidden;
1850
+ border: 1px solid var(--fs-color-border);
1851
+ background-color: var(--fs-color-surface-raised);
1852
+ }
1853
+ .fs-accordion-item + .fs-accordion-item {
1854
+ border-top: none;
1855
+ }
1856
+ .fs-accordion-item:first-child {
1857
+ border-top-left-radius: var(--fs-radius-md);
1858
+ border-top-right-radius: var(--fs-radius-md);
1859
+ }
1860
+ .fs-accordion-item:last-child {
1861
+ border-bottom-right-radius: var(--fs-radius-md);
1862
+ border-bottom-left-radius: var(--fs-radius-md);
1863
+ }
1864
+ .fs-accordion-flush .fs-accordion-item {
1865
+ border-inline: 0;
1866
+ border-radius: 0;
1867
+ }
1868
+ .fs-accordion-flush .fs-accordion-item:first-child {
1869
+ border-block-start: 0;
1870
+ }
1871
+ .fs-accordion-always-open .fs-accordion-button[aria-expanded=true]::after {
1872
+ transform: rotate(-135deg);
1873
+ }
1874
+ .fs-accordion-header {
1875
+ margin: 0;
1876
+ }
1877
+ .fs-accordion-button {
1878
+ display: flex;
1879
+ align-items: center;
1880
+ justify-content: space-between;
1881
+ width: 100%;
1882
+ padding: 14px 16px;
1883
+ border: none;
1884
+ color: var(--fs-color-text);
1885
+ background-color: var(--fs-color-surface);
1886
+ font-size: 0.8125rem;
1887
+ font-weight: 500;
1888
+ text-align: left;
1889
+ cursor: pointer;
1890
+ }
1891
+ .fs-accordion-button:hover {
1892
+ background-color: var(--fs-color-subtle);
1893
+ }
1894
+ .fs-accordion-button:focus-visible {
1895
+ outline: var(--fs-focus-width) solid var(--fs-color-primary);
1896
+ outline-offset: var(--fs-focus-offset);
1897
+ border-color: var(--fs-color-primary);
1898
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--fs-color-primary) 22%, transparent);
1899
+ }
1900
+ .fs-accordion-button::after {
1901
+ flex-shrink: 0;
1902
+ width: 8px;
1903
+ height: 8px;
1904
+ margin-left: 12px;
1905
+ content: "";
1906
+ border-right: 2px solid currentcolor;
1907
+ border-bottom: 2px solid currentcolor;
1908
+ transform: rotate(45deg);
1909
+ transition: transform 0.2s ease-in-out;
1910
+ }
1911
+ .fs-accordion-button[aria-expanded=true]::after {
1912
+ transform: rotate(-135deg);
1913
+ }
1914
+ .fs-accordion-collapse {
1915
+ overflow: hidden;
1916
+ }
1917
+ .fs-accordion-body {
1918
+ padding: 16px;
1919
+ border-top: 1px solid var(--fs-color-border);
1920
+ background-color: var(--fs-color-surface-raised);
1921
+ }
1922
+ @media (prefers-reduced-motion: reduce) {
1923
+ .fs-accordion-button::after {
1924
+ transition: none;
1925
+ }
1926
+ }
1927
+ }
1928
+ @layer components {
1929
+ .fs-tabs {
1930
+ display: flex;
1931
+ border-bottom: var(--fs-border-width) solid var(--fs-color-border-default);
1932
+ }
1933
+ .fs-tabs .fs-nav-link {
1934
+ margin-bottom: -1px;
1935
+ border-bottom: 2px solid transparent;
1936
+ border-radius: var(--fs-radius-sm) var(--fs-radius-sm) 0 0;
1937
+ }
1938
+ .fs-tabs .fs-nav-link.is-active {
1939
+ border-bottom-color: var(--fs-color-primary);
1940
+ }
1941
+ .fs-tabs-pill {
1942
+ gap: 4px;
1943
+ border-bottom: none;
1944
+ }
1945
+ .fs-tabs-pill .fs-nav-link {
1946
+ margin-bottom: 0;
1947
+ border-bottom: none;
1948
+ border-radius: var(--fs-radius-sm);
1949
+ }
1950
+ .fs-tabs-pill .fs-nav-link.is-active {
1951
+ color: var(--fs-color-on-primary);
1952
+ background-color: var(--fs-color-primary);
1953
+ }
1954
+ .fs-tabs-depth {
1955
+ gap: 2px;
1956
+ padding: 4px 4px 0;
1957
+ background-color: var(--fs-color-subtle);
1958
+ }
1959
+ .fs-tabs-depth .fs-nav-link {
1960
+ margin-bottom: -1px;
1961
+ border: 1px solid transparent;
1962
+ border-bottom: none;
1963
+ border-radius: var(--fs-radius-sm) var(--fs-radius-sm) 0 0;
1964
+ }
1965
+ .fs-tabs-depth .fs-nav-link.is-active {
1966
+ border-color: var(--fs-color-border);
1967
+ background-color: var(--fs-color-surface);
1968
+ }
1969
+ .fs-tabs-center {
1970
+ justify-content: center;
1971
+ }
1972
+ .fs-tabs-right {
1973
+ justify-content: flex-end;
1974
+ }
1975
+ .fs-tabs-fill .fs-nav-link {
1976
+ flex: 1;
1977
+ justify-content: center;
1978
+ text-align: center;
1979
+ }
1980
+ .fs-tabs-sm .fs-nav-link {
1981
+ padding: 6px 10px;
1982
+ font-size: 0.75rem;
1983
+ }
1984
+ .fs-tabs-lg .fs-nav-link {
1985
+ padding: 10px 16px;
1986
+ font-size: 1rem;
1987
+ }
1988
+ .fs-tab-content > .fs-tab-pane {
1989
+ display: none;
1990
+ }
1991
+ .fs-tab-content > .fs-tab-pane.is-active {
1992
+ display: block;
1993
+ }
1994
+ }
1995
+ @layer components {
1996
+ .fs-tooltip {
1997
+ position: absolute;
1998
+ z-index: var(--fs-z-tooltip);
1999
+ display: none;
2000
+ max-width: 220px;
2001
+ }
2002
+ .fs-tooltip.is-open {
2003
+ display: block;
2004
+ }
2005
+ .fs-tooltip-inner {
2006
+ padding: 6px 10px;
2007
+ border-radius: var(--fs-radius-sm);
2008
+ color: var(--fs-tooltip-text);
2009
+ background-color: var(--fs-tooltip-bg);
2010
+ font-size: 0.6875rem;
2011
+ text-align: center;
2012
+ }
2013
+ .fs-tooltip-arrow {
2014
+ position: absolute;
2015
+ width: 8px;
2016
+ height: 8px;
2017
+ background-color: var(--fs-tooltip-bg);
2018
+ transform: rotate(45deg);
2019
+ }
2020
+ .fs-tooltip[data-placement=top] .fs-tooltip-arrow {
2021
+ bottom: -4px;
2022
+ left: 50%;
2023
+ margin-left: -4px;
2024
+ }
2025
+ .fs-tooltip[data-placement=bottom] .fs-tooltip-arrow {
2026
+ top: -4px;
2027
+ left: 50%;
2028
+ margin-left: -4px;
2029
+ }
2030
+ .fs-tooltip[data-placement=left] .fs-tooltip-arrow {
2031
+ top: 50%;
2032
+ right: -4px;
2033
+ margin-top: -4px;
2034
+ }
2035
+ .fs-tooltip[data-placement=right] .fs-tooltip-arrow {
2036
+ top: 50%;
2037
+ left: -4px;
2038
+ margin-top: -4px;
2039
+ }
2040
+ }
2041
+ @layer components {
2042
+ .fs-popover {
2043
+ position: absolute;
2044
+ z-index: var(--fs-z-offcanvas);
2045
+ display: none;
2046
+ max-width: 280px;
2047
+ color: var(--fs-color-text);
2048
+ background-color: var(--fs-color-surface);
2049
+ border: 1px solid var(--fs-color-border);
2050
+ border-radius: var(--fs-radius-md);
2051
+ box-shadow: var(--fs-shadow-md);
2052
+ }
2053
+ .fs-popover.is-open {
2054
+ display: block;
2055
+ }
2056
+ .fs-popover-header {
2057
+ padding: 10px 14px;
2058
+ background-color: var(--fs-color-subtle);
2059
+ border-bottom: 1px solid var(--fs-color-border);
2060
+ border-radius: var(--fs-radius-md) var(--fs-radius-md) 0 0;
2061
+ font-size: 0.75rem;
2062
+ font-weight: 500;
2063
+ }
2064
+ .fs-popover-body {
2065
+ padding: 14px;
2066
+ font-size: 0.75rem;
2067
+ }
2068
+ .fs-popover-footer {
2069
+ display: flex;
2070
+ align-items: center;
2071
+ justify-content: flex-end;
2072
+ gap: 8px;
2073
+ padding: 10px 14px;
2074
+ border-top: 1px solid var(--fs-color-border);
2075
+ }
2076
+ .fs-popover-arrow {
2077
+ position: absolute;
2078
+ width: 8px;
2079
+ height: 8px;
2080
+ background-color: var(--fs-color-surface);
2081
+ border: 1px solid var(--fs-color-border);
2082
+ transform: rotate(45deg);
2083
+ }
2084
+ .fs-popover[data-placement=top] .fs-popover-arrow {
2085
+ bottom: -5px;
2086
+ left: 50%;
2087
+ margin-left: -4px;
2088
+ border-top: 0;
2089
+ border-left: 0;
2090
+ }
2091
+ .fs-popover[data-placement=bottom] .fs-popover-arrow {
2092
+ top: -5px;
2093
+ left: 50%;
2094
+ margin-left: -4px;
2095
+ border-right: 0;
2096
+ border-bottom: 0;
2097
+ }
2098
+ .fs-popover[data-placement=left] .fs-popover-arrow {
2099
+ top: 50%;
2100
+ right: -5px;
2101
+ margin-top: -4px;
2102
+ border-bottom: 0;
2103
+ border-left: 0;
2104
+ }
2105
+ .fs-popover[data-placement=right] .fs-popover-arrow {
2106
+ top: 50%;
2107
+ left: -5px;
2108
+ margin-top: -4px;
2109
+ border-top: 0;
2110
+ border-right: 0;
2111
+ }
2112
+ .fs-popover-hover-card {
2113
+ max-width: 320px;
2114
+ }
2115
+ .fs-popover-hover-card .fs-popover-body {
2116
+ display: flex;
2117
+ gap: 12px;
2118
+ }
2119
+ }
2120
+ @layer components {
2121
+ .fs-toast-container {
2122
+ position: fixed;
2123
+ right: 16px;
2124
+ bottom: 16px;
2125
+ z-index: var(--fs-z-toast);
2126
+ display: flex;
2127
+ flex-direction: column;
2128
+ gap: 8px;
2129
+ width: min(360px, 100%);
2130
+ max-width: calc(100vw - 2 * var(--fs-space-3));
2131
+ }
2132
+ .fs-toast {
2133
+ display: flex;
2134
+ overflow: hidden;
2135
+ flex-direction: column;
2136
+ border: 1px solid var(--fs-color-border);
2137
+ border-radius: var(--fs-radius-md);
2138
+ color: var(--fs-color-text);
2139
+ background-color: var(--fs-color-surface);
2140
+ box-shadow: var(--fs-shadow-md);
2141
+ }
2142
+ .fs-toast-header {
2143
+ display: flex;
2144
+ align-items: center;
2145
+ justify-content: space-between;
2146
+ padding: 10px 12px;
2147
+ border-bottom: 1px solid var(--fs-color-border);
2148
+ font-size: 0.75rem;
2149
+ font-weight: 500;
2150
+ }
2151
+ .fs-toast-body {
2152
+ padding: 12px;
2153
+ font-size: 0.75rem;
2154
+ }
2155
+ .fs-toast-primary .fs-toast-header {
2156
+ color: var(--fs-alert-primary-text);
2157
+ background-color: var(--fs-alert-primary-bg);
2158
+ }
2159
+ .fs-toast-secondary .fs-toast-header {
2160
+ color: var(--fs-alert-secondary-text);
2161
+ background-color: var(--fs-alert-secondary-bg);
2162
+ }
2163
+ .fs-toast-success .fs-toast-header {
2164
+ color: var(--fs-alert-success-text);
2165
+ background-color: var(--fs-alert-success-bg);
2166
+ }
2167
+ .fs-toast-warning .fs-toast-header {
2168
+ color: var(--fs-alert-warning-text);
2169
+ background-color: var(--fs-alert-warning-bg);
2170
+ }
2171
+ .fs-toast-danger .fs-toast-header {
2172
+ color: var(--fs-alert-danger-text);
2173
+ background-color: var(--fs-alert-danger-bg);
2174
+ }
2175
+ .fs-toast-info .fs-toast-header {
2176
+ color: var(--fs-alert-info-text);
2177
+ background-color: var(--fs-alert-info-bg);
2178
+ }
2179
+ }
2180
+ @layer components {
2181
+ .fs-pagination {
2182
+ display: flex;
2183
+ gap: 0.25rem;
2184
+ margin: 0;
2185
+ padding: 0;
2186
+ list-style: none;
2187
+ }
2188
+ .fs-pagination-scroll {
2189
+ max-width: 100%;
2190
+ overflow-x: auto;
2191
+ padding-block: 2px;
2192
+ }
2193
+ .fs-pagination-scroll .fs-pagination {
2194
+ width: max-content;
2195
+ }
2196
+ .fs-page-link {
2197
+ display: inline-flex;
2198
+ align-items: center;
2199
+ justify-content: center;
2200
+ min-width: 32px;
2201
+ height: 32px;
2202
+ padding: 0 8px;
2203
+ border: 1px solid var(--fs-color-border);
2204
+ border-radius: var(--fs-radius-sm);
2205
+ color: var(--fs-color-text);
2206
+ background-color: var(--fs-color-surface);
2207
+ text-decoration: none;
2208
+ transition: background-color 0.15s ease-in-out;
2209
+ }
2210
+ .fs-page-link:hover {
2211
+ background-color: var(--fs-color-subtle);
2212
+ }
2213
+ .fs-page-link:focus-visible {
2214
+ outline: var(--fs-focus-width) solid var(--fs-color-primary);
2215
+ outline-offset: var(--fs-focus-offset);
2216
+ border-color: var(--fs-color-primary);
2217
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--fs-color-primary) 22%, transparent);
2218
+ }
2219
+ .fs-page-item.is-active .fs-page-link {
2220
+ color: var(--fs-color-on-primary);
2221
+ background-color: var(--fs-color-primary);
2222
+ border-color: var(--fs-color-primary);
2223
+ }
2224
+ .fs-page-item.is-disabled .fs-page-link {
2225
+ color: var(--fs-color-muted);
2226
+ opacity: 0.6;
2227
+ pointer-events: none;
2228
+ }
2229
+ .fs-pagination-bordered {
2230
+ gap: 0;
2231
+ }
2232
+ .fs-pagination-bordered .fs-page-link {
2233
+ border-radius: 0;
2234
+ }
2235
+ .fs-pagination-bordered .fs-page-item:not(:first-child) .fs-page-link {
2236
+ margin-left: -1px;
2237
+ }
2238
+ .fs-pagination-bordered .fs-page-item:first-child .fs-page-link {
2239
+ border-top-left-radius: var(--fs-radius-sm);
2240
+ border-bottom-left-radius: var(--fs-radius-sm);
2241
+ }
2242
+ .fs-pagination-bordered .fs-page-item:last-child .fs-page-link {
2243
+ border-top-right-radius: var(--fs-radius-sm);
2244
+ border-bottom-right-radius: var(--fs-radius-sm);
2245
+ }
2246
+ .fs-pagination-bordered .fs-page-link:hover,
2247
+ .fs-pagination-bordered .fs-page-item.is-active .fs-page-link {
2248
+ position: relative;
2249
+ z-index: 1;
2250
+ }
2251
+ .fs-pagination-sm .fs-page-link {
2252
+ min-width: 26px;
2253
+ height: 26px;
2254
+ padding: 0 6px;
2255
+ font-size: 0.6875rem;
2256
+ }
2257
+ .fs-pagination-lg .fs-page-link {
2258
+ min-width: 40px;
2259
+ height: 40px;
2260
+ padding: 0 12px;
2261
+ font-size: 0.8125rem;
2262
+ }
2263
+ .fs-page-link-text {
2264
+ gap: 6px;
2265
+ padding: 0 14px;
2266
+ }
2267
+ }
2268
+ @layer components {
2269
+ .fs-breadcrumb {
2270
+ display: flex;
2271
+ flex-wrap: wrap;
2272
+ align-items: center;
2273
+ gap: 4px;
2274
+ margin: 0;
2275
+ padding: 0;
2276
+ list-style: none;
2277
+ font-size: 0.75rem;
2278
+ }
2279
+ .fs-breadcrumb-item {
2280
+ display: flex;
2281
+ align-items: center;
2282
+ gap: 4px;
2283
+ color: var(--fs-color-muted);
2284
+ }
2285
+ .fs-breadcrumb-item + .fs-breadcrumb-item::before {
2286
+ color: var(--fs-color-muted);
2287
+ content: "/";
2288
+ }
2289
+ .fs-breadcrumb-item a {
2290
+ display: inline-flex;
2291
+ align-items: center;
2292
+ gap: 4px;
2293
+ color: var(--fs-alert-primary-text);
2294
+ text-decoration: none;
2295
+ }
2296
+ .fs-breadcrumb-item a:hover {
2297
+ text-decoration: underline;
2298
+ }
2299
+ .fs-breadcrumb-item.is-active {
2300
+ color: var(--fs-color-text);
2301
+ }
2302
+ .fs-breadcrumb-item-truncate {
2303
+ display: inline-block;
2304
+ max-width: 160px;
2305
+ vertical-align: bottom;
2306
+ overflow: hidden;
2307
+ text-overflow: ellipsis;
2308
+ white-space: nowrap;
2309
+ }
2310
+ .fs-breadcrumb-more {
2311
+ padding: 0;
2312
+ border: none;
2313
+ color: var(--fs-color-muted);
2314
+ background-color: var(--fs-color-surface-raised);
2315
+ font-size: inherit;
2316
+ font-family: inherit;
2317
+ line-height: inherit;
2318
+ cursor: pointer;
2319
+ }
2320
+ .fs-breadcrumb-more:hover {
2321
+ color: var(--fs-color-text);
2322
+ }
2323
+ }
2324
+ @layer components {
2325
+ .fs-spinner {
2326
+ --fs-spinner-size: 20px;
2327
+ --fs-spinner-stroke: 2px;
2328
+ --fs-spinner-duration: 0.8s;
2329
+ display: inline-block;
2330
+ box-sizing: border-box;
2331
+ width: var(--fs-spinner-size);
2332
+ height: var(--fs-spinner-size);
2333
+ vertical-align: middle;
2334
+ border: var(--fs-spinner-stroke) solid color-mix(in srgb, currentcolor 20%, transparent);
2335
+ border-top-color: currentcolor;
2336
+ border-radius: 50%;
2337
+ animation: fokus-spin var(--fs-spinner-duration) linear infinite;
2338
+ will-change: transform;
2339
+ }
2340
+ .fs-spinner-sm {
2341
+ --fs-spinner-size: 14px;
2342
+ --fs-spinner-stroke: 2px;
2343
+ }
2344
+ .fs-spinner-lg {
2345
+ --fs-spinner-size: 32px;
2346
+ --fs-spinner-stroke: 3px;
2347
+ }
2348
+ .fs-spinner-primary {
2349
+ color: var(--fs-color-primary);
2350
+ }
2351
+ .fs-spinner-secondary {
2352
+ color: var(--fs-color-secondary);
2353
+ }
2354
+ .fs-spinner-success {
2355
+ color: var(--fs-color-success);
2356
+ }
2357
+ .fs-spinner-warning {
2358
+ color: var(--fs-color-warning);
2359
+ }
2360
+ .fs-spinner-danger {
2361
+ color: var(--fs-color-danger);
2362
+ }
2363
+ .fs-spinner-info {
2364
+ color: var(--fs-color-info);
2365
+ }
2366
+ @keyframes fokus-spin {
2367
+ to {
2368
+ transform: rotate(360deg);
2369
+ }
2370
+ }
2371
+ .fs-progress {
2372
+ --fs-progress-height: 8px;
2373
+ --fs-progress-track: var(--fs-color-subtle);
2374
+ --fs-progress-radius: 0;
2375
+ position: relative;
2376
+ display: flex;
2377
+ height: var(--fs-progress-height);
2378
+ overflow: hidden;
2379
+ background-color: var(--fs-progress-track);
2380
+ border-radius: var(--fs-progress-radius);
2381
+ }
2382
+ .fs-progress-bar {
2383
+ --fs-progress-bar-bg: var(--fs-color-primary);
2384
+ --fs-progress-color: var(--fs-color-on-primary);
2385
+ display: flex;
2386
+ align-items: center;
2387
+ justify-content: center;
2388
+ width: calc(var(--fs-progress-value, 0) * 1%);
2389
+ height: 100%;
2390
+ min-width: 0;
2391
+ overflow: hidden;
2392
+ color: var(--fs-progress-color);
2393
+ background-color: var(--fs-progress-bar-bg);
2394
+ font-size: 0;
2395
+ line-height: 1;
2396
+ text-overflow: ellipsis;
2397
+ white-space: nowrap;
2398
+ transition: width 0.25s ease-out;
2399
+ }
2400
+ .fs-progress-bar-primary {
2401
+ --fs-progress-bar-bg: var(--fs-color-primary);
2402
+ --fs-progress-color: #ffffff;
2403
+ }
2404
+ .fs-progress-bar-secondary {
2405
+ --fs-progress-bar-bg: var(--fs-color-secondary);
2406
+ --fs-progress-color: #ffffff;
2407
+ }
2408
+ .fs-progress-bar-success {
2409
+ --fs-progress-bar-bg: var(--fs-color-success);
2410
+ --fs-progress-color: #000000;
2411
+ }
2412
+ .fs-progress-bar-warning {
2413
+ --fs-progress-bar-bg: var(--fs-color-warning);
2414
+ --fs-progress-color: #000000;
2415
+ }
2416
+ .fs-progress-bar-danger {
2417
+ --fs-progress-bar-bg: var(--fs-color-danger);
2418
+ --fs-progress-color: #ffffff;
2419
+ }
2420
+ .fs-progress-bar-info {
2421
+ --fs-progress-bar-bg: var(--fs-color-info);
2422
+ --fs-progress-color: #ffffff;
2423
+ }
2424
+ .fs-spinner[data-fs-loading=false] {
2425
+ display: none;
2426
+ }
2427
+ .fs-progress-sm {
2428
+ --fs-progress-height: 4px;
2429
+ }
2430
+ .fs-progress-lg {
2431
+ --fs-progress-height: 16px;
2432
+ }
2433
+ .fs-progress-lg .fs-progress-bar {
2434
+ padding-inline: 6px;
2435
+ font-size: 0.6875rem;
2436
+ }
2437
+ .fs-progress-meta {
2438
+ display: flex;
2439
+ align-items: baseline;
2440
+ justify-content: space-between;
2441
+ gap: 12px;
2442
+ max-width: 480px;
2443
+ margin-bottom: 6px;
2444
+ color: var(--fs-color-text);
2445
+ font-size: 0.75rem;
2446
+ }
2447
+ .fs-progress-value {
2448
+ color: var(--fs-color-muted);
2449
+ font-variant-numeric: tabular-nums;
2450
+ }
2451
+ .fs-progress-indeterminate .fs-progress-bar {
2452
+ width: 36%;
2453
+ animation: fokus-progress-indeterminate 1.25s ease-in-out infinite;
2454
+ }
2455
+ .fs-progress-indeterminate {
2456
+ --fs-progress-track: color-mix(in srgb, var(--fs-color-primary) 18%, transparent);
2457
+ }
2458
+ @keyframes fokus-progress-indeterminate {
2459
+ from {
2460
+ transform: translateX(-110%);
2461
+ }
2462
+ to {
2463
+ transform: translateX(290%);
2464
+ }
2465
+ }
2466
+ .fs-progress-complete .fs-progress-bar {
2467
+ --fs-progress-bar-bg: var(--fs-color-success);
2468
+ --fs-progress-color: #000000;
2469
+ }
2470
+ .fs-progress-error .fs-progress-bar {
2471
+ --fs-progress-bar-bg: var(--fs-color-danger);
2472
+ --fs-progress-color: #ffffff;
2473
+ }
2474
+ .fs-progress-status {
2475
+ display: inline-flex;
2476
+ align-items: center;
2477
+ gap: 6px;
2478
+ margin-top: 6px;
2479
+ color: var(--fs-color-muted);
2480
+ font-size: 0.75rem;
2481
+ }
2482
+ .fs-progress-status-icon {
2483
+ display: inline-grid;
2484
+ width: 14px;
2485
+ height: 14px;
2486
+ place-items: center;
2487
+ color: var(--fs-alert-success-text);
2488
+ }
2489
+ .fs-progress-status-icon .fs-icon {
2490
+ width: 14px;
2491
+ height: 14px;
2492
+ stroke: currentcolor;
2493
+ }
2494
+ .fs-progress-status-danger,
2495
+ .fs-progress-error + .fs-progress-status {
2496
+ color: var(--fs-alert-danger-text);
2497
+ }
2498
+ .fs-progress-marker {
2499
+ position: absolute;
2500
+ z-index: 1;
2501
+ top: 0;
2502
+ bottom: 0;
2503
+ left: calc(var(--fs-progress-marker-value) * 1%);
2504
+ width: 2px;
2505
+ background-color: var(--fs-color-text);
2506
+ pointer-events: none;
2507
+ transform: translateX(-1px);
2508
+ }
2509
+ .fs-progress-minimum .fs-progress-bar {
2510
+ width: max(var(--fs-progress-value, 0) * 1%, 4px);
2511
+ }
2512
+ .fs-progress-bar-striped {
2513
+ background-image: linear-gradient(45deg, color-mix(in srgb, currentcolor 16%, transparent) 25%, transparent 25%, transparent 50%, color-mix(in srgb, currentcolor 16%, transparent) 50%, color-mix(in srgb, currentcolor 16%, transparent) 75%, transparent 75%, transparent);
2514
+ background-size: 16px 16px;
2515
+ }
2516
+ .fs-progress-bar-animated {
2517
+ animation: fokus-progress-stripes 1s linear infinite;
2518
+ }
2519
+ @keyframes fokus-progress-stripes {
2520
+ from {
2521
+ background-position: 16px 0;
2522
+ }
2523
+ to {
2524
+ background-position: 0 0;
2525
+ }
2526
+ }
2527
+ @media (prefers-reduced-motion: reduce) {
2528
+ .fs-spinner {
2529
+ --fs-spinner-duration: 1.5s;
2530
+ }
2531
+ .fs-progress-bar-animated {
2532
+ animation-duration: 1.5s;
2533
+ }
2534
+ .fs-progress-indeterminate .fs-progress-bar {
2535
+ animation-duration: 1.8s;
2536
+ }
2537
+ }
2538
+ }
2539
+ @layer components {
2540
+ .fs-carousel {
2541
+ --fs-carousel-radius: var(--fs-radius-md);
2542
+ --fs-carousel-transition-duration: var(--fs-transition-normal);
2543
+ --fs-carousel-transition-easing: var(--fs-ease-standard);
2544
+ --fs-carousel-control-size: 44px;
2545
+ --fs-carousel-control-inset: var(--fs-space-2);
2546
+ --fs-carousel-control-gap: var(--fs-space-1);
2547
+ --fs-carousel-control-color: var(--fs-color-white);
2548
+ --fs-carousel-control-paused-color: var(--fs-color-warning);
2549
+ --fs-carousel-control-bg: rgb(15 23 42 / 72%);
2550
+ --fs-carousel-control-bg-hover: rgb(15 23 42 / 88%);
2551
+ --fs-carousel-focus-color: var(--fs-color-white);
2552
+ --fs-carousel-indicator-size: 8px;
2553
+ --fs-carousel-indicator-active-width: 24px;
2554
+ --fs-carousel-indicator-color: rgb(255 255 255 / 62%);
2555
+ --fs-carousel-indicator-active-color: var(--fs-color-white);
2556
+ --fs-carousel-caption-scrim: rgb(15 23 42 / 78%);
2557
+ --fs-carousel-top-safe-area: calc(var(--fs-carousel-control-size) + (var(--fs-carousel-control-inset) * 2));
2558
+ --fs-carousel-bottom-safe-area: calc(32px + var(--fs-space-2) + 24px);
2559
+ --fs-carousel-progress-height: 3px;
2560
+ position: relative;
2561
+ overflow: hidden;
2562
+ border-radius: var(--fs-carousel-radius);
2563
+ }
2564
+ .fs-carousel::before {
2565
+ position: absolute;
2566
+ top: 0;
2567
+ right: 0;
2568
+ left: 0;
2569
+ z-index: 1;
2570
+ height: calc(var(--fs-carousel-control-size) + var(--fs-carousel-control-inset) * 2);
2571
+ pointer-events: none;
2572
+ content: "";
2573
+ background: linear-gradient(to bottom, rgba(15, 23, 42, 0.76), rgba(15, 23, 42, 0.32));
2574
+ opacity: 0;
2575
+ transition: opacity var(--fs-transition-fast) var(--fs-ease-standard);
2576
+ }
2577
+ .fs-carousel-inner {
2578
+ display: flex;
2579
+ transition: transform var(--fs-carousel-transition-duration) var(--fs-carousel-transition-easing);
2580
+ }
2581
+ .fs-carousel-item {
2582
+ position: relative;
2583
+ flex: 0 0 100%;
2584
+ width: 100%;
2585
+ }
2586
+ .fs-carousel-item img {
2587
+ display: block;
2588
+ width: 100%;
2589
+ }
2590
+ .fs-carousel.is-dragging .fs-carousel-inner {
2591
+ cursor: grabbing;
2592
+ transition: none;
2593
+ -webkit-user-select: none;
2594
+ user-select: none;
2595
+ }
2596
+ .fs-carousel:not(.is-static) .fs-carousel-inner {
2597
+ cursor: grab;
2598
+ touch-action: pan-y;
2599
+ }
2600
+ .fs-carousel-fade .fs-carousel-inner {
2601
+ display: block;
2602
+ transform: none;
2603
+ }
2604
+ .fs-carousel-fade .fs-carousel-item {
2605
+ position: absolute;
2606
+ inset: 0;
2607
+ opacity: 0;
2608
+ transition: opacity var(--fs-carousel-transition-duration) var(--fs-carousel-transition-easing);
2609
+ }
2610
+ .fs-carousel-fade .fs-carousel-item.is-active {
2611
+ position: relative;
2612
+ opacity: 1;
2613
+ }
2614
+ .fs-carousel-control-prev,
2615
+ .fs-carousel-control-next,
2616
+ .fs-carousel-control-toggle {
2617
+ position: absolute;
2618
+ top: var(--fs-carousel-control-inset);
2619
+ z-index: 2;
2620
+ display: inline-flex;
2621
+ align-items: center;
2622
+ justify-content: center;
2623
+ width: var(--fs-carousel-control-size);
2624
+ height: var(--fs-carousel-control-size);
2625
+ padding: 0;
2626
+ color: var(--fs-carousel-control-color);
2627
+ background-color: transparent;
2628
+ background-repeat: no-repeat;
2629
+ background-position: center;
2630
+ background-size: 18px 18px;
2631
+ border: 0;
2632
+ border-radius: 0;
2633
+ cursor: pointer;
2634
+ opacity: 0;
2635
+ transition: background-color var(--fs-transition-fast) var(--fs-ease-standard), opacity var(--fs-transition-fast) var(--fs-ease-standard), transform var(--fs-transition-fast) var(--fs-ease-standard);
2636
+ }
2637
+ .fs-carousel-control-prev,
2638
+ .fs-carousel-control-next {
2639
+ transform: none;
2640
+ }
2641
+ .fs-carousel-control-prev {
2642
+ left: var(--fs-carousel-control-inset);
2643
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M11 4 6 9l5 5'/%3E%3C/svg%3E");
2644
+ }
2645
+ .fs-carousel-control-next {
2646
+ left: calc(var(--fs-carousel-control-inset) + var(--fs-carousel-control-size) + var(--fs-carousel-control-gap));
2647
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m7 4 5 5-5 5'/%3E%3C/svg%3E");
2648
+ }
2649
+ .fs-carousel-control-toggle {
2650
+ left: calc(var(--fs-carousel-control-inset) + var(--fs-carousel-control-size) + var(--fs-carousel-control-gap));
2651
+ }
2652
+ .fs-carousel:has(.fs-carousel-control-toggle) .fs-carousel-control-next {
2653
+ left: calc(var(--fs-carousel-control-inset) + (var(--fs-carousel-control-size) + var(--fs-carousel-control-gap)) * 2);
2654
+ }
2655
+ .fs-carousel-control-toggle[aria-pressed=true] {
2656
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M7 5v8M11 5v8'/%3E%3C/svg%3E");
2657
+ }
2658
+ .fs-carousel-control-toggle[aria-pressed=false] {
2659
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' fill='%23ffffff'%3E%3Cpath d='m7 4 7 5-7 5z'/%3E%3C/svg%3E");
2660
+ }
2661
+ .fs-carousel.is-autoplay-paused .fs-carousel-control-toggle[aria-pressed=true] {
2662
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' fill='none' stroke='%23f0b40e' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M7 5v8M11 5v8'/%3E%3C/svg%3E");
2663
+ }
2664
+ .fs-carousel.is-autoplay-paused .fs-carousel-control-toggle[aria-pressed=false] {
2665
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' fill='%23f0b40e'%3E%3Cpath d='m7 4 7 5-7 5z'/%3E%3C/svg%3E");
2666
+ }
2667
+ .fs-carousel-control-prev:hover,
2668
+ .fs-carousel-control-next:hover,
2669
+ .fs-carousel-control-toggle:hover {
2670
+ background-color: var(--fs-carousel-control-bg-hover);
2671
+ }
2672
+ .fs-carousel-control-prev:active,
2673
+ .fs-carousel-control-next:active,
2674
+ .fs-carousel-control-toggle:active {
2675
+ transform: scale(0.94);
2676
+ }
2677
+ .fs-carousel-control-prev:focus-visible,
2678
+ .fs-carousel-control-next:focus-visible,
2679
+ .fs-carousel-control-toggle:focus-visible,
2680
+ .fs-carousel-indicators button:focus-visible {
2681
+ outline: var(--fs-focus-width) solid var(--fs-carousel-focus-color);
2682
+ outline-offset: var(--fs-focus-offset);
2683
+ border-color: var(--fs-carousel-focus-color);
2684
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--fs-carousel-focus-color) 22%, transparent);
2685
+ }
2686
+ .fs-carousel:hover .fs-carousel-control-prev,
2687
+ .fs-carousel:hover .fs-carousel-control-next,
2688
+ .fs-carousel:hover .fs-carousel-control-toggle,
2689
+ .fs-carousel:focus-within .fs-carousel-control-prev,
2690
+ .fs-carousel:focus-within .fs-carousel-control-next,
2691
+ .fs-carousel:focus-within .fs-carousel-control-toggle {
2692
+ opacity: 1;
2693
+ }
2694
+ .fs-carousel:hover::before,
2695
+ .fs-carousel:focus-within::before {
2696
+ opacity: 1;
2697
+ }
2698
+ .fs-carousel-indicators {
2699
+ position: absolute;
2700
+ right: 0;
2701
+ bottom: var(--fs-space-2);
2702
+ left: 0;
2703
+ z-index: 1;
2704
+ display: flex;
2705
+ justify-content: center;
2706
+ gap: 0;
2707
+ margin: 0;
2708
+ padding: 0;
2709
+ list-style: none;
2710
+ }
2711
+ .fs-carousel-indicators button {
2712
+ position: relative;
2713
+ display: grid;
2714
+ width: 28px;
2715
+ height: 32px;
2716
+ padding: 0;
2717
+ place-items: center;
2718
+ background: transparent;
2719
+ border: 0;
2720
+ cursor: pointer;
2721
+ }
2722
+ .fs-carousel-indicators button::before {
2723
+ width: var(--fs-carousel-indicator-size);
2724
+ height: var(--fs-carousel-indicator-size);
2725
+ content: "";
2726
+ background-color: var(--fs-carousel-indicator-color);
2727
+ border-radius: var(--fs-radius-lg);
2728
+ transition: width var(--fs-transition-fast) var(--fs-ease-standard), background-color var(--fs-transition-fast) var(--fs-ease-standard);
2729
+ }
2730
+ .fs-carousel-indicators button.is-active::before {
2731
+ width: var(--fs-carousel-indicator-active-width);
2732
+ background-color: var(--fs-carousel-indicator-active-color);
2733
+ }
2734
+ .fs-carousel-caption {
2735
+ position: absolute;
2736
+ right: 0;
2737
+ bottom: var(--fs-carousel-bottom-safe-area);
2738
+ left: 0;
2739
+ z-index: 1;
2740
+ box-sizing: border-box;
2741
+ max-width: min(100%, 42rem);
2742
+ max-block-size: calc(100% - var(--fs-carousel-top-safe-area) - var(--fs-carousel-bottom-safe-area));
2743
+ isolation: isolate;
2744
+ display: flex;
2745
+ flex-direction: column;
2746
+ align-items: flex-start;
2747
+ gap: var(--fs-space-2);
2748
+ padding: calc(var(--fs-space-4) + 20px) var(--fs-space-4) var(--fs-space-3);
2749
+ color: var(--fs-color-white);
2750
+ }
2751
+ .fs-carousel-caption::before {
2752
+ position: absolute;
2753
+ top: 0;
2754
+ right: 0;
2755
+ bottom: calc(var(--fs-carousel-bottom-safe-area) * -1);
2756
+ left: 0;
2757
+ z-index: -1;
2758
+ content: "";
2759
+ background: linear-gradient(to top, var(--fs-carousel-caption-scrim), transparent);
2760
+ }
2761
+ .fs-carousel-caption > * {
2762
+ margin: 0;
2763
+ }
2764
+ .fs-carousel-caption .fs-btn {
2765
+ --fs-btn-color: var(--fs-color-text-primary);
2766
+ --fs-btn-bg: var(--fs-color-white);
2767
+ --fs-btn-border-color: var(--fs-color-white);
2768
+ --fs-btn-hover-bg: var(--fs-color-subtle);
2769
+ --fs-btn-active-bg: var(--fs-color-border-default);
2770
+ }
2771
+ .fs-carousel-caption-side .fs-carousel-caption {
2772
+ top: var(--fs-carousel-top-safe-area);
2773
+ right: 0;
2774
+ bottom: 0;
2775
+ left: auto;
2776
+ width: min(42%, 28rem);
2777
+ max-width: none;
2778
+ max-block-size: none;
2779
+ padding: var(--fs-space-4) var(--fs-space-4) calc(var(--fs-carousel-bottom-safe-area) + var(--fs-space-2));
2780
+ background: rgba(15, 23, 42, 0.84);
2781
+ }
2782
+ .fs-carousel-caption-side .fs-carousel-caption-start {
2783
+ right: auto;
2784
+ left: 0;
2785
+ }
2786
+ .fs-carousel-caption-side .fs-carousel-caption::before,
2787
+ .fs-carousel-caption-stacked .fs-carousel-caption::before {
2788
+ display: none;
2789
+ }
2790
+ .fs-carousel-caption-stacked {
2791
+ --fs-carousel-bottom-safe-area: 0px;
2792
+ }
2793
+ .fs-carousel-caption-stacked .fs-carousel-caption {
2794
+ position: static;
2795
+ max-width: none;
2796
+ max-block-size: none;
2797
+ overflow: visible;
2798
+ padding: var(--fs-space-4);
2799
+ color: var(--fs-color-text-primary);
2800
+ background: var(--fs-color-bg-surface);
2801
+ }
2802
+ .fs-carousel-caption-stacked .fs-carousel-indicators {
2803
+ position: relative;
2804
+ bottom: auto;
2805
+ background: var(--fs-color-bg-surface);
2806
+ }
2807
+ .fs-carousel-counter {
2808
+ position: absolute;
2809
+ right: var(--fs-space-3);
2810
+ bottom: var(--fs-space-2);
2811
+ z-index: 2;
2812
+ color: var(--fs-color-white);
2813
+ font-size: 0.75rem;
2814
+ font-variant-numeric: tabular-nums;
2815
+ }
2816
+ .fs-carousel-progress {
2817
+ position: absolute;
2818
+ right: 0;
2819
+ bottom: 0;
2820
+ left: 0;
2821
+ z-index: 2;
2822
+ height: var(--fs-carousel-progress-height);
2823
+ overflow: hidden;
2824
+ background-color: rgba(255, 255, 255, 0.24);
2825
+ }
2826
+ .fs-carousel-progress > span {
2827
+ display: block;
2828
+ width: 100%;
2829
+ height: 100%;
2830
+ background-color: var(--fs-color-white);
2831
+ transform: scaleX(0);
2832
+ transform-origin: left;
2833
+ }
2834
+ .fs-carousel-progress.is-running > span {
2835
+ animation: fs-carousel-progress var(--fs-carousel-progress-duration, 5000ms) linear forwards;
2836
+ }
2837
+ .fs-carousel.is-two-slides.fs-carousel-hide-indicators-two .fs-carousel-indicators {
2838
+ display: none;
2839
+ }
2840
+ .fs-carousel-no-media .fs-carousel-item {
2841
+ min-block-size: 15rem;
2842
+ background-color: var(--fs-color-bg-surface);
2843
+ border: var(--fs-border-width) solid var(--fs-color-border-default);
2844
+ }
2845
+ .fs-carousel-no-media .fs-carousel-counter {
2846
+ color: var(--fs-color-text-muted);
2847
+ }
2848
+ .fs-carousel-no-media .fs-carousel-progress {
2849
+ background-color: var(--fs-color-border-default);
2850
+ }
2851
+ .fs-carousel-no-media .fs-carousel-progress > span {
2852
+ background-color: var(--fs-color-action-primary);
2853
+ }
2854
+ .fs-carousel-media-placeholder {
2855
+ display: flex;
2856
+ flex-direction: column;
2857
+ align-items: flex-start;
2858
+ justify-content: center;
2859
+ min-height: inherit;
2860
+ padding: calc(var(--fs-carousel-top-safe-area) + var(--fs-space-4)) var(--fs-space-4) calc(var(--fs-carousel-bottom-safe-area) + var(--fs-space-4));
2861
+ }
2862
+ .fs-carousel-media-placeholder > * {
2863
+ max-width: 36rem;
2864
+ margin: 0;
2865
+ }
2866
+ .fs-carousel-media-placeholder > * + * {
2867
+ margin-top: var(--fs-space-2);
2868
+ }
2869
+ .fs-carousel-media {
2870
+ min-block-size: 18rem;
2871
+ background-position: center;
2872
+ background-size: cover;
2873
+ }
2874
+ .fs-carousel.is-static .fs-carousel-control-prev,
2875
+ .fs-carousel.is-static .fs-carousel-control-next,
2876
+ .fs-carousel.is-static .fs-carousel-control-toggle,
2877
+ .fs-carousel.is-static .fs-carousel-indicators {
2878
+ display: none;
2879
+ }
2880
+ @media (max-width: 639px) {
2881
+ .fs-carousel {
2882
+ --fs-carousel-control-inset: var(--fs-space-1);
2883
+ }
2884
+ .fs-carousel-caption {
2885
+ padding: calc(var(--fs-space-3) + 20px) var(--fs-space-3) var(--fs-space-3);
2886
+ }
2887
+ .fs-carousel-caption-side .fs-carousel-caption {
2888
+ top: auto;
2889
+ bottom: var(--fs-carousel-bottom-safe-area);
2890
+ width: auto;
2891
+ max-block-size: calc(100% - var(--fs-carousel-top-safe-area) - var(--fs-carousel-bottom-safe-area));
2892
+ overflow: clip;
2893
+ align-items: flex-end;
2894
+ padding: calc(var(--fs-space-3) + 20px) var(--fs-space-3) calc(var(--fs-carousel-bottom-safe-area) + var(--fs-space-2));
2895
+ text-align: end;
2896
+ background: transparent;
2897
+ }
2898
+ .fs-carousel-caption-side .fs-carousel-caption-start {
2899
+ right: 0;
2900
+ left: 0;
2901
+ align-items: flex-start;
2902
+ text-align: start;
2903
+ }
2904
+ .fs-carousel-caption-side .fs-carousel-item::after {
2905
+ position: absolute;
2906
+ inset: 0;
2907
+ z-index: 0;
2908
+ pointer-events: none;
2909
+ content: "";
2910
+ background: linear-gradient(to top, var(--fs-carousel-caption-scrim) 0%, rgba(15, 23, 42, 0.52) 56%, transparent 100%);
2911
+ }
2912
+ }
2913
+ @media (prefers-reduced-motion: reduce) {
2914
+ .fs-carousel-inner,
2915
+ .fs-carousel-fade .fs-carousel-item,
2916
+ .fs-carousel-control-prev,
2917
+ .fs-carousel-control-next,
2918
+ .fs-carousel-control-toggle,
2919
+ .fs-carousel-indicators button::before,
2920
+ .fs-carousel-progress.is-running > span {
2921
+ transition: none;
2922
+ animation: none;
2923
+ transform: scaleX(1);
2924
+ }
2925
+ }
2926
+ @keyframes fs-carousel-progress {
2927
+ to {
2928
+ transform: scaleX(1);
2929
+ }
2930
+ }
2931
+ }
2932
+ @layer components {
2933
+ .fs-stepper-header {
2934
+ display: flex;
2935
+ margin: 0;
2936
+ padding: 0;
2937
+ list-style: none;
2938
+ }
2939
+ .fs-step {
2940
+ position: relative;
2941
+ display: flex;
2942
+ flex: 1 1 0;
2943
+ flex-direction: column;
2944
+ align-items: center;
2945
+ gap: 8px;
2946
+ text-align: center;
2947
+ }
2948
+ .fs-step-indicator {
2949
+ display: inline-flex;
2950
+ align-items: center;
2951
+ justify-content: center;
2952
+ width: 32px;
2953
+ height: 32px;
2954
+ color: var(--fs-color-muted);
2955
+ background-color: var(--fs-color-surface);
2956
+ border: 2px solid var(--fs-color-border);
2957
+ border-radius: 50%;
2958
+ font-size: 0.75rem;
2959
+ font-weight: 500;
2960
+ }
2961
+ .fs-step-label {
2962
+ color: var(--fs-color-muted);
2963
+ font-size: 0.75rem;
2964
+ font-weight: 500;
2965
+ }
2966
+ .fs-step-description {
2967
+ color: var(--fs-color-muted);
2968
+ font-size: 0.6875rem;
2969
+ }
2970
+ .fs-step:not(:last-child)::after {
2971
+ content: "";
2972
+ position: absolute;
2973
+ top: 15px;
2974
+ left: calc(50% + 20px);
2975
+ width: calc(100% - 40px);
2976
+ height: 2px;
2977
+ background-color: var(--fs-color-border);
2978
+ }
2979
+ .fs-step-active .fs-step-indicator {
2980
+ color: var(--fs-color-on-primary);
2981
+ background-color: var(--fs-color-primary);
2982
+ border-color: var(--fs-color-primary);
2983
+ }
2984
+ .fs-step-active .fs-step-label {
2985
+ color: var(--fs-color-text);
2986
+ }
2987
+ .fs-step-completed .fs-step-indicator {
2988
+ color: transparent;
2989
+ background-color: var(--fs-color-primary);
2990
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' stroke='%23ffffff' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8.5 6.5 12 13 4'/%3E%3C/svg%3E");
2991
+ background-repeat: no-repeat;
2992
+ background-position: center;
2993
+ border-color: var(--fs-color-primary);
2994
+ }
2995
+ .fs-step-completed .fs-step-label {
2996
+ color: var(--fs-color-text);
2997
+ }
2998
+ .fs-step-completed:not(:last-child)::after {
2999
+ background-color: var(--fs-color-primary);
3000
+ }
3001
+ .fs-step-error .fs-step-indicator {
3002
+ color: #ffffff;
3003
+ background-color: var(--fs-color-danger);
3004
+ border-color: var(--fs-color-danger);
3005
+ }
3006
+ .fs-step-error .fs-step-label {
3007
+ color: var(--fs-alert-danger-text);
3008
+ }
3009
+ .fs-step.fs-step-clickable {
3010
+ cursor: pointer;
3011
+ }
3012
+ .fs-step.fs-step-clickable:focus-visible {
3013
+ outline: 2px solid var(--fs-color-primary);
3014
+ outline-offset: 2px;
3015
+ border-radius: var(--fs-radius-sm);
3016
+ }
3017
+ .fs-stepper-vertical .fs-stepper-header {
3018
+ flex-direction: column;
3019
+ }
3020
+ .fs-stepper-vertical .fs-step {
3021
+ flex-direction: row;
3022
+ flex: 0 0 auto;
3023
+ align-items: flex-start;
3024
+ gap: 12px;
3025
+ min-height: 56px;
3026
+ text-align: left;
3027
+ }
3028
+ .fs-stepper-vertical .fs-step-content {
3029
+ display: flex;
3030
+ flex-direction: column;
3031
+ gap: 2px;
3032
+ padding-top: 5px;
3033
+ }
3034
+ .fs-stepper-vertical .fs-step:not(:last-child)::after {
3035
+ top: 34px;
3036
+ left: 15px;
3037
+ width: 2px;
3038
+ height: calc(100% - 22px);
3039
+ }
3040
+ .fs-step-panel {
3041
+ display: none;
3042
+ }
3043
+ .fs-step-panel.is-active {
3044
+ display: block;
3045
+ }
3046
+ .fs-stepper-content {
3047
+ margin-top: 20px;
3048
+ }
3049
+ .fs-stepper-actions {
3050
+ display: flex;
3051
+ justify-content: space-between;
3052
+ gap: 8px;
3053
+ margin-top: 20px;
3054
+ }
3055
+ }
3056
+ @layer components {
3057
+ .fs-segmented-control {
3058
+ display: inline-flex;
3059
+ border: 1px solid var(--fs-color-border);
3060
+ border-radius: var(--fs-radius-sm);
3061
+ overflow: hidden;
3062
+ }
3063
+ .fs-segmented-item {
3064
+ display: flex;
3065
+ }
3066
+ .fs-segmented-item:not(:first-child) .fs-segmented-label {
3067
+ border-left: 1px solid var(--fs-color-border);
3068
+ }
3069
+ .fs-segmented-input {
3070
+ position: absolute;
3071
+ width: 1px;
3072
+ height: 1px;
3073
+ padding: 0;
3074
+ margin: -1px;
3075
+ overflow: hidden;
3076
+ clip-path: inset(50%);
3077
+ white-space: nowrap;
3078
+ border: 0;
3079
+ }
3080
+ .fs-segmented-label {
3081
+ display: inline-flex;
3082
+ flex: 1;
3083
+ align-items: center;
3084
+ justify-content: center;
3085
+ min-height: 38px;
3086
+ padding: 0 12px;
3087
+ color: var(--fs-color-text);
3088
+ background-color: var(--fs-color-surface);
3089
+ font-size: 0.8125rem;
3090
+ font-weight: 500;
3091
+ text-align: center;
3092
+ white-space: nowrap;
3093
+ cursor: pointer;
3094
+ -webkit-user-select: none;
3095
+ user-select: none;
3096
+ transition: background-color 0.15s ease-in-out, color 0.15s ease-in-out;
3097
+ }
3098
+ .fs-segmented-label:hover {
3099
+ background-color: var(--fs-color-subtle);
3100
+ }
3101
+ .fs-segmented-input:checked + .fs-segmented-label {
3102
+ color: var(--fs-color-on-primary);
3103
+ background-color: var(--fs-color-primary);
3104
+ }
3105
+ .fs-segmented-input:focus-visible + .fs-segmented-label {
3106
+ position: relative;
3107
+ z-index: 1;
3108
+ outline: var(--fs-focus-width) solid var(--fs-color-primary);
3109
+ outline-offset: var(--fs-focus-offset);
3110
+ border-color: var(--fs-color-primary);
3111
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--fs-color-primary) 22%, transparent);
3112
+ }
3113
+ .fs-segmented-input:disabled + .fs-segmented-label {
3114
+ opacity: 0.4;
3115
+ pointer-events: none;
3116
+ }
3117
+ .fs-segmented-control-sm .fs-segmented-label {
3118
+ min-height: 30px;
3119
+ padding: 0 8px;
3120
+ font-size: 0.75rem;
3121
+ }
3122
+ .fs-segmented-control-lg .fs-segmented-label {
3123
+ min-height: 46px;
3124
+ padding: 0 16px;
3125
+ font-size: 1rem;
3126
+ }
3127
+ }
3128
+ @layer components {
3129
+ .fs-skeleton {
3130
+ display: block;
3131
+ background-color: var(--fs-color-subtle);
3132
+ border-radius: var(--fs-radius-sm);
3133
+ animation: fokus-skeleton-pulse 1.5s ease-in-out infinite;
3134
+ }
3135
+ .fs-skeleton-text {
3136
+ width: 100%;
3137
+ height: 1em;
3138
+ }
3139
+ .fs-skeleton-text:not(:last-child) {
3140
+ margin-bottom: 0.5em;
3141
+ }
3142
+ .fs-skeleton-text:last-child {
3143
+ width: 80%;
3144
+ }
3145
+ .fs-skeleton-circle {
3146
+ flex-shrink: 0;
3147
+ border-radius: 50%;
3148
+ }
3149
+ .fs-skeleton-rect {
3150
+ border-radius: var(--fs-radius-md);
3151
+ }
3152
+ .fs-skeleton-card {
3153
+ display: grid;
3154
+ gap: var(--fs-space-3);
3155
+ min-height: 10rem;
3156
+ padding: var(--fs-space-4);
3157
+ border-radius: var(--fs-radius-md);
3158
+ }
3159
+ .fs-skeleton-table {
3160
+ height: 1.25rem;
3161
+ margin-block-end: var(--fs-space-2);
3162
+ }
3163
+ .fs-skeleton-avatar {
3164
+ width: 2.5rem;
3165
+ height: 2.5rem;
3166
+ border-radius: 50%;
3167
+ }
3168
+ @keyframes fokus-skeleton-pulse {
3169
+ 0%, 100% {
3170
+ opacity: 1;
3171
+ }
3172
+ 50% {
3173
+ opacity: 0.5;
3174
+ }
3175
+ }
3176
+ .fs-skeleton-wave {
3177
+ position: relative;
3178
+ overflow: hidden;
3179
+ animation: none;
3180
+ }
3181
+ .fs-skeleton-wave::after {
3182
+ position: absolute;
3183
+ inset: 0;
3184
+ content: "";
3185
+ background-image: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent);
3186
+ transform: translateX(-100%);
3187
+ animation: fokus-skeleton-wave 1.6s linear infinite;
3188
+ }
3189
+ @keyframes fokus-skeleton-wave {
3190
+ 100% {
3191
+ transform: translateX(100%);
3192
+ }
3193
+ }
3194
+ @media (prefers-reduced-motion: reduce) {
3195
+ .fs-skeleton {
3196
+ animation: none;
3197
+ }
3198
+ .fs-skeleton-wave::after {
3199
+ animation: none;
3200
+ }
3201
+ }
3202
+ }
3203
+ @layer components {
3204
+ .fs-timeline {
3205
+ display: flex;
3206
+ flex-direction: column;
3207
+ margin: 0;
3208
+ padding: 0;
3209
+ list-style: none;
3210
+ }
3211
+ .fs-timeline-item {
3212
+ position: relative;
3213
+ display: flex;
3214
+ gap: 12px;
3215
+ padding-bottom: 24px;
3216
+ }
3217
+ .fs-timeline-item:last-child {
3218
+ padding-bottom: 0;
3219
+ }
3220
+ .fs-timeline-marker {
3221
+ flex-shrink: 0;
3222
+ width: 16px;
3223
+ height: 16px;
3224
+ margin-top: 3px;
3225
+ background-color: var(--fs-color-surface);
3226
+ background-repeat: no-repeat;
3227
+ background-position: center;
3228
+ border: 2px solid var(--fs-color-border);
3229
+ border-radius: 50%;
3230
+ }
3231
+ .fs-timeline-item:not(:last-child)::before {
3232
+ content: "";
3233
+ position: absolute;
3234
+ top: 22px;
3235
+ left: 7px;
3236
+ width: 2px;
3237
+ height: calc(100% - 22px);
3238
+ background-color: var(--fs-color-border);
3239
+ }
3240
+ .fs-timeline-content {
3241
+ flex: 1;
3242
+ padding-top: 1px;
3243
+ }
3244
+ .fs-timeline-title {
3245
+ margin: 0;
3246
+ color: var(--fs-color-text);
3247
+ font-size: 0.8125rem;
3248
+ font-weight: 500;
3249
+ }
3250
+ .fs-timeline-text {
3251
+ margin: 4px 0 0;
3252
+ color: var(--fs-color-muted);
3253
+ font-size: 0.75rem;
3254
+ }
3255
+ .fs-timeline-time {
3256
+ display: block;
3257
+ margin-top: 2px;
3258
+ color: var(--fs-color-muted);
3259
+ font-size: 0.6875rem;
3260
+ }
3261
+ .fs-timeline-active .fs-timeline-marker {
3262
+ background-color: var(--fs-color-primary);
3263
+ border-color: var(--fs-color-primary);
3264
+ }
3265
+ .fs-timeline-completed .fs-timeline-marker {
3266
+ background-color: var(--fs-color-success);
3267
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' fill='none' stroke='%23ffffff' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 5.5 4 8l4-6'/%3E%3C/svg%3E");
3268
+ border-color: var(--fs-color-success);
3269
+ }
3270
+ .fs-timeline-completed:not(:last-child)::before {
3271
+ background-color: var(--fs-color-success);
3272
+ }
3273
+ .fs-timeline-failed .fs-timeline-marker {
3274
+ background-color: var(--fs-color-danger);
3275
+ border-color: var(--fs-color-danger);
3276
+ }
3277
+ .fs-timeline-failed .fs-timeline-title {
3278
+ color: var(--fs-alert-danger-text);
3279
+ }
3280
+ .fs-timeline-horizontal {
3281
+ flex-direction: row;
3282
+ }
3283
+ .fs-timeline-horizontal .fs-timeline-item {
3284
+ flex: 1 1 0;
3285
+ flex-direction: column;
3286
+ align-items: center;
3287
+ gap: 8px;
3288
+ padding-bottom: 0;
3289
+ text-align: center;
3290
+ }
3291
+ .fs-timeline-horizontal .fs-timeline-marker {
3292
+ margin-top: 0;
3293
+ }
3294
+ .fs-timeline-horizontal .fs-timeline-item:not(:last-child)::before {
3295
+ top: 7px;
3296
+ left: calc(50% + 15px);
3297
+ width: calc(100% - 30px);
3298
+ height: 2px;
3299
+ }
3300
+ .fs-timeline-horizontal .fs-timeline-content {
3301
+ padding-top: 0;
3302
+ }
3303
+ }
3304
+ @layer components {
3305
+ .fs-collapse {
3306
+ overflow: hidden;
3307
+ }
3308
+ }
3309
+ @layer components {
3310
+ [data-fs=notification-center] {
3311
+ position: relative;
3312
+ }
3313
+ .fs-notification-badge {
3314
+ position: absolute;
3315
+ top: -6px;
3316
+ right: -6px;
3317
+ display: inline-flex;
3318
+ align-items: center;
3319
+ justify-content: center;
3320
+ min-width: 18px;
3321
+ height: 18px;
3322
+ padding: 0 5px;
3323
+ border-radius: 999px;
3324
+ color: #ffffff;
3325
+ background-color: var(--fs-color-danger);
3326
+ font-size: 0.65rem;
3327
+ font-weight: 500;
3328
+ line-height: 1;
3329
+ }
3330
+ .fs-notification-badge[hidden] {
3331
+ display: none;
3332
+ }
3333
+ .fs-notification-center {
3334
+ position: absolute;
3335
+ display: none;
3336
+ flex-direction: column;
3337
+ width: min(320px, 100vw - 2 * var(--fs-space-3));
3338
+ max-height: 420px;
3339
+ border: 1px solid var(--fs-color-border);
3340
+ border-radius: var(--fs-radius-md);
3341
+ color: var(--fs-color-text);
3342
+ background-color: var(--fs-color-surface);
3343
+ box-shadow: var(--fs-shadow-md);
3344
+ z-index: var(--fs-z-notification);
3345
+ }
3346
+ .fs-notification-center.is-open {
3347
+ display: flex;
3348
+ }
3349
+ .fs-notification-center-header {
3350
+ display: flex;
3351
+ align-items: center;
3352
+ justify-content: space-between;
3353
+ padding: 10px 14px;
3354
+ border-bottom: 1px solid var(--fs-color-border);
3355
+ }
3356
+ .fs-notification-center-title {
3357
+ font-size: 0.75rem;
3358
+ font-weight: 500;
3359
+ }
3360
+ .fs-notification-list {
3361
+ margin: 0;
3362
+ padding: 0;
3363
+ overflow-y: auto;
3364
+ list-style: none;
3365
+ }
3366
+ .fs-notification-item {
3367
+ display: flex;
3368
+ gap: 10px;
3369
+ align-items: flex-start;
3370
+ padding: 10px 14px;
3371
+ border-left: 3px solid transparent;
3372
+ border-bottom: 1px solid var(--fs-color-border);
3373
+ }
3374
+ .fs-notification-item:last-child {
3375
+ border-bottom: none;
3376
+ }
3377
+ .fs-notification-item-unread {
3378
+ background-color: var(--fs-color-subtle);
3379
+ }
3380
+ .fs-notification-item-primary {
3381
+ border-left-color: var(--fs-color-primary);
3382
+ }
3383
+ .fs-notification-item-secondary {
3384
+ border-left-color: var(--fs-color-secondary);
3385
+ }
3386
+ .fs-notification-item-success {
3387
+ border-left-color: var(--fs-color-success);
3388
+ }
3389
+ .fs-notification-item-warning {
3390
+ border-left-color: var(--fs-color-warning);
3391
+ }
3392
+ .fs-notification-item-danger {
3393
+ border-left-color: var(--fs-color-danger);
3394
+ }
3395
+ .fs-notification-item-info {
3396
+ border-left-color: var(--fs-color-info);
3397
+ }
3398
+ .fs-notification-item-content {
3399
+ flex: 1;
3400
+ min-width: 0;
3401
+ }
3402
+ .fs-notification-item-title {
3403
+ margin: 0;
3404
+ font-size: 0.75rem;
3405
+ font-weight: 500;
3406
+ }
3407
+ .fs-notification-item-text {
3408
+ margin: 2px 0 0;
3409
+ color: var(--fs-color-muted);
3410
+ font-size: 0.75rem;
3411
+ }
3412
+ .fs-notification-item-time {
3413
+ display: block;
3414
+ margin-top: 4px;
3415
+ color: var(--fs-color-muted);
3416
+ font-size: 0.6875rem;
3417
+ }
3418
+ .fs-notification-item .fs-btn-close {
3419
+ flex-shrink: 0;
3420
+ width: 16px;
3421
+ height: 16px;
3422
+ }
3423
+ .fs-notification-empty {
3424
+ padding: 24px 14px;
3425
+ color: var(--fs-color-muted);
3426
+ font-size: 0.75rem;
3427
+ text-align: center;
3428
+ }
3429
+ .fs-notification-empty[hidden] {
3430
+ display: none;
3431
+ }
3432
+ }
3433
+ @layer components {
3434
+ .fs-dropdown-submenu {
3435
+ position: relative;
3436
+ }
3437
+ .fs-dropdown-item-submenu {
3438
+ justify-content: space-between;
3439
+ }
3440
+ .fs-dropdown-item-submenu::after {
3441
+ margin-left: 8px;
3442
+ content: "";
3443
+ border-top: 5px solid transparent;
3444
+ border-bottom: 5px solid transparent;
3445
+ border-left: 5px solid currentcolor;
3446
+ }
3447
+ .fs-dropdown-submenu > .fs-dropdown-menu {
3448
+ top: -7px;
3449
+ left: 100%;
3450
+ margin: 0;
3451
+ }
3452
+ .fs-dropdown-submenu:hover > .fs-dropdown-menu,
3453
+ .fs-dropdown-submenu > .fs-dropdown-menu.is-open {
3454
+ display: block;
3455
+ }
3456
+ .fs-dropdown-submenu-left > .fs-dropdown-menu {
3457
+ right: 100%;
3458
+ left: auto;
3459
+ }
3460
+ }
3461
+ @layer components {
3462
+ .fs-tile {
3463
+ position: relative;
3464
+ display: flex;
3465
+ align-items: center;
3466
+ gap: 12px;
3467
+ padding: 12px;
3468
+ border: 1px solid var(--fs-color-border);
3469
+ border-radius: var(--fs-radius-md);
3470
+ background-color: var(--fs-color-surface);
3471
+ }
3472
+ .fs-tile-icon {
3473
+ display: flex;
3474
+ flex-shrink: 0;
3475
+ align-items: center;
3476
+ justify-content: center;
3477
+ width: 40px;
3478
+ height: 40px;
3479
+ border-radius: var(--fs-radius-sm);
3480
+ color: var(--fs-color-text);
3481
+ background-color: var(--fs-color-subtle);
3482
+ font-size: 1rem;
3483
+ }
3484
+ .fs-tile-body {
3485
+ flex: 1 1 auto;
3486
+ min-width: 0;
3487
+ }
3488
+ .fs-tile-title {
3489
+ margin: 0;
3490
+ color: var(--fs-color-text);
3491
+ font-size: 0.8125rem;
3492
+ font-weight: 500;
3493
+ overflow: hidden;
3494
+ text-overflow: ellipsis;
3495
+ white-space: nowrap;
3496
+ }
3497
+ .fs-tile-subtitle {
3498
+ margin: 0;
3499
+ color: var(--fs-color-muted);
3500
+ font-size: 0.75rem;
3501
+ overflow: hidden;
3502
+ text-overflow: ellipsis;
3503
+ white-space: nowrap;
3504
+ }
3505
+ .fs-tile-actions {
3506
+ display: flex;
3507
+ flex-shrink: 0;
3508
+ align-items: center;
3509
+ gap: 8px;
3510
+ }
3511
+ .fs-tile-actions-bottom {
3512
+ flex-wrap: wrap;
3513
+ }
3514
+ .fs-tile-actions-bottom .fs-tile-actions {
3515
+ flex-basis: 100%;
3516
+ justify-content: flex-end;
3517
+ margin-top: 4px;
3518
+ }
3519
+ .fs-tile-clickable {
3520
+ transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
3521
+ }
3522
+ .fs-tile-clickable:hover,
3523
+ .fs-tile-clickable:focus-within {
3524
+ border-color: var(--fs-color-primary);
3525
+ box-shadow: var(--fs-shadow-sm);
3526
+ }
3527
+ .fs-tile-sm {
3528
+ gap: 8px;
3529
+ padding: 8px;
3530
+ }
3531
+ .fs-tile-sm .fs-tile-icon {
3532
+ width: 32px;
3533
+ height: 32px;
3534
+ font-size: 0.8125rem;
3535
+ }
3536
+ .fs-tile-sm .fs-tile-title {
3537
+ font-size: 0.75rem;
3538
+ }
3539
+ .fs-tile-sm .fs-tile-subtitle {
3540
+ font-size: 0.6875rem;
3541
+ }
3542
+ .fs-tile-lg {
3543
+ gap: 16px;
3544
+ padding: 16px;
3545
+ }
3546
+ .fs-tile-lg .fs-tile-icon {
3547
+ width: 48px;
3548
+ height: 48px;
3549
+ font-size: 1.25rem;
3550
+ }
3551
+ .fs-tile-lg .fs-tile-title {
3552
+ font-size: 1rem;
3553
+ }
3554
+ }
3555
+ /* stylelint-disable declaration-block-single-line-max-declarations */
3556
+ @layer components {
3557
+ .fs-avatar {
3558
+ display: inline-flex;
3559
+ flex: 0 0 auto;
3560
+ align-items: center;
3561
+ justify-content: center;
3562
+ width: 2.5rem;
3563
+ height: 2.5rem;
3564
+ overflow: hidden;
3565
+ color: var(--fs-color-on-primary);
3566
+ font-weight: 600;
3567
+ background: var(--fs-color-primary);
3568
+ border-radius: 50%;
3569
+ object-fit: cover;
3570
+ }
3571
+ .fs-avatar-sm {
3572
+ width: 2rem;
3573
+ height: 2rem;
3574
+ font-size: 0.8125rem;
3575
+ }
3576
+ .fs-avatar-lg {
3577
+ width: 3.5rem;
3578
+ height: 3.5rem;
3579
+ font-size: 1.25rem;
3580
+ }
3581
+ .fs-avatar-square {
3582
+ border-radius: var(--fs-radius-md);
3583
+ }
3584
+ .fs-avatar img {
3585
+ width: 100%;
3586
+ height: 100%;
3587
+ object-fit: cover;
3588
+ }
3589
+ }
3590
+ /* stylelint-disable declaration-block-single-line-max-declarations */
3591
+ @layer components {
3592
+ .fs-button-group {
3593
+ display: inline-flex;
3594
+ vertical-align: middle;
3595
+ }
3596
+ .fs-button-group > .fs-btn {
3597
+ border-radius: 0;
3598
+ }
3599
+ .fs-button-group > .fs-btn:first-child {
3600
+ border-start-start-radius: var(--fs-radius-sm);
3601
+ border-end-start-radius: var(--fs-radius-sm);
3602
+ }
3603
+ .fs-button-group > .fs-btn:last-child {
3604
+ border-start-end-radius: var(--fs-radius-sm);
3605
+ border-end-end-radius: var(--fs-radius-sm);
3606
+ }
3607
+ .fs-button-group > .fs-btn + .fs-btn {
3608
+ margin-inline-start: -1px;
3609
+ }
3610
+ .fs-button-group-vertical {
3611
+ flex-direction: column;
3612
+ align-items: flex-start;
3613
+ }
3614
+ .fs-button-group-vertical > .fs-btn {
3615
+ width: 100%;
3616
+ }
3617
+ }
3618
+ /* stylelint-disable declaration-block-single-line-max-declarations */
3619
+ @layer components {
3620
+ .fs-close {
3621
+ display: inline-grid;
3622
+ width: 2rem;
3623
+ height: 2rem;
3624
+ place-items: center;
3625
+ padding: 0;
3626
+ color: currentcolor;
3627
+ font-size: 1.5rem;
3628
+ line-height: 1;
3629
+ background: transparent;
3630
+ border: 0;
3631
+ border-radius: 50%;
3632
+ cursor: pointer;
3633
+ opacity: 0.72;
3634
+ }
3635
+ .fs-close::before {
3636
+ content: "×";
3637
+ }
3638
+ .fs-close:hover {
3639
+ opacity: 1;
3640
+ background: var(--fs-color-subtle);
3641
+ }
3642
+ .fs-close:focus-visible {
3643
+ outline: var(--fs-focus-width) solid var(--fs-focus-color);
3644
+ outline-offset: var(--fs-focus-offset);
3645
+ }
3646
+ }
3647
+ /* stylelint-disable declaration-block-single-line-max-declarations */
3648
+ @layer components {
3649
+ .fs-list-group {
3650
+ display: flex;
3651
+ flex-direction: column;
3652
+ padding: 0;
3653
+ margin: 0;
3654
+ list-style: none;
3655
+ border: 1px solid var(--fs-color-border);
3656
+ border-radius: var(--fs-radius-md);
3657
+ }
3658
+ .fs-list-group-item {
3659
+ position: relative;
3660
+ display: block;
3661
+ padding: var(--fs-space-3) var(--fs-space-4);
3662
+ color: var(--fs-color-text);
3663
+ background: var(--fs-color-surface);
3664
+ border-block-end: 1px solid var(--fs-color-border);
3665
+ }
3666
+ .fs-list-group-item:last-child {
3667
+ border-block-end: 0;
3668
+ }
3669
+ button.fs-list-group-item, a.fs-list-group-item {
3670
+ width: 100%;
3671
+ text-align: start;
3672
+ cursor: pointer;
3673
+ }
3674
+ .fs-list-group-item:hover {
3675
+ background: var(--fs-color-subtle);
3676
+ }
3677
+ .fs-list-group-item.is-active {
3678
+ color: var(--fs-color-on-primary);
3679
+ background: var(--fs-color-primary);
3680
+ }
3681
+ }
3682
+ @layer components {
3683
+ .fs-code {
3684
+ padding: 0.125em 0.35em;
3685
+ color: var(--fs-color-danger);
3686
+ background: var(--fs-color-subtle);
3687
+ border-radius: var(--fs-radius-sm);
3688
+ }
3689
+ .fs-pre {
3690
+ display: block;
3691
+ max-width: 100%;
3692
+ padding: var(--fs-space-4);
3693
+ overflow: auto;
3694
+ color: var(--fs-color-text);
3695
+ background: var(--fs-color-subtle);
3696
+ border: 1px solid var(--fs-color-border);
3697
+ border-radius: var(--fs-radius-md);
3698
+ }
3699
+ }
3700
+ /* stylelint-disable declaration-block-single-line-max-declarations */
3701
+ @layer components {
3702
+ .fs-ratio {
3703
+ position: relative;
3704
+ width: 100%;
3705
+ }
3706
+ .fs-ratio::before {
3707
+ display: block;
3708
+ padding-top: var(--fs-ratio, 56.25%);
3709
+ content: "";
3710
+ }
3711
+ .fs-ratio > * {
3712
+ position: absolute;
3713
+ inset: 0;
3714
+ width: 100%;
3715
+ height: 100%;
3716
+ object-fit: cover;
3717
+ }
3718
+ .fs-ratio-1x1 {
3719
+ --fs-ratio: 100%;
3720
+ }
3721
+ .fs-ratio-4x3 {
3722
+ --fs-ratio: 75%;
3723
+ }
3724
+ .fs-ratio-16x9 {
3725
+ --fs-ratio: 56.25%;
3726
+ }
3727
+ .fs-ratio-21x9 {
3728
+ --fs-ratio: 42.857%;
3729
+ }
3730
+ }
3731
+ /* stylelint-disable declaration-block-single-line-max-declarations */
3732
+ @layer components {
3733
+ .fs-icon-link {
3734
+ display: inline-flex;
3735
+ gap: 0.5em;
3736
+ align-items: center;
3737
+ }
3738
+ .fs-icon-link svg {
3739
+ width: 1em;
3740
+ height: 1em;
3741
+ flex: 0 0 auto;
3742
+ }
3743
+ .fs-icon-link:hover svg {
3744
+ transform: translateX(0.15em);
3745
+ }
3746
+ @media (prefers-reduced-motion: reduce) {
3747
+ .fs-icon-link svg {
3748
+ transition: none;
3749
+ }
3750
+ }
3751
+ }
3752
+ /* stylelint-disable declaration-block-single-line-max-declarations */
3753
+ @layer components {
3754
+ .fs-placeholder {
3755
+ display: inline-block;
3756
+ min-height: 1em;
3757
+ vertical-align: middle;
3758
+ cursor: wait;
3759
+ background: currentcolor;
3760
+ opacity: 0.18;
3761
+ }
3762
+ .fs-placeholder-glow {
3763
+ animation: fs-placeholder-glow 1.5s ease-in-out infinite;
3764
+ }
3765
+ .fs-placeholder-wave {
3766
+ background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.35), transparent), currentcolor;
3767
+ background-size: 200% 100%;
3768
+ animation: fs-placeholder-wave 1.5s linear infinite;
3769
+ }
3770
+ .fs-placeholder-btn {
3771
+ width: 6rem;
3772
+ height: 2.5rem;
3773
+ border-radius: var(--fs-radius-sm);
3774
+ }
3775
+ @keyframes fs-placeholder-glow {
3776
+ 50% {
3777
+ opacity: 0.08;
3778
+ }
3779
+ }
3780
+ @keyframes fs-placeholder-wave {
3781
+ to {
3782
+ background-position: -200% 0;
3783
+ }
3784
+ }
3785
+ @media (prefers-reduced-motion: reduce) {
3786
+ .fs-placeholder-glow, .fs-placeholder-wave {
3787
+ animation: none;
3788
+ }
3789
+ }
3790
+ }
3791
+ /* stylelint-disable declaration-block-single-line-max-declarations */
3792
+ @layer components {
3793
+ .fs-progress {
3794
+ display: flex;
3795
+ height: 0.75rem;
3796
+ overflow: hidden;
3797
+ background: var(--fs-color-subtle);
3798
+ border-radius: 999px;
3799
+ }
3800
+ .fs-progress-bar {
3801
+ display: flex;
3802
+ align-items: center;
3803
+ justify-content: center;
3804
+ color: var(--fs-color-on-primary);
3805
+ background: var(--fs-color-primary);
3806
+ transition: width var(--fs-motion-duration-normal) var(--fs-motion-ease-standard);
3807
+ }
3808
+ .fs-progress-bar-striped {
3809
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%);
3810
+ background-size: 1rem 1rem;
3811
+ }
3812
+ @media (prefers-reduced-motion: reduce) {
3813
+ .fs-progress-bar {
3814
+ transition: none;
3815
+ }
3816
+ }
3817
+ }
3818
+ /* stylelint-disable declaration-block-single-line-max-declarations */
3819
+ @layer components {
3820
+ [data-fs-scrollspy] .is-active {
3821
+ color: var(--fs-color-primary);
3822
+ font-weight: 600;
3823
+ }
3824
+ .fs-scrollspy-nav {
3825
+ position: sticky;
3826
+ inset-block-start: var(--fs-space-4);
3827
+ }
3828
+ }
3829
+ @layer tokens {
3830
+ [data-fs-brand=violet] {
3831
+ --fs-color-primary: #6d28d9;
3832
+ --fs-alert-primary-bg: rgb(229.8834406263, 225.8717327657, 252.5458384302);
3833
+ --fs-alert-primary-text: rgb(37.7006407433, 8.7385189481, 83.109047167);
3834
+ --fs-feedback-primary-bg: rgb(229.8834406263, 225.8717327657, 252.5458384302);
3835
+ }
3836
+ [data-fs-brand=violet][data-theme=dark],
3837
+ [data-theme=dark] [data-fs-brand=violet] {
3838
+ --fs-color-primary: rgb(114.6495158739, 57.1165361442, 219.9746158745);
3839
+ --fs-alert-primary-bg: rgb(31.4819726714, 47.0564006856, 82.6607876597);
3840
+ --fs-alert-primary-text: rgb(167.4962913963, 147.746130571, 240.0249534535);
3841
+ --fs-feedback-primary-bg: rgb(31.4819726714, 47.0564006856, 82.6607876597);
3842
+ }
3843
+ @supports (color: oklch(0% 0 0deg)) {
3844
+ [data-fs-brand=violet] {
3845
+ --fs-color-primary: oklch(49.0666497236% 0.2412317343 292.5809393311deg);
3846
+ --fs-alert-primary-bg: oklch(92.3599974585% 0.0361847601 292.5809393311deg);
3847
+ --fs-alert-primary-text: oklch(24.5333248618% 0.1206158672 292.5809393311deg);
3848
+ --fs-feedback-primary-bg: oklch(92.3599974585% 0.0361847601 292.5809393311deg);
3849
+ }
3850
+ [data-fs-brand=violet][data-theme=dark],
3851
+ [data-theme=dark] [data-fs-brand=violet] {
3852
+ --fs-color-primary: oklch(51.6133172374% 0.2291701476 292.5809393311deg);
3853
+ --fs-alert-primary-bg: oklch(31.117092664% 0.067505667 264.9134801836deg);
3854
+ --fs-alert-primary-text: oklch(71.986657348% 0.1326774539 292.5809393311deg);
3855
+ --fs-feedback-primary-bg: oklch(31.117092664% 0.067505667 264.9134801836deg);
3856
+ }
3857
+ }
3858
+ [data-fs-brand=corporate] {
3859
+ --fs-color-primary: #1d4e89;
3860
+ --fs-alert-primary-bg: rgb(219.2237954153, 227.2186121739, 237.6990809983);
3861
+ --fs-alert-primary-text: rgb(5.0598830676, 24.6667463069, 49.4731905568);
3862
+ --fs-feedback-primary-bg: rgb(219.2237954153, 227.2186121739, 237.6990809983);
3863
+ }
3864
+ [data-fs-brand=corporate][data-theme=dark],
3865
+ [data-theme=dark] [data-fs-brand=corporate] {
3866
+ --fs-color-primary: rgb(40.8593466225, 86.5224214637, 143.0926598584);
3867
+ --fs-alert-primary-bg: rgb(31.2586947979, 46.3186220749, 70.1321749545);
3868
+ --fs-alert-primary-text: rgb(127.9940036809, 155.4045223568, 190.9765129762);
3869
+ --fs-feedback-primary-bg: rgb(31.2586947979, 46.3186220749, 70.1321749545);
3870
+ }
3871
+ [data-fs-brand=vibrant] {
3872
+ --fs-color-primary: #f2542d;
3873
+ --fs-alert-primary-bg: rgb(255, 231.3637253432, 224.6456124112);
3874
+ --fs-alert-primary-text: rgb(93.6202523577, 27.1894355526, 10.7919554552);
3875
+ --fs-feedback-primary-bg: rgb(255, 231.3637253432, 224.6456124112);
3876
+ }
3877
+ [data-fs-brand=vibrant][data-theme=dark],
3878
+ [data-theme=dark] [data-fs-brand=vibrant] {
3879
+ --fs-color-primary: rgb(244.0763687777, 94.774513804, 58.7750761343);
3880
+ --fs-alert-primary-bg: rgb(48.9487024594, 50.7990197305, 85.9119190034);
3881
+ --fs-alert-primary-text: rgb(255, 166.953251087, 144.6609410048);
3882
+ --fs-feedback-primary-bg: rgb(48.9487024594, 50.7990197305, 85.9119190034);
3883
+ }
3884
+ @supports (color: oklch(0% 0 0deg)) {
3885
+ [data-fs-brand=corporate] {
3886
+ --fs-color-primary: oklch(42.3377990386% 0.1112359961 255.1073474093deg);
3887
+ --fs-alert-primary-bg: oklch(91.3506698558% 0.0166853994 255.1073474093deg);
3888
+ --fs-alert-primary-text: oklch(21.1688995193% 0.055617998 255.1073474093deg);
3889
+ --fs-feedback-primary-bg: oklch(91.3506698558% 0.0166853994 255.1073474093deg);
3890
+ }
3891
+ [data-fs-brand=corporate][data-theme=dark],
3892
+ [data-theme=dark] [data-fs-brand=corporate] {
3893
+ --fs-color-primary: oklch(45.2209090867% 0.1056741963 255.1073474093deg);
3894
+ --fs-alert-primary-bg: oklch(30.1077650613% 0.0480063062 259.2924413953deg);
3895
+ --fs-alert-primary-text: oklch(68.2857894712% 0.0611797979 255.1073474093deg);
3896
+ --fs-feedback-primary-bg: oklch(30.1077650613% 0.0480063062 259.2924413953deg);
3897
+ }
3898
+ [data-fs-brand=vibrant] {
3899
+ --fs-color-primary: oklch(65.5786741493% 0.2007639921 34.7814711243deg);
3900
+ --fs-alert-primary-bg: oklch(94.8368011224% 0.0301145988 34.7814711243deg);
3901
+ --fs-alert-primary-text: oklch(32.7893370747% 0.1003819961 34.7814711243deg);
3902
+ --fs-feedback-primary-bg: oklch(94.8368011224% 0.0301145988 34.7814711243deg);
3903
+ }
3904
+ [data-fs-brand=vibrant][data-theme=dark],
3905
+ [data-theme=dark] [data-fs-brand=vibrant] {
3906
+ --fs-color-primary: oklch(67.2997404419% 0.1907257925 34.7814711243deg);
3907
+ --fs-alert-primary-bg: oklch(33.5938963279% 0.0614355056 280.2435599526deg);
3908
+ --fs-alert-primary-text: oklch(81.0682707821% 0.1104201957 34.7814711243deg);
3909
+ --fs-feedback-primary-bg: oklch(33.5938963279% 0.0614355056 280.2435599526deg);
3910
+ }
3911
+ }
3912
+ }
3913
+ @layer overrides {
3914
+ [data-fs-brand=vibrant] .fs-btn-primary,
3915
+ [data-fs-brand=vibrant] .fs-badge-primary {
3916
+ --fs-btn-color: #000000;
3917
+ --fs-badge-color: #000000;
3918
+ }
3919
+ [data-fs-brand=vibrant] .fs-check {
3920
+ --fs-check-mark: #000000;
3921
+ }
3922
+ }
3923
+ @layer tokens {
3924
+ [data-theme=dark],
3925
+ [data-fs-theme=dark] {
3926
+ --fs-color-text: #f1f3f4;
3927
+ --fs-color-muted: #bdc1c6;
3928
+ --fs-color-border: #3c4043;
3929
+ --fs-color-surface: #202124;
3930
+ --fs-color-subtle: #2b2c2f;
3931
+ --fs-color-bg-surface: var(--fs-color-surface);
3932
+ --fs-color-bg-subtle: var(--fs-color-subtle);
3933
+ --fs-color-surface-raised: var(--fs-color-surface);
3934
+ --fs-color-surface-interactive: var(--fs-color-subtle);
3935
+ --fs-color-text-primary: var(--fs-color-text);
3936
+ --fs-color-text-muted: var(--fs-color-muted);
3937
+ --fs-color-border-default: var(--fs-color-border);
3938
+ --fs-color-focus: var(--fs-color-primary);
3939
+ --fs-color-action-primary: var(--fs-color-primary);
3940
+ --fs-color-action-danger: var(--fs-color-danger);
3941
+ --fs-shadow-sm: 0 1px 3px rgb(0 0 0 / 50%), 0 1px 2px rgb(0 0 0 / 40%);
3942
+ --fs-shadow-md: 0 6px 12px rgb(0 0 0 / 55%), 0 3px 6px rgb(0 0 0 / 45%);
3943
+ --fs-shadow-lg: 0 15px 30px rgb(0 0 0 / 60%), 0 6px 12px rgb(0 0 0 / 50%);
3944
+ --fs-tooltip-bg: #f8fafc;
3945
+ --fs-tooltip-text: #1e293b;
3946
+ --fs-color-primary: rgb(39.8728684152, 106.2372587275, 232.1894887664);
3947
+ --fs-alert-primary-bg: rgb(30.765779113, 49.9974662348, 82.3021425489);
3948
+ --fs-alert-primary-text: rgb(130.6636212695, 172.0850768824, 246.4419684583);
3949
+ --fs-feedback-primary-bg: rgb(30.765779113, 49.9974662348, 82.3021425489);
3950
+ --fs-color-secondary: rgb(114.3557068426, 129.039220146, 150.1520317181);
3951
+ --fs-alert-secondary-bg: rgb(39.6548148226, 51.4270943358, 70.2648514061);
3952
+ --fs-alert-secondary-text: rgb(166.7597509121, 176.2809684237, 189.9919576187);
3953
+ --fs-feedback-secondary-bg: rgb(39.6548148226, 51.4270943358, 70.2648514061);
3954
+ --fs-color-success: rgb(134.4501166043, 226.9563331209, 149.6185042518);
3955
+ --fs-alert-success-bg: rgb(24.8621518491, 61.9088085702, 89.0318819222);
3956
+ --fs-alert-success-text: rgb(155.0475916512, 231.7231823866, 166.1609492581);
3957
+ --fs-feedback-success-bg: rgb(24.8621518491, 61.9088085702, 89.0318819222);
3958
+ --fs-color-warning: rgb(252.9400238762, 208.7461261831, 137.9221837268);
3959
+ --fs-alert-warning-bg: rgb(59.1359779173, 56.6792370273, 88.6687774507);
3960
+ --fs-alert-warning-text: rgb(253.5439861058, 216.1213263099, 157.1705651606);
3961
+ --fs-feedback-warning-bg: rgb(59.1359779173, 56.6792370273, 88.6687774507);
3962
+ --fs-color-danger: rgb(208.1189955268, 64.9740184262, 63.4302936954);
3963
+ --fs-alert-danger-bg: rgb(44.6823973866, 47.5125073063, 81.2083778204);
3964
+ --fs-alert-danger-text: rgb(235.4050745756, 149.9650253478, 142.4924034553);
3965
+ --fs-feedback-danger-bg: rgb(44.6823973866, 47.5125073063, 81.2083778204);
3966
+ --fs-color-info: #5e5cc7;
3967
+ --fs-alert-info-bg: rgb(35.0058091619, 49.6887857769, 78.5757788254);
3968
+ --fs-alert-info-text: rgb(160.628671266, 165.881962789, 227.610600335);
3969
+ --fs-feedback-info-bg: rgb(35.0058091619, 49.6887857769, 78.5757788254);
3970
+ }
3971
+ @supports (color: oklch(0% 0 0deg)) {
3972
+ [data-theme=dark],
3973
+ [data-fs-theme=dark] {
3974
+ --fs-color-text: oklch(96.2913383165% 0.002529697 228.7848682695deg);
3975
+ --fs-color-muted: oklch(80.9268110646% 0.0083071608 253.8653061211deg);
3976
+ --fs-color-border: oklch(36.8827622528% 0.0074489239 240.018838067deg);
3977
+ --fs-color-surface: oklch(24.7936263361% 0.0058460141 271.1764187765deg);
3978
+ --fs-color-subtle: oklch(29.3286259539% 0.0055990771 271.2234269855deg);
3979
+ --fs-color-bg-surface: var(--fs-color-surface);
3980
+ --fs-color-bg-subtle: var(--fs-color-subtle);
3981
+ --fs-color-surface-raised: var(--fs-color-surface);
3982
+ --fs-color-surface-interactive: var(--fs-color-subtle);
3983
+ --fs-color-text-primary: var(--fs-color-text);
3984
+ --fs-color-text-muted: var(--fs-color-muted);
3985
+ --fs-color-border-default: var(--fs-color-border);
3986
+ --fs-color-focus: var(--fs-color-primary);
3987
+ --fs-color-action-primary: var(--fs-color-primary);
3988
+ --fs-color-action-danger: var(--fs-color-danger);
3989
+ --fs-tooltip-bg: oklch(98.4151869501% 0.0034126992 247.8577745944deg);
3990
+ --fs-tooltip-text: oklch(27.9495237712% 0.0368481257 260.0309873929deg);
3991
+ --fs-color-primary: oklch(55.884857057% 0.2025537915 261.6264320248deg);
3992
+ --fs-alert-primary-bg: oklch(31.7915463198% 0.0633030844 260.2703040876deg);
3993
+ --fs-alert-primary-text: oklch(74.4596540856% 0.1172679846 261.6264320248deg);
3994
+ --fs-feedback-primary-bg: oklch(31.7915463198% 0.0633030844 260.2703040876deg);
3995
+ --fs-color-secondary: oklch(59.8951906896% 0.0366453387 257.4166191214deg);
3996
+ --fs-alert-secondary-bg: oklch(32.0729603204% 0.0374284633 259.6388321521deg);
3997
+ --fs-alert-secondary-text: oklch(75.4915054214% 0.0223943736 257.4166191214deg);
3998
+ --fs-feedback-secondary-bg: oklch(32.0729603204% 0.0374284633 259.6388321521deg);
3999
+ --fs-color-success: oklch(83.8485321344% 0.139498201 148.125846236deg);
4000
+ --fs-alert-success-bg: oklch(35.0298333903% 0.0635127994 243.2452162193deg);
4001
+ --fs-alert-success-text: oklch(86.3333733445% 0.1180369393 148.125846236deg);
4002
+ --fs-feedback-success-bg: oklch(35.0298333903% 0.0635127994 243.2452162193deg);
4003
+ --fs-color-warning: oklch(88.2682030181% 0.1015699084 78.6575213966deg);
4004
+ --fs-alert-warning-bg: oklch(36.0497574404% 0.0547601164 286.8249674934deg);
4005
+ --fs-alert-warning-text: oklch(90.0730948615% 0.0859437686 78.6575213966deg);
4006
+ --fs-feedback-warning-bg: oklch(36.0497574404% 0.0547601164 286.8249674934deg);
4007
+ --fs-color-danger: oklch(58.1670482336% 0.1802407312 25.2407937498deg);
4008
+ --fs-alert-danger-bg: oklch(32.151892295% 0.0597799696 278.8124583464deg);
4009
+ --fs-alert-danger-text: oklch(75.7809226615% 0.104349897 25.2407937498deg);
4010
+ --fs-feedback-danger-bg: oklch(32.151892295% 0.0597799696 278.8124583464deg);
4011
+ --fs-color-info: oklch(53.3359780029% 0.1620131129 280.2231949375deg);
4012
+ --fs-alert-info-bg: oklch(31.7574919059% 0.0556228738 263.0598185246deg);
4013
+ --fs-alert-info-text: oklch(74.3347879016% 0.0891072121 280.2231949375deg);
4014
+ --fs-feedback-info-bg: oklch(31.7574919059% 0.0556228738 263.0598185246deg);
4015
+ }
4016
+ }
4017
+ @media (prefers-color-scheme: dark) {
4018
+ [data-fs-theme=auto] {
4019
+ --fs-color-text: #f1f3f4;
4020
+ --fs-color-muted: #bdc1c6;
4021
+ --fs-color-border: #3c4043;
4022
+ --fs-color-surface: #202124;
4023
+ --fs-color-subtle: #2b2c2f;
4024
+ --fs-color-bg-surface: var(--fs-color-surface);
4025
+ --fs-color-bg-subtle: var(--fs-color-subtle);
4026
+ --fs-color-surface-raised: var(--fs-color-surface);
4027
+ --fs-color-surface-interactive: var(--fs-color-subtle);
4028
+ --fs-color-text-primary: var(--fs-color-text);
4029
+ --fs-color-text-muted: var(--fs-color-muted);
4030
+ --fs-color-border-default: var(--fs-color-border);
4031
+ --fs-color-focus: var(--fs-color-primary);
4032
+ --fs-tooltip-bg: #f8fafc;
4033
+ --fs-tooltip-text: #1e293b;
4034
+ }
4035
+ }
4036
+ @media (forced-colors: active) {
4037
+ :root,
4038
+ [data-theme=dark],
4039
+ [data-fs-theme=light],
4040
+ [data-fs-theme=dark],
4041
+ [data-fs-theme=auto] {
4042
+ --fs-color-border: CanvasText;
4043
+ --fs-color-text: CanvasText;
4044
+ --fs-color-surface: Canvas;
4045
+ --fs-color-subtle: Canvas;
4046
+ --fs-focus-color: Highlight;
4047
+ }
4048
+ }
4049
+ }
4050
+ /*# sourceMappingURL=fokus-components.css.map */