fokus-styles 2.6.2 → 2.7.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 (82) hide show
  1. package/README.md +5 -0
  2. package/dist/css/components.css +534 -27
  3. package/dist/css/components.min.css +1 -1
  4. package/dist/css/fokus-components.css +534 -27
  5. package/dist/css/fokus-components.min.css +1 -1
  6. package/dist/css/fokus-core.css +42 -0
  7. package/dist/css/fokus-core.min.css +1 -1
  8. package/dist/css/fokus-dark.css +42 -0
  9. package/dist/css/fokus-dark.min.css +1 -1
  10. package/dist/css/fokus-helpers.css +646 -0
  11. package/dist/css/fokus-helpers.min.css +2 -0
  12. package/dist/css/fokus-rtl.css +9667 -2716
  13. package/dist/css/fokus-rtl.min.css +1 -1
  14. package/dist/css/fokus-utilities.css +9175 -2682
  15. package/dist/css/fokus-utilities.min.css +1 -1
  16. package/dist/css/fokus.css +9893 -2799
  17. package/dist/css/fokus.min.css +1 -1
  18. package/dist/css/forms.css +206 -28
  19. package/dist/css/forms.min.css +1 -1
  20. package/dist/css/helpers.css +9175 -2682
  21. package/dist/css/helpers.min.css +1 -1
  22. package/dist/css/layout.css +42 -0
  23. package/dist/css/layout.min.css +1 -1
  24. package/dist/js/fokus.js +91 -69
  25. package/dist/js/fokus.min.js +19 -19
  26. package/package.json +2 -1
  27. package/packages/fokus-components/scss/components/_button-group.scss +12 -0
  28. package/packages/fokus-components/scss/components/_buttons.scss +39 -6
  29. package/packages/fokus-components/scss/components/_datepicker.scss +47 -1
  30. package/packages/fokus-components/scss/components/_dropdown.scss +212 -6
  31. package/packages/fokus-components/scss/components/_index.scss +1 -0
  32. package/packages/fokus-components/scss/components/_menu.scss +95 -0
  33. package/packages/fokus-components/scss/components/_pagination.scss +43 -16
  34. package/packages/fokus-components/scss/components/_segmented-control.scss +16 -1
  35. package/packages/fokus-components/scss/components/_tabs.scss +58 -0
  36. package/packages/fokus-components/scss/components/_tag.scss +32 -0
  37. package/packages/fokus-components/scss/forms/_forms.scss +155 -28
  38. package/packages/fokus-components/scss/forms/_range.scss +29 -0
  39. package/packages/fokus-core/scss/base/_motion.scss +3 -1
  40. package/packages/fokus-core/scss/settings/_config.scss +39 -1
  41. package/packages/fokus-core/scss/settings/_index.scss +1 -0
  42. package/packages/fokus-core/scss/settings/_utilities.scss +86 -0
  43. package/packages/fokus-core/scss/themes/_dark.scss +9 -0
  44. package/packages/fokus-core/scss/tokens/_root.scss +23 -0
  45. package/packages/fokus-js/js/combobox.js +2 -6
  46. package/packages/fokus-js/js/command-palette.js +2 -6
  47. package/packages/fokus-js/js/core/positioning.d.ts +2 -0
  48. package/packages/fokus-js/js/core/positioning.js +2 -2
  49. package/packages/fokus-js/js/core/theme.js +8 -0
  50. package/packages/fokus-js/js/datatable.js +6 -2
  51. package/packages/fokus-js/js/datepicker.js +13 -5
  52. package/packages/fokus-js/js/dropdown.js +37 -5
  53. package/packages/fokus-js/js/nested-menu.js +2 -6
  54. package/packages/fokus-js/js/notification-center.js +2 -6
  55. package/packages/fokus-js/js/pagination.js +15 -9
  56. package/packages/fokus-js/js/popover.js +2 -6
  57. package/packages/fokus-js/js/select.js +4 -0
  58. package/packages/fokus-js/js/tabs.js +4 -4
  59. package/packages/fokus-js/js/tooltip.js +2 -6
  60. package/packages/fokus-utilities/scss/utilities/_api.scss +62 -69
  61. package/packages/fokus-utilities/scss/utilities/_borders.scss +39 -0
  62. package/packages/fokus-utilities/scss/utilities/_colors.scss +27 -0
  63. package/packages/fokus-utilities/scss/utilities/_display.scss +20 -16
  64. package/packages/fokus-utilities/scss/utilities/_effects.scss +53 -0
  65. package/packages/fokus-utilities/scss/utilities/_flex.scss +50 -35
  66. package/packages/fokus-utilities/scss/utilities/_generated.scss +21 -0
  67. package/packages/fokus-utilities/scss/utilities/_grid.scss +25 -0
  68. package/packages/fokus-utilities/scss/utilities/_helpers.scss +35 -0
  69. package/packages/fokus-utilities/scss/utilities/_index.scss +11 -0
  70. package/packages/fokus-utilities/scss/utilities/_interactivity.scss +51 -0
  71. package/packages/fokus-utilities/scss/utilities/_layout.scss +61 -0
  72. package/packages/fokus-utilities/scss/utilities/_motion.scss +51 -0
  73. package/packages/fokus-utilities/scss/utilities/_position.scss +6 -6
  74. package/packages/fokus-utilities/scss/utilities/_print.scss +22 -18
  75. package/packages/fokus-utilities/scss/utilities/_shadow.scss +7 -3
  76. package/packages/fokus-utilities/scss/utilities/_sizing.scss +46 -0
  77. package/packages/fokus-utilities/scss/utilities/_spacing.scss +40 -113
  78. package/packages/fokus-utilities/scss/utilities/_states.scss +26 -10
  79. package/packages/fokus-utilities/scss/utilities/_transforms.scss +67 -0
  80. package/packages/fokus-utilities/scss/utilities/_typography.scss +72 -94
  81. package/scss/entries/helpers-entry.scss +5 -0
  82. package/scss/entries/rtl-entry.scss +6 -3
@@ -42,9 +42,26 @@
42
42
  --fs-control-height: 38px;
43
43
  --fs-control-height-sm: 30px;
44
44
  --fs-control-height-lg: 46px;
45
+ --fs-control-height-xs: 26px;
46
+ --fs-control-height-xl: 52px;
45
47
  --fs-control-padding-x: 12px;
46
48
  --fs-control-padding-x-sm: 8px;
47
49
  --fs-control-padding-x-lg: 16px;
50
+ --fs-control-padding-x-xs: 6px;
51
+ --fs-control-padding-x-xl: 20px;
52
+ --fs-control-border-color: var(--fs-color-border);
53
+ --fs-control-bg: var(--fs-color-surface);
54
+ --fs-control-hover-bg: var(--fs-color-subtle);
55
+ --fs-control-placeholder-color: var(--fs-color-muted);
56
+ --fs-control-focus-color: var(--fs-focus-color);
57
+ --fs-control-invalid-color: var(--fs-color-danger);
58
+ --fs-control-valid-color: var(--fs-color-success);
59
+ --fs-control-disabled-opacity: var(--fs-disabled-opacity);
60
+ --fs-control-radius: var(--fs-radius-sm);
61
+ --fs-control-touch-target: 44px;
62
+ --fs-control-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);
63
+ --fs-control-option-gap: var(--fs-space-2);
64
+ --fs-control-addon-bg: var(--fs-color-subtle);
48
65
  --fs-focus-width: 2px;
49
66
  --fs-focus-offset: 2px;
50
67
  --fs-focus-color: var(--fs-color-primary);
@@ -107,6 +124,24 @@
107
124
  --fs-feedback-warning-bg: #fff9e6;
108
125
  --fs-feedback-danger-bg: #fff2f3;
109
126
  --fs-feedback-info-bg: #f2f2ff;
127
+ --fs-color-primary-bg-subtle: var(--fs-feedback-primary-bg);
128
+ --fs-color-primary-border-subtle: var(--fs-color-primary);
129
+ --fs-color-primary-text-emphasis: var(--fs-alert-primary-text);
130
+ --fs-color-secondary-bg-subtle: var(--fs-feedback-secondary-bg);
131
+ --fs-color-secondary-border-subtle: var(--fs-color-secondary);
132
+ --fs-color-secondary-text-emphasis: var(--fs-alert-secondary-text);
133
+ --fs-color-success-bg-subtle: var(--fs-feedback-success-bg);
134
+ --fs-color-success-border-subtle: var(--fs-color-success);
135
+ --fs-color-success-text-emphasis: var(--fs-alert-success-text);
136
+ --fs-color-warning-bg-subtle: var(--fs-feedback-warning-bg);
137
+ --fs-color-warning-border-subtle: var(--fs-color-warning);
138
+ --fs-color-warning-text-emphasis: var(--fs-alert-warning-text);
139
+ --fs-color-danger-bg-subtle: var(--fs-feedback-danger-bg);
140
+ --fs-color-danger-border-subtle: var(--fs-color-danger);
141
+ --fs-color-danger-text-emphasis: var(--fs-alert-danger-text);
142
+ --fs-color-info-bg-subtle: var(--fs-feedback-info-bg);
143
+ --fs-color-info-border-subtle: var(--fs-color-info);
144
+ --fs-color-info-text-emphasis: var(--fs-alert-info-text);
110
145
  }
111
146
  @supports (color: oklch(0% 0 0deg)) {
112
147
  :root {
@@ -1473,6 +1508,13 @@
1473
1508
  --fs-color-focus: var(--fs-color-primary);
1474
1509
  --fs-color-action-primary: var(--fs-color-primary);
1475
1510
  --fs-color-action-danger: var(--fs-color-danger);
1511
+ --fs-control-bg: var(--fs-color-surface);
1512
+ --fs-control-border-color: var(--fs-color-border);
1513
+ --fs-control-hover-bg: var(--fs-color-subtle);
1514
+ --fs-control-placeholder-color: var(--fs-color-muted);
1515
+ --fs-control-invalid-color: var(--fs-color-danger);
1516
+ --fs-control-valid-color: var(--fs-color-success);
1517
+ --fs-control-addon-bg: var(--fs-color-subtle);
1476
1518
  --fs-shadow-sm: 0 1px 3px rgb(0 0 0 / 50%), 0 1px 2px rgb(0 0 0 / 40%);
1477
1519
  --fs-shadow-md: 0 6px 12px rgb(0 0 0 / 55%), 0 3px 6px rgb(0 0 0 / 45%);
1478
1520
  --fs-shadow-lg: 0 15px 30px rgb(0 0 0 / 60%), 0 6px 12px rgb(0 0 0 / 50%);
@@ -1,2 +1,2 @@
1
- @layer reset, tokens, base, layout, components, utilities, overrides;@layer tokens{:root{--fs-color-white:#fff;--fs-color-black:#000;--fs-color-text:#1e293b;--fs-color-muted:#64748b;--fs-color-border:#e2e8f0;--fs-color-surface:#fff;--fs-color-subtle:#f8fafc;--fs-font-sans:Plus Jakarta Sans,sans-serif;--fs-font-mono:Source Code Pro,monospace;--fs-font-size-md:0.8125rem;--fs-font-size-h1:1.75rem;--fs-font-size-h2:1.5rem;--fs-font-size-h3:1.3125rem;--fs-font-size-h4:1.125rem;--fs-font-size-h5:1rem;--fs-font-size-h6:0.875rem;--fs-font-weight-semibold:600;--fs-line-height-base:1.5;--fs-line-height-heading:1.25;--fs-radius-sm:4px;--fs-radius-md:6px;--fs-radius-lg:8px;--fs-gutter-x:1.5rem;--fs-gutter-y:0px;--fs-space-0:0;--fs-space-1:0.25rem;--fs-space-2:0.5rem;--fs-space-3:1rem;--fs-space-4:1.5rem;--fs-space-5:3rem;--fs-z-base:0;--fs-z-dropdown:1000;--fs-z-sticky:1020;--fs-z-modal:1050;--fs-z-offcanvas:1060;--fs-z-notification:1080;--fs-z-toast:1090;--fs-z-tooltip:1100;--fs-control-height:38px;--fs-control-height-sm:30px;--fs-control-height-lg:46px;--fs-control-padding-x:12px;--fs-control-padding-x-sm:8px;--fs-control-padding-x-lg:16px;--fs-focus-width:2px;--fs-focus-offset:2px;--fs-focus-color:var(--fs-color-primary);--fs-focus-ring-size:3px;--fs-focus-ring-color:color-mix(in srgb,var(--fs-focus-color) 22%,#0000);--fs-focus-ring-alpha:22%;--fs-transition-fast:150ms;--fs-transition-normal:220ms;--fs-motion-duration-fast:var(--fs-transition-fast);--fs-motion-duration-normal:var(--fs-transition-normal);--fs-motion-ease-standard:var(--fs-ease-standard);--fs-ease-standard:cubic-bezier(0.2,0,0,1);--fs-border-width:1px;--fs-disabled-opacity:0.5;--fs-safe-area-top:env(safe-area-inset-top,0px);--fs-safe-area-right:env(safe-area-inset-right,0px);--fs-safe-area-bottom:env(safe-area-inset-bottom,0px);--fs-safe-area-left:env(safe-area-inset-left,0px);--fs-component-control-height:var(--fs-control-height);--fs-component-overlay-backdrop:#0000008c;--fs-component-panel-radius:var(--fs-radius-md);--fs-component-panel-shadow:var(--fs-shadow-lg);--fs-contrast-border-width:var(--fs-border-width);--fs-contrast-focus-width:var(--fs-focus-width);--fs-cq-sm:320px;--fs-cq-md:480px;--fs-cq-lg:640px;--fs-shadow-sm:0 1px 3px #00000026,0 1px 2px #0000001a;--fs-shadow-md:0 6px 12px #00000026,0 3px 6px #0000001a;--fs-shadow-lg:0 15px 30px #0000002e,0 6px 12px #0000001f;--fs-tooltip-bg:#1e293b;--fs-tooltip-text:#fff;--fs-color-primary:#1a61e6;--fs-color-on-primary:#fff;--fs-alert-primary-bg:#dce9fe;--fs-alert-primary-text:#042159;--fs-color-secondary:#64748b;--fs-color-on-secondary:#fff;--fs-alert-secondary-bg:#e6e9ed;--fs-alert-secondary-text:#222932;--fs-color-success:#0dd157;--fs-color-on-success:#000;--fs-alert-success-bg:#e5f9e7;--fs-alert-success-text:#02501c;--fs-color-warning:#fab633;--fs-color-on-warning:#000;--fs-alert-warning-bg:#fff5e5;--fs-alert-warning-text:#61440d;--fs-color-danger:#cc3335;--fs-color-on-danger:#fff;--fs-alert-danger-bg:#fce2e0;--fs-alert-danger-text:#4e0d0e;--fs-color-info:#5e5cc7;--fs-color-on-info:#fff;--fs-alert-info-bg:#e4e6f8;--fs-alert-info-text:#1f1f4c;--fs-feedback-primary-bg:#e6f0ff;--fs-feedback-secondary-bg:#f8fafc;--fs-feedback-success-bg:#e6fff2;--fs-feedback-warning-bg:#fff9e6;--fs-feedback-danger-bg:#fff2f3;--fs-feedback-info-bg:#f2f2ff}@supports (color:oklch(0% 0 0deg)){:root{--fs-color-text:oklch(27.9495237712% 0.0368481257 260.0309873929deg);--fs-color-muted:oklch(55.4391007662% 0.040717043 257.4166191214deg);--fs-color-border:oklch(92.876126719% 0.0126187744 255.5078854448deg);--fs-color-subtle:oklch(98.4151869501% 0.0034126992 247.8577745944deg);--fs-tooltip-bg:oklch(27.9495237712% 0.0368481257 260.0309873929deg);--fs-color-primary:oklch(53.5630074284% 0.2132145174 261.6264320248deg);--fs-color-on-primary:#fff;--fs-alert-primary-bg:oklch(93.0344511143% 0.0319821776 261.6264320248deg);--fs-alert-primary-text:oklch(26.7815037142% 0.1066072587 261.6264320248deg);--fs-color-secondary:oklch(55.4391007662% 0.040717043 257.4166191214deg);--fs-color-on-secondary:#fff;--fs-alert-secondary-bg:oklch(93.3158651149% 0.0061075564 257.4166191214deg);--fs-alert-secondary-text:oklch(27.7195503831% 0.0203585215 257.4166191214deg);--fs-color-success:oklch(75.151587899% 0.2146126169 148.125846236deg);--fs-color-on-success:#000;--fs-alert-success-bg:oklch(96.2727381849% 0.0321918925 148.125846236deg);--fs-alert-success-text:oklch(37.5757939495% 0.1073063085 148.125846236deg);--fs-color-warning:oklch(81.9510815663% 0.1562613975 78.6575213966deg);--fs-color-on-warning:#000;--fs-alert-warning-bg:oklch(97.2926622349% 0.0234392096 78.6575213966deg);--fs-alert-warning-text:oklch(40.9755407832% 0.0781306987 78.6575213966deg);--fs-color-danger:oklch(55.9653139301% 0.1897270855 25.2407937498deg);--fs-color-on-danger:#fff;--fs-alert-danger-bg:oklch(93.3947970895% 0.0284590628 25.2407937498deg);--fs-alert-danger-text:oklch(27.982656965% 0.0948635427 25.2407937498deg);--fs-color-info:oklch(53.3359780029% 0.1620131129 280.2231949375deg);--fs-color-on-info:#fff;--fs-alert-info-bg:oklch(93.0003967004% 0.0243019669 280.2231949375deg);--fs-alert-info-text:oklch(26.6679890014% 0.0810065564 280.2231949375deg);--fs-feedback-primary-bg:oklch(95.2067827456% 0.0228899025 258.359342143deg);--fs-feedback-secondary-bg:oklch(98.4151869501% 0.0034126992 247.8577745944deg);--fs-feedback-success-bg:oklch(97.8305614459% 0.0311593614 163.2740567608deg);--fs-feedback-warning-bg:oklch(98.17094418% 0.025708244 92.3886876566deg);--fs-feedback-danger-bg:oklch(97.1603097552% 0.0140720277 12.0135639679deg);--fs-feedback-info-bg:oklch(96.4918490239% 0.0173174767 286.0707018324deg)}}@media (prefers-contrast:more){:root{--fs-contrast-border-width:2px;--fs-contrast-focus-width:3px;--fs-focus-width:var(--fs-contrast-focus-width);--fs-border-width:var(--fs-contrast-border-width)}}}@layer tokens{:root{--fs-color-bg-surface:var(--fs-color-surface);--fs-color-bg-subtle:var(--fs-color-subtle);--fs-color-text-primary:var(--fs-color-text);--fs-color-text-muted:var(--fs-color-muted);--fs-color-border-default:var(--fs-color-border);--fs-color-focus:var(--fs-color-primary);--fs-color-surface-raised:var(--fs-color-surface);--fs-color-surface-interactive:var(--fs-color-subtle);--fs-color-action-primary:var(--fs-color-primary);--fs-color-action-danger:var(--fs-color-danger);--fs-chart-series-1:var(--fs-color-primary);--fs-chart-series-2:var(--fs-color-success);--fs-chart-series-3:var(--fs-color-warning);--fs-chart-series-4:var(--fs-color-danger);--fs-chart-series-5:var(--fs-color-info);--fs-chart-series-6:var(--fs-color-secondary);--fs-chart-grid:var(--fs-color-border);--fs-chart-axis:var(--fs-color-muted);--fs-chart-tooltip-bg:var(--fs-tooltip-bg);--fs-chart-tooltip-text:var(--fs-tooltip-text)}}@layer tokens{}@layer reset{*,:after,:before{box-sizing:border-box}html{line-height:var(--fs-line-height-base);-webkit-text-size-adjust:100%;text-size-adjust:100%}body{margin:0;color:var(--fs-color-text);background-color:var(--fs-color-surface)}[hidden]{display:none!important}}@layer base{body,button,input,select,textarea{font-family:var(--fs-font-sans);font-size:var(--fs-font-size-md)}code,kbd,pre,samp{font-family:var(--fs-font-mono)}h1,h2,h3,h4,h5,h6{margin-top:0;font-weight:var(--fs-font-weight-semibold);line-height:var(--fs-line-height-heading)}h1{font-size:var(--fs-font-size-h1)}h2{font-size:var(--fs-font-size-h2)}h3{font-size:var(--fs-font-size-h3)}h4{font-size:var(--fs-font-size-h4)}h5{font-size:var(--fs-font-size-h5)}h6{font-size:var(--fs-font-size-h6)}}@layer base{@media (prefers-reduced-motion:reduce){*,:after,:before{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.fs-progress-bar-animated,.fs-progress-indeterminate .fs-progress-bar,.fs-spinner{animation-duration:1.5s!important;animation-iteration-count:infinite!important}}}@layer reset{:focus-visible{outline:var(--fs-focus-width) solid var(--fs-focus-color);outline-offset:var(--fs-focus-offset)}@media (forced-colors:active){:focus-visible{outline:2px solid CanvasText;outline-offset:2px}.fs-btn,[role=button],button,input,select,textarea{border-color:ButtonText;forced-color-adjust:auto}.fs-u-focus-ring:focus-visible{outline:3px solid Highlight}}}@layer utilities{.fs-u-visually-hidden-focusable:not(:focus):not(:focus-within),.fs-u-visually-hidden:not(:focus):not(:focus-within){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip-path:inset(50%)!important;white-space:nowrap!important;border:0!important}.fs-skip-link{position:fixed;z-index:1000;inset-block-start:var(--fs-space-2);inset-inline-start:var(--fs-space-2);transform:translateY(-200%);padding:var(--fs-space-2) var(--fs-space-3);color:var(--fs-color-on-primary);background:var(--fs-color-primary);border-radius:var(--fs-radius-sm)}.fs-skip-link:focus{transform:translateY(0)}}@layer layout{.fs-cluster{display:flex;flex-wrap:wrap;align-items:center;gap:var(--fs-cluster-gap,.5rem)}.fs-cluster-gap-0{--fs-cluster-gap:0}.fs-cluster-gap-1{--fs-cluster-gap:0.25rem}.fs-cluster-gap-2{--fs-cluster-gap:0.5rem}.fs-cluster-gap-3{--fs-cluster-gap:1rem}.fs-cluster-gap-4{--fs-cluster-gap:1.5rem}.fs-cluster-gap-5{--fs-cluster-gap:3rem}.fs-container,.fs-container-fluid,.fs-container-lg,.fs-container-md,.fs-container-sm,.fs-container-xl,.fs-container-xxl,.fs-container-xxxl{width:100%;margin-right:auto;margin-left:auto}}@layer layout{@media (min-width:640px){.fs-container,.fs-container-sm{max-width:600px}}@media (min-width:768px){.fs-container,.fs-container-md{max-width:720px}}@media (min-width:1024px){.fs-container,.fs-container-lg{max-width:960px}}@media (min-width:1280px){.fs-container,.fs-container-xl{max-width:1200px}}@media (min-width:1536px){.fs-container,.fs-container-xxl{max-width:1440px}}@media (min-width:1920px){.fs-container,.fs-container-xxxl{max-width:1800px}}}@layer layout{.fs-row{display:flex;flex-wrap:wrap;margin-top:calc(var(--fs-gutter-y)*-1);margin-right:calc(var(--fs-gutter-x)/-2);margin-left:calc(var(--fs-gutter-x)/-2)}.fs-row>*{margin-top:var(--fs-gutter-y);padding-right:calc(var(--fs-gutter-x)/2);padding-left:calc(var(--fs-gutter-x)/2)}.fs-col-fluid,.fs-row-fluid{width:100%}.fs-row-cols-auto>*{flex:0 0 auto;width:auto}.fs-row-cols-1>*{flex:0 0 auto;width:100%}.fs-row-cols-2>*{flex:0 0 auto;width:50%}.fs-row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.fs-row-cols-4>*{flex:0 0 auto;width:25%}.fs-row-cols-5>*{flex:0 0 auto;width:20%}.fs-row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.fs-order-0{order:0}.fs-order-1{order:1}.fs-order-2{order:2}.fs-order-3{order:3}.fs-order-4{order:4}.fs-order-5{order:5}.fs-order-6{order:6}.fs-order-7{order:7}.fs-order-8{order:8}.fs-order-9{order:9}.fs-order-10{order:10}.fs-order-11{order:11}.fs-order-12{order:12}.fs-col{flex:1 0 0%}.fs-col-auto{flex:0 0 auto;width:auto}.fs-col-1{flex:0 0 auto;width:8.3333333333%}.fs-col-2{flex:0 0 auto;width:16.6666666667%}.fs-col-3{flex:0 0 auto;width:25%}.fs-col-4{flex:0 0 auto;width:33.3333333333%}.fs-col-5{flex:0 0 auto;width:41.6666666667%}.fs-col-6{flex:0 0 auto;width:50%}.fs-col-7{flex:0 0 auto;width:58.3333333333%}.fs-col-8{flex:0 0 auto;width:66.6666666667%}.fs-col-9{flex:0 0 auto;width:75%}.fs-col-10{flex:0 0 auto;width:83.3333333333%}.fs-col-11{flex:0 0 auto;width:91.6666666667%}.fs-col-12{flex:0 0 auto;width:100%}@media (min-width:640px){.fs-row-cols-sm-auto>*{flex:0 0 auto;width:auto}.fs-row-cols-sm-1>*{flex:0 0 auto;width:100%}.fs-row-cols-sm-2>*{flex:0 0 auto;width:50%}.fs-row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.fs-row-cols-sm-4>*{flex:0 0 auto;width:25%}.fs-row-cols-sm-5>*{flex:0 0 auto;width:20%}.fs-row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.fs-order-sm-0{order:0}.fs-order-sm-1{order:1}.fs-order-sm-2{order:2}.fs-order-sm-3{order:3}.fs-order-sm-4{order:4}.fs-order-sm-5{order:5}.fs-order-sm-6{order:6}.fs-order-sm-7{order:7}.fs-order-sm-8{order:8}.fs-order-sm-9{order:9}.fs-order-sm-10{order:10}.fs-order-sm-11{order:11}.fs-order-sm-12{order:12}.fs-col-sm{flex:1 0 0%}.fs-col-sm-auto{flex:0 0 auto;width:auto}.fs-col-sm-1{flex:0 0 auto;width:8.3333333333%}.fs-col-sm-2{flex:0 0 auto;width:16.6666666667%}.fs-col-sm-3{flex:0 0 auto;width:25%}.fs-col-sm-4{flex:0 0 auto;width:33.3333333333%}.fs-col-sm-5{flex:0 0 auto;width:41.6666666667%}.fs-col-sm-6{flex:0 0 auto;width:50%}.fs-col-sm-7{flex:0 0 auto;width:58.3333333333%}.fs-col-sm-8{flex:0 0 auto;width:66.6666666667%}.fs-col-sm-9{flex:0 0 auto;width:75%}.fs-col-sm-10{flex:0 0 auto;width:83.3333333333%}.fs-col-sm-11{flex:0 0 auto;width:91.6666666667%}.fs-col-sm-12{flex:0 0 auto;width:100%}}@media (min-width:768px){.fs-row-cols-md-auto>*{flex:0 0 auto;width:auto}.fs-row-cols-md-1>*{flex:0 0 auto;width:100%}.fs-row-cols-md-2>*{flex:0 0 auto;width:50%}.fs-row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.fs-row-cols-md-4>*{flex:0 0 auto;width:25%}.fs-row-cols-md-5>*{flex:0 0 auto;width:20%}.fs-row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}.fs-order-md-0{order:0}.fs-order-md-1{order:1}.fs-order-md-2{order:2}.fs-order-md-3{order:3}.fs-order-md-4{order:4}.fs-order-md-5{order:5}.fs-order-md-6{order:6}.fs-order-md-7{order:7}.fs-order-md-8{order:8}.fs-order-md-9{order:9}.fs-order-md-10{order:10}.fs-order-md-11{order:11}.fs-order-md-12{order:12}.fs-col-md{flex:1 0 0%}.fs-col-md-auto{flex:0 0 auto;width:auto}.fs-col-md-1{flex:0 0 auto;width:8.3333333333%}.fs-col-md-2{flex:0 0 auto;width:16.6666666667%}.fs-col-md-3{flex:0 0 auto;width:25%}.fs-col-md-4{flex:0 0 auto;width:33.3333333333%}.fs-col-md-5{flex:0 0 auto;width:41.6666666667%}.fs-col-md-6{flex:0 0 auto;width:50%}.fs-col-md-7{flex:0 0 auto;width:58.3333333333%}.fs-col-md-8{flex:0 0 auto;width:66.6666666667%}.fs-col-md-9{flex:0 0 auto;width:75%}.fs-col-md-10{flex:0 0 auto;width:83.3333333333%}.fs-col-md-11{flex:0 0 auto;width:91.6666666667%}.fs-col-md-12{flex:0 0 auto;width:100%}}@media (min-width:1024px){.fs-row-cols-lg-auto>*{flex:0 0 auto;width:auto}.fs-row-cols-lg-1>*{flex:0 0 auto;width:100%}.fs-row-cols-lg-2>*{flex:0 0 auto;width:50%}.fs-row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.fs-row-cols-lg-4>*{flex:0 0 auto;width:25%}.fs-row-cols-lg-5>*{flex:0 0 auto;width:20%}.fs-row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}.fs-order-lg-0{order:0}.fs-order-lg-1{order:1}.fs-order-lg-2{order:2}.fs-order-lg-3{order:3}.fs-order-lg-4{order:4}.fs-order-lg-5{order:5}.fs-order-lg-6{order:6}.fs-order-lg-7{order:7}.fs-order-lg-8{order:8}.fs-order-lg-9{order:9}.fs-order-lg-10{order:10}.fs-order-lg-11{order:11}.fs-order-lg-12{order:12}.fs-col-lg{flex:1 0 0%}.fs-col-lg-auto{flex:0 0 auto;width:auto}.fs-col-lg-1{flex:0 0 auto;width:8.3333333333%}.fs-col-lg-2{flex:0 0 auto;width:16.6666666667%}.fs-col-lg-3{flex:0 0 auto;width:25%}.fs-col-lg-4{flex:0 0 auto;width:33.3333333333%}.fs-col-lg-5{flex:0 0 auto;width:41.6666666667%}.fs-col-lg-6{flex:0 0 auto;width:50%}.fs-col-lg-7{flex:0 0 auto;width:58.3333333333%}.fs-col-lg-8{flex:0 0 auto;width:66.6666666667%}.fs-col-lg-9{flex:0 0 auto;width:75%}.fs-col-lg-10{flex:0 0 auto;width:83.3333333333%}.fs-col-lg-11{flex:0 0 auto;width:91.6666666667%}.fs-col-lg-12{flex:0 0 auto;width:100%}}@media (min-width:1280px){.fs-row-cols-xl-auto>*{flex:0 0 auto;width:auto}.fs-row-cols-xl-1>*{flex:0 0 auto;width:100%}.fs-row-cols-xl-2>*{flex:0 0 auto;width:50%}.fs-row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.fs-row-cols-xl-4>*{flex:0 0 auto;width:25%}.fs-row-cols-xl-5>*{flex:0 0 auto;width:20%}.fs-row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}.fs-order-xl-0{order:0}.fs-order-xl-1{order:1}.fs-order-xl-2{order:2}.fs-order-xl-3{order:3}.fs-order-xl-4{order:4}.fs-order-xl-5{order:5}.fs-order-xl-6{order:6}.fs-order-xl-7{order:7}.fs-order-xl-8{order:8}.fs-order-xl-9{order:9}.fs-order-xl-10{order:10}.fs-order-xl-11{order:11}.fs-order-xl-12{order:12}.fs-col-xl{flex:1 0 0%}.fs-col-xl-auto{flex:0 0 auto;width:auto}.fs-col-xl-1{flex:0 0 auto;width:8.3333333333%}.fs-col-xl-2{flex:0 0 auto;width:16.6666666667%}.fs-col-xl-3{flex:0 0 auto;width:25%}.fs-col-xl-4{flex:0 0 auto;width:33.3333333333%}.fs-col-xl-5{flex:0 0 auto;width:41.6666666667%}.fs-col-xl-6{flex:0 0 auto;width:50%}.fs-col-xl-7{flex:0 0 auto;width:58.3333333333%}.fs-col-xl-8{flex:0 0 auto;width:66.6666666667%}.fs-col-xl-9{flex:0 0 auto;width:75%}.fs-col-xl-10{flex:0 0 auto;width:83.3333333333%}.fs-col-xl-11{flex:0 0 auto;width:91.6666666667%}.fs-col-xl-12{flex:0 0 auto;width:100%}}@media (min-width:1536px){.fs-row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.fs-row-cols-xxl-1>*{flex:0 0 auto;width:100%}.fs-row-cols-xxl-2>*{flex:0 0 auto;width:50%}.fs-row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.fs-row-cols-xxl-4>*{flex:0 0 auto;width:25%}.fs-row-cols-xxl-5>*{flex:0 0 auto;width:20%}.fs-row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}.fs-order-xxl-0{order:0}.fs-order-xxl-1{order:1}.fs-order-xxl-2{order:2}.fs-order-xxl-3{order:3}.fs-order-xxl-4{order:4}.fs-order-xxl-5{order:5}.fs-order-xxl-6{order:6}.fs-order-xxl-7{order:7}.fs-order-xxl-8{order:8}.fs-order-xxl-9{order:9}.fs-order-xxl-10{order:10}.fs-order-xxl-11{order:11}.fs-order-xxl-12{order:12}.fs-col-xxl{flex:1 0 0%}.fs-col-xxl-auto{flex:0 0 auto;width:auto}.fs-col-xxl-1{flex:0 0 auto;width:8.3333333333%}.fs-col-xxl-2{flex:0 0 auto;width:16.6666666667%}.fs-col-xxl-3{flex:0 0 auto;width:25%}.fs-col-xxl-4{flex:0 0 auto;width:33.3333333333%}.fs-col-xxl-5{flex:0 0 auto;width:41.6666666667%}.fs-col-xxl-6{flex:0 0 auto;width:50%}.fs-col-xxl-7{flex:0 0 auto;width:58.3333333333%}.fs-col-xxl-8{flex:0 0 auto;width:66.6666666667%}.fs-col-xxl-9{flex:0 0 auto;width:75%}.fs-col-xxl-10{flex:0 0 auto;width:83.3333333333%}.fs-col-xxl-11{flex:0 0 auto;width:91.6666666667%}.fs-col-xxl-12{flex:0 0 auto;width:100%}}@media (min-width:1920px){.fs-row-cols-xxxl-auto>*{flex:0 0 auto;width:auto}.fs-row-cols-xxxl-1>*{flex:0 0 auto;width:100%}.fs-row-cols-xxxl-2>*{flex:0 0 auto;width:50%}.fs-row-cols-xxxl-3>*{flex:0 0 auto;width:33.3333333333%}.fs-row-cols-xxxl-4>*{flex:0 0 auto;width:25%}.fs-row-cols-xxxl-5>*{flex:0 0 auto;width:20%}.fs-row-cols-xxxl-6>*{flex:0 0 auto;width:16.6666666667%}.fs-order-xxxl-0{order:0}.fs-order-xxxl-1{order:1}.fs-order-xxxl-2{order:2}.fs-order-xxxl-3{order:3}.fs-order-xxxl-4{order:4}.fs-order-xxxl-5{order:5}.fs-order-xxxl-6{order:6}.fs-order-xxxl-7{order:7}.fs-order-xxxl-8{order:8}.fs-order-xxxl-9{order:9}.fs-order-xxxl-10{order:10}.fs-order-xxxl-11{order:11}.fs-order-xxxl-12{order:12}.fs-col-xxxl{flex:1 0 0%}.fs-col-xxxl-auto{flex:0 0 auto;width:auto}.fs-col-xxxl-1{flex:0 0 auto;width:8.3333333333%}.fs-col-xxxl-2{flex:0 0 auto;width:16.6666666667%}.fs-col-xxxl-3{flex:0 0 auto;width:25%}.fs-col-xxxl-4{flex:0 0 auto;width:33.3333333333%}.fs-col-xxxl-5{flex:0 0 auto;width:41.6666666667%}.fs-col-xxxl-6{flex:0 0 auto;width:50%}.fs-col-xxxl-7{flex:0 0 auto;width:58.3333333333%}.fs-col-xxxl-8{flex:0 0 auto;width:66.6666666667%}.fs-col-xxxl-9{flex:0 0 auto;width:75%}.fs-col-xxxl-10{flex:0 0 auto;width:83.3333333333%}.fs-col-xxxl-11{flex:0 0 auto;width:91.6666666667%}.fs-col-xxxl-12{flex:0 0 auto;width:100%}}}@layer layout{.fs-sidebar{display:flex;flex-wrap:wrap;gap:var(--fs-sidebar-gap,1rem)}.fs-sidebar-aside{flex-basis:var(--fs-sidebar-width,16rem);flex-grow:1}.fs-sidebar-content{flex-basis:0;flex-grow:999;min-width:50%}.fs-sidebar-reverse{flex-direction:row-reverse}.fs-sidebar-gap-0{--fs-sidebar-gap:0}.fs-sidebar-gap-1{--fs-sidebar-gap:0.25rem}.fs-sidebar-gap-2{--fs-sidebar-gap:0.5rem}.fs-sidebar-gap-3{--fs-sidebar-gap:1rem}.fs-sidebar-gap-4{--fs-sidebar-gap:1.5rem}.fs-sidebar-gap-5{--fs-sidebar-gap:3rem}.fs-sidebar-width-sm{--fs-sidebar-width:120px}.fs-sidebar-width-md{--fs-sidebar-width:240px}.fs-sidebar-width-lg{--fs-sidebar-width:360px}.fs-sidebar-width-xl{--fs-sidebar-width:480px}.fs-sidebar-width-xxl{--fs-sidebar-width:600px}.fs-sidebar-width-xxxl{--fs-sidebar-width:720px}.fs-stack{display:flex;flex-direction:column;gap:var(--fs-stack-gap,1rem)}.fs-stack-gap-0{--fs-stack-gap:0}.fs-stack-gap-1{--fs-stack-gap:0.25rem}.fs-stack-gap-2{--fs-stack-gap:0.5rem}.fs-stack-gap-3{--fs-stack-gap:1rem}.fs-stack-gap-4{--fs-stack-gap:1.5rem}.fs-stack-gap-5{--fs-stack-gap:3rem}}@layer layout{}@layer tokens{[data-fs-brand=violet]{--fs-color-primary:#6d28d9;--fs-alert-primary-bg:#e6e2fd;--fs-alert-primary-text:#260953;--fs-feedback-primary-bg:#e6e2fd}[data-fs-brand=violet][data-theme=dark],[data-theme=dark] [data-fs-brand=violet]{--fs-color-primary:#7339dc;--fs-alert-primary-bg:#1f2f53;--fs-alert-primary-text:#a794f0;--fs-feedback-primary-bg:#1f2f53}@supports (color:oklch(0% 0 0deg)){[data-fs-brand=violet]{--fs-color-primary:oklch(49.0666497236% 0.2412317343 292.5809393311deg);--fs-alert-primary-bg:oklch(92.3599974585% 0.0361847601 292.5809393311deg);--fs-alert-primary-text:oklch(24.5333248618% 0.1206158672 292.5809393311deg);--fs-feedback-primary-bg:oklch(92.3599974585% 0.0361847601 292.5809393311deg)}[data-fs-brand=violet][data-theme=dark],[data-theme=dark] [data-fs-brand=violet]{--fs-color-primary:oklch(51.6133172374% 0.2291701476 292.5809393311deg);--fs-alert-primary-bg:oklch(31.117092664% 0.067505667 264.9134801836deg);--fs-alert-primary-text:oklch(71.986657348% 0.1326774539 292.5809393311deg);--fs-feedback-primary-bg:oklch(31.117092664% 0.067505667 264.9134801836deg)}}[data-fs-brand=corporate]{--fs-color-primary:#1d4e89;--fs-alert-primary-bg:#dbe3ee;--fs-alert-primary-text:#051931;--fs-feedback-primary-bg:#dbe3ee}[data-fs-brand=corporate][data-theme=dark],[data-theme=dark] [data-fs-brand=corporate]{--fs-color-primary:#29578f;--fs-alert-primary-bg:#1f2e46;--fs-alert-primary-text:#809bbf;--fs-feedback-primary-bg:#1f2e46}[data-fs-brand=vibrant]{--fs-color-primary:#f2542d;--fs-alert-primary-bg:#ffe7e1;--fs-alert-primary-text:#5e1b0b;--fs-feedback-primary-bg:#ffe7e1}[data-fs-brand=vibrant][data-theme=dark],[data-theme=dark] [data-fs-brand=vibrant]{--fs-color-primary:#f45f3b;--fs-alert-primary-bg:#313356;--fs-alert-primary-text:#ffa791;--fs-feedback-primary-bg:#313356}@supports (color:oklch(0% 0 0deg)){[data-fs-brand=corporate]{--fs-color-primary:oklch(42.3377990386% 0.1112359961 255.1073474093deg);--fs-alert-primary-bg:oklch(91.3506698558% 0.0166853994 255.1073474093deg);--fs-alert-primary-text:oklch(21.1688995193% 0.055617998 255.1073474093deg);--fs-feedback-primary-bg:oklch(91.3506698558% 0.0166853994 255.1073474093deg)}[data-fs-brand=corporate][data-theme=dark],[data-theme=dark] [data-fs-brand=corporate]{--fs-color-primary:oklch(45.2209090867% 0.1056741963 255.1073474093deg);--fs-alert-primary-bg:oklch(30.1077650613% 0.0480063062 259.2924413953deg);--fs-alert-primary-text:oklch(68.2857894712% 0.0611797979 255.1073474093deg);--fs-feedback-primary-bg:oklch(30.1077650613% 0.0480063062 259.2924413953deg)}[data-fs-brand=vibrant]{--fs-color-primary:oklch(65.5786741493% 0.2007639921 34.7814711243deg);--fs-alert-primary-bg:oklch(94.8368011224% 0.0301145988 34.7814711243deg);--fs-alert-primary-text:oklch(32.7893370747% 0.1003819961 34.7814711243deg);--fs-feedback-primary-bg:oklch(94.8368011224% 0.0301145988 34.7814711243deg)}[data-fs-brand=vibrant][data-theme=dark],[data-theme=dark] [data-fs-brand=vibrant]{--fs-color-primary:oklch(67.2997404419% 0.1907257925 34.7814711243deg);--fs-alert-primary-bg:oklch(33.5938963279% 0.0614355056 280.2435599526deg);--fs-alert-primary-text:oklch(81.0682707821% 0.1104201957 34.7814711243deg);--fs-feedback-primary-bg:oklch(33.5938963279% 0.0614355056 280.2435599526deg)}}}@layer overrides{[data-fs-brand=vibrant] :is(.fs-badge-primary,.fs-btn-primary){--fs-btn-color:#000;--fs-badge-color:#000}[data-fs-brand=vibrant] .fs-check{--fs-check-mark:#000}}@layer tokens{[data-fs-theme=dark],[data-theme=dark]{--fs-color-text:#f1f3f4;--fs-color-muted:#bdc1c6;--fs-color-border:#3c4043;--fs-color-surface:#202124;--fs-color-subtle:#2b2c2f;--fs-color-bg-surface:var(--fs-color-surface);--fs-color-bg-subtle:var(--fs-color-subtle);--fs-color-surface-raised:var(--fs-color-surface);--fs-color-surface-interactive:var(--fs-color-subtle);--fs-color-text-primary:var(--fs-color-text);--fs-color-text-muted:var(--fs-color-muted);--fs-color-border-default:var(--fs-color-border);--fs-color-focus:var(--fs-color-primary);--fs-color-action-primary:var(--fs-color-primary);--fs-color-action-danger:var(--fs-color-danger);--fs-shadow-sm:0 1px 3px #00000080,0 1px 2px #0006;--fs-shadow-md:0 6px 12px #0000008c,0 3px 6px #00000073;--fs-shadow-lg:0 15px 30px #0009,0 6px 12px #00000080;--fs-tooltip-bg:#f8fafc;--fs-tooltip-text:#1e293b;--fs-color-primary:#286ae8;--fs-alert-primary-bg:#1f3252;--fs-alert-primary-text:#83acf6;--fs-feedback-primary-bg:#1f3252;--fs-color-secondary:#728196;--fs-alert-secondary-bg:#283346;--fs-alert-secondary-text:#a7b0be;--fs-feedback-secondary-bg:#283346;--fs-color-success:#86e396;--fs-alert-success-bg:#193e59;--fs-alert-success-text:#9be8a6;--fs-feedback-success-bg:#193e59;--fs-color-warning:#fdd18a;--fs-alert-warning-bg:#3b3959;--fs-alert-warning-text:#fed89d;--fs-feedback-warning-bg:#3b3959;--fs-color-danger:#d0413f;--fs-alert-danger-bg:#2d3051;--fs-alert-danger-text:#eb968e;--fs-feedback-danger-bg:#2d3051;--fs-color-info:#5e5cc7;--fs-alert-info-bg:#23324f;--fs-alert-info-text:#a1a6e4;--fs-feedback-info-bg:#23324f}@supports (color:oklch(0% 0 0deg)){[data-fs-theme=dark],[data-theme=dark]{--fs-color-text:oklch(96.2913383165% 0.002529697 228.7848682695deg);--fs-color-muted:oklch(80.9268110646% 0.0083071608 253.8653061211deg);--fs-color-border:oklch(36.8827622528% 0.0074489239 240.018838067deg);--fs-color-surface:oklch(24.7936263361% 0.0058460141 271.1764187765deg);--fs-color-subtle:oklch(29.3286259539% 0.0055990771 271.2234269855deg);--fs-color-bg-surface:var(--fs-color-surface);--fs-color-bg-subtle:var(--fs-color-subtle);--fs-color-surface-raised:var(--fs-color-surface);--fs-color-surface-interactive:var(--fs-color-subtle);--fs-color-text-primary:var(--fs-color-text);--fs-color-text-muted:var(--fs-color-muted);--fs-color-border-default:var(--fs-color-border);--fs-color-focus:var(--fs-color-primary);--fs-color-action-primary:var(--fs-color-primary);--fs-color-action-danger:var(--fs-color-danger);--fs-tooltip-bg:oklch(98.4151869501% 0.0034126992 247.8577745944deg);--fs-tooltip-text:oklch(27.9495237712% 0.0368481257 260.0309873929deg);--fs-color-primary:oklch(55.884857057% 0.2025537915 261.6264320248deg);--fs-alert-primary-bg:oklch(31.7915463198% 0.0633030844 260.2703040876deg);--fs-alert-primary-text:oklch(74.4596540856% 0.1172679846 261.6264320248deg);--fs-feedback-primary-bg:oklch(31.7915463198% 0.0633030844 260.2703040876deg);--fs-color-secondary:oklch(59.8951906896% 0.0366453387 257.4166191214deg);--fs-alert-secondary-bg:oklch(32.0729603204% 0.0374284633 259.6388321521deg);--fs-alert-secondary-text:oklch(75.4915054214% 0.0223943736 257.4166191214deg);--fs-feedback-secondary-bg:oklch(32.0729603204% 0.0374284633 259.6388321521deg);--fs-color-success:oklch(83.8485321344% 0.139498201 148.125846236deg);--fs-alert-success-bg:oklch(35.0298333903% 0.0635127994 243.2452162193deg);--fs-alert-success-text:oklch(86.3333733445% 0.1180369393 148.125846236deg);--fs-feedback-success-bg:oklch(35.0298333903% 0.0635127994 243.2452162193deg);--fs-color-warning:oklch(88.2682030181% 0.1015699084 78.6575213966deg);--fs-alert-warning-bg:oklch(36.0497574404% 0.0547601164 286.8249674934deg);--fs-alert-warning-text:oklch(90.0730948615% 0.0859437686 78.6575213966deg);--fs-feedback-warning-bg:oklch(36.0497574404% 0.0547601164 286.8249674934deg);--fs-color-danger:oklch(58.1670482336% 0.1802407312 25.2407937498deg);--fs-alert-danger-bg:oklch(32.151892295% 0.0597799696 278.8124583464deg);--fs-alert-danger-text:oklch(75.7809226615% 0.104349897 25.2407937498deg);--fs-feedback-danger-bg:oklch(32.151892295% 0.0597799696 278.8124583464deg);--fs-color-info:oklch(53.3359780029% 0.1620131129 280.2231949375deg);--fs-alert-info-bg:oklch(31.7574919059% 0.0556228738 263.0598185246deg);--fs-alert-info-text:oklch(74.3347879016% 0.0891072121 280.2231949375deg);--fs-feedback-info-bg:oklch(31.7574919059% 0.0556228738 263.0598185246deg)}}@media (prefers-color-scheme:dark){[data-fs-theme=auto]{--fs-color-text:#f1f3f4;--fs-color-muted:#bdc1c6;--fs-color-border:#3c4043;--fs-color-surface:#202124;--fs-color-subtle:#2b2c2f;--fs-color-bg-surface:var(--fs-color-surface);--fs-color-bg-subtle:var(--fs-color-subtle);--fs-color-surface-raised:var(--fs-color-surface);--fs-color-surface-interactive:var(--fs-color-subtle);--fs-color-text-primary:var(--fs-color-text);--fs-color-text-muted:var(--fs-color-muted);--fs-color-border-default:var(--fs-color-border);--fs-color-focus:var(--fs-color-primary);--fs-tooltip-bg:#f8fafc;--fs-tooltip-text:#1e293b}}@media (forced-colors:active){:root,[data-fs-theme=auto],[data-fs-theme=dark],[data-fs-theme=light],[data-theme=dark]{--fs-color-border:CanvasText;--fs-color-text:CanvasText;--fs-color-surface:Canvas;--fs-color-subtle:Canvas;--fs-focus-color:Highlight}}}
1
+ @layer reset, tokens, base, layout, components, utilities, overrides;@layer tokens{:root{--fs-color-white:#fff;--fs-color-black:#000;--fs-color-text:#1e293b;--fs-color-muted:#64748b;--fs-color-border:#e2e8f0;--fs-color-surface:#fff;--fs-color-subtle:#f8fafc;--fs-font-sans:Plus Jakarta Sans,sans-serif;--fs-font-mono:Source Code Pro,monospace;--fs-font-size-md:0.8125rem;--fs-font-size-h1:1.75rem;--fs-font-size-h2:1.5rem;--fs-font-size-h3:1.3125rem;--fs-font-size-h4:1.125rem;--fs-font-size-h5:1rem;--fs-font-size-h6:0.875rem;--fs-font-weight-semibold:600;--fs-line-height-base:1.5;--fs-line-height-heading:1.25;--fs-radius-sm:4px;--fs-radius-md:6px;--fs-radius-lg:8px;--fs-gutter-x:1.5rem;--fs-gutter-y:0px;--fs-space-0:0;--fs-space-1:0.25rem;--fs-space-2:0.5rem;--fs-space-3:1rem;--fs-space-4:1.5rem;--fs-space-5:3rem;--fs-z-base:0;--fs-z-dropdown:1000;--fs-z-sticky:1020;--fs-z-modal:1050;--fs-z-offcanvas:1060;--fs-z-notification:1080;--fs-z-toast:1090;--fs-z-tooltip:1100;--fs-control-height:38px;--fs-control-height-sm:30px;--fs-control-height-lg:46px;--fs-control-height-xs:26px;--fs-control-height-xl:52px;--fs-control-padding-x:12px;--fs-control-padding-x-sm:8px;--fs-control-padding-x-lg:16px;--fs-control-padding-x-xs:6px;--fs-control-padding-x-xl:20px;--fs-control-border-color:var(--fs-color-border);--fs-control-bg:var(--fs-color-surface);--fs-control-hover-bg:var(--fs-color-subtle);--fs-control-placeholder-color:var(--fs-color-muted);--fs-control-focus-color:var(--fs-focus-color);--fs-control-invalid-color:var(--fs-color-danger);--fs-control-valid-color:var(--fs-color-success);--fs-control-disabled-opacity:var(--fs-disabled-opacity);--fs-control-radius:var(--fs-radius-sm);--fs-control-touch-target:44px;--fs-control-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);--fs-control-option-gap:var(--fs-space-2);--fs-control-addon-bg:var(--fs-color-subtle);--fs-focus-width:2px;--fs-focus-offset:2px;--fs-focus-color:var(--fs-color-primary);--fs-focus-ring-size:3px;--fs-focus-ring-color:color-mix(in srgb,var(--fs-focus-color) 22%,#0000);--fs-focus-ring-alpha:22%;--fs-transition-fast:150ms;--fs-transition-normal:220ms;--fs-motion-duration-fast:var(--fs-transition-fast);--fs-motion-duration-normal:var(--fs-transition-normal);--fs-motion-ease-standard:var(--fs-ease-standard);--fs-ease-standard:cubic-bezier(0.2,0,0,1);--fs-border-width:1px;--fs-disabled-opacity:0.5;--fs-safe-area-top:env(safe-area-inset-top,0px);--fs-safe-area-right:env(safe-area-inset-right,0px);--fs-safe-area-bottom:env(safe-area-inset-bottom,0px);--fs-safe-area-left:env(safe-area-inset-left,0px);--fs-component-control-height:var(--fs-control-height);--fs-component-overlay-backdrop:#0000008c;--fs-component-panel-radius:var(--fs-radius-md);--fs-component-panel-shadow:var(--fs-shadow-lg);--fs-contrast-border-width:var(--fs-border-width);--fs-contrast-focus-width:var(--fs-focus-width);--fs-cq-sm:320px;--fs-cq-md:480px;--fs-cq-lg:640px;--fs-shadow-sm:0 1px 3px #00000026,0 1px 2px #0000001a;--fs-shadow-md:0 6px 12px #00000026,0 3px 6px #0000001a;--fs-shadow-lg:0 15px 30px #0000002e,0 6px 12px #0000001f;--fs-tooltip-bg:#1e293b;--fs-tooltip-text:#fff;--fs-color-primary:#1a61e6;--fs-color-on-primary:#fff;--fs-alert-primary-bg:#dce9fe;--fs-alert-primary-text:#042159;--fs-color-secondary:#64748b;--fs-color-on-secondary:#fff;--fs-alert-secondary-bg:#e6e9ed;--fs-alert-secondary-text:#222932;--fs-color-success:#0dd157;--fs-color-on-success:#000;--fs-alert-success-bg:#e5f9e7;--fs-alert-success-text:#02501c;--fs-color-warning:#fab633;--fs-color-on-warning:#000;--fs-alert-warning-bg:#fff5e5;--fs-alert-warning-text:#61440d;--fs-color-danger:#cc3335;--fs-color-on-danger:#fff;--fs-alert-danger-bg:#fce2e0;--fs-alert-danger-text:#4e0d0e;--fs-color-info:#5e5cc7;--fs-color-on-info:#fff;--fs-alert-info-bg:#e4e6f8;--fs-alert-info-text:#1f1f4c;--fs-feedback-primary-bg:#e6f0ff;--fs-feedback-secondary-bg:#f8fafc;--fs-feedback-success-bg:#e6fff2;--fs-feedback-warning-bg:#fff9e6;--fs-feedback-danger-bg:#fff2f3;--fs-feedback-info-bg:#f2f2ff;--fs-color-primary-bg-subtle:var(--fs-feedback-primary-bg);--fs-color-primary-border-subtle:var(--fs-color-primary);--fs-color-primary-text-emphasis:var(--fs-alert-primary-text);--fs-color-secondary-bg-subtle:var(--fs-feedback-secondary-bg);--fs-color-secondary-border-subtle:var(--fs-color-secondary);--fs-color-secondary-text-emphasis:var(--fs-alert-secondary-text);--fs-color-success-bg-subtle:var(--fs-feedback-success-bg);--fs-color-success-border-subtle:var(--fs-color-success);--fs-color-success-text-emphasis:var(--fs-alert-success-text);--fs-color-warning-bg-subtle:var(--fs-feedback-warning-bg);--fs-color-warning-border-subtle:var(--fs-color-warning);--fs-color-warning-text-emphasis:var(--fs-alert-warning-text);--fs-color-danger-bg-subtle:var(--fs-feedback-danger-bg);--fs-color-danger-border-subtle:var(--fs-color-danger);--fs-color-danger-text-emphasis:var(--fs-alert-danger-text);--fs-color-info-bg-subtle:var(--fs-feedback-info-bg);--fs-color-info-border-subtle:var(--fs-color-info);--fs-color-info-text-emphasis:var(--fs-alert-info-text)}@supports (color:oklch(0% 0 0deg)){:root{--fs-color-text:oklch(27.9495237712% 0.0368481257 260.0309873929deg);--fs-color-muted:oklch(55.4391007662% 0.040717043 257.4166191214deg);--fs-color-border:oklch(92.876126719% 0.0126187744 255.5078854448deg);--fs-color-subtle:oklch(98.4151869501% 0.0034126992 247.8577745944deg);--fs-tooltip-bg:oklch(27.9495237712% 0.0368481257 260.0309873929deg);--fs-color-primary:oklch(53.5630074284% 0.2132145174 261.6264320248deg);--fs-color-on-primary:#fff;--fs-alert-primary-bg:oklch(93.0344511143% 0.0319821776 261.6264320248deg);--fs-alert-primary-text:oklch(26.7815037142% 0.1066072587 261.6264320248deg);--fs-color-secondary:oklch(55.4391007662% 0.040717043 257.4166191214deg);--fs-color-on-secondary:#fff;--fs-alert-secondary-bg:oklch(93.3158651149% 0.0061075564 257.4166191214deg);--fs-alert-secondary-text:oklch(27.7195503831% 0.0203585215 257.4166191214deg);--fs-color-success:oklch(75.151587899% 0.2146126169 148.125846236deg);--fs-color-on-success:#000;--fs-alert-success-bg:oklch(96.2727381849% 0.0321918925 148.125846236deg);--fs-alert-success-text:oklch(37.5757939495% 0.1073063085 148.125846236deg);--fs-color-warning:oklch(81.9510815663% 0.1562613975 78.6575213966deg);--fs-color-on-warning:#000;--fs-alert-warning-bg:oklch(97.2926622349% 0.0234392096 78.6575213966deg);--fs-alert-warning-text:oklch(40.9755407832% 0.0781306987 78.6575213966deg);--fs-color-danger:oklch(55.9653139301% 0.1897270855 25.2407937498deg);--fs-color-on-danger:#fff;--fs-alert-danger-bg:oklch(93.3947970895% 0.0284590628 25.2407937498deg);--fs-alert-danger-text:oklch(27.982656965% 0.0948635427 25.2407937498deg);--fs-color-info:oklch(53.3359780029% 0.1620131129 280.2231949375deg);--fs-color-on-info:#fff;--fs-alert-info-bg:oklch(93.0003967004% 0.0243019669 280.2231949375deg);--fs-alert-info-text:oklch(26.6679890014% 0.0810065564 280.2231949375deg);--fs-feedback-primary-bg:oklch(95.2067827456% 0.0228899025 258.359342143deg);--fs-feedback-secondary-bg:oklch(98.4151869501% 0.0034126992 247.8577745944deg);--fs-feedback-success-bg:oklch(97.8305614459% 0.0311593614 163.2740567608deg);--fs-feedback-warning-bg:oklch(98.17094418% 0.025708244 92.3886876566deg);--fs-feedback-danger-bg:oklch(97.1603097552% 0.0140720277 12.0135639679deg);--fs-feedback-info-bg:oklch(96.4918490239% 0.0173174767 286.0707018324deg)}}@media (prefers-contrast:more){:root{--fs-contrast-border-width:2px;--fs-contrast-focus-width:3px;--fs-focus-width:var(--fs-contrast-focus-width);--fs-border-width:var(--fs-contrast-border-width)}}}@layer tokens{:root{--fs-color-bg-surface:var(--fs-color-surface);--fs-color-bg-subtle:var(--fs-color-subtle);--fs-color-text-primary:var(--fs-color-text);--fs-color-text-muted:var(--fs-color-muted);--fs-color-border-default:var(--fs-color-border);--fs-color-focus:var(--fs-color-primary);--fs-color-surface-raised:var(--fs-color-surface);--fs-color-surface-interactive:var(--fs-color-subtle);--fs-color-action-primary:var(--fs-color-primary);--fs-color-action-danger:var(--fs-color-danger);--fs-chart-series-1:var(--fs-color-primary);--fs-chart-series-2:var(--fs-color-success);--fs-chart-series-3:var(--fs-color-warning);--fs-chart-series-4:var(--fs-color-danger);--fs-chart-series-5:var(--fs-color-info);--fs-chart-series-6:var(--fs-color-secondary);--fs-chart-grid:var(--fs-color-border);--fs-chart-axis:var(--fs-color-muted);--fs-chart-tooltip-bg:var(--fs-tooltip-bg);--fs-chart-tooltip-text:var(--fs-tooltip-text)}}@layer tokens{}@layer reset{*,:after,:before{box-sizing:border-box}html{line-height:var(--fs-line-height-base);-webkit-text-size-adjust:100%;text-size-adjust:100%}body{margin:0;color:var(--fs-color-text);background-color:var(--fs-color-surface)}[hidden]{display:none!important}}@layer base{body,button,input,select,textarea{font-family:var(--fs-font-sans);font-size:var(--fs-font-size-md)}code,kbd,pre,samp{font-family:var(--fs-font-mono)}h1,h2,h3,h4,h5,h6{margin-top:0;font-weight:var(--fs-font-weight-semibold);line-height:var(--fs-line-height-heading)}h1{font-size:var(--fs-font-size-h1)}h2{font-size:var(--fs-font-size-h2)}h3{font-size:var(--fs-font-size-h3)}h4{font-size:var(--fs-font-size-h4)}h5{font-size:var(--fs-font-size-h5)}h6{font-size:var(--fs-font-size-h6)}}@layer base{@media (prefers-reduced-motion:reduce){*,:after,:before{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.fs-progress-bar-animated,.fs-progress-indeterminate .fs-progress-bar,.fs-spinner{animation-duration:1.5s!important;animation-iteration-count:infinite!important}}}@layer reset{:focus-visible{outline:var(--fs-focus-width) solid var(--fs-focus-color);outline-offset:var(--fs-focus-offset)}@media (forced-colors:active){:focus-visible{outline:2px solid CanvasText;outline-offset:2px}.fs-btn,[role=button],button,input,select,textarea{border-color:ButtonText;forced-color-adjust:auto}.fs-u-focus-ring:focus-visible{outline:3px solid Highlight}}}@layer utilities{.fs-u-visually-hidden-focusable:not(:focus):not(:focus-within),.fs-u-visually-hidden:not(:focus):not(:focus-within){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip-path:inset(50%)!important;white-space:nowrap!important;border:0!important}.fs-skip-link{position:fixed;z-index:1000;inset-block-start:var(--fs-space-2);inset-inline-start:var(--fs-space-2);transform:translateY(-200%);padding:var(--fs-space-2) var(--fs-space-3);color:var(--fs-color-on-primary);background:var(--fs-color-primary);border-radius:var(--fs-radius-sm)}.fs-skip-link:focus{transform:translateY(0)}}@layer layout{.fs-cluster{display:flex;flex-wrap:wrap;align-items:center;gap:var(--fs-cluster-gap,.5rem)}.fs-cluster-gap-0{--fs-cluster-gap:0}.fs-cluster-gap-1{--fs-cluster-gap:0.25rem}.fs-cluster-gap-2{--fs-cluster-gap:0.5rem}.fs-cluster-gap-3{--fs-cluster-gap:1rem}.fs-cluster-gap-4{--fs-cluster-gap:1.5rem}.fs-cluster-gap-5{--fs-cluster-gap:3rem}.fs-container,.fs-container-fluid,.fs-container-lg,.fs-container-md,.fs-container-sm,.fs-container-xl,.fs-container-xxl,.fs-container-xxxl{width:100%;margin-right:auto;margin-left:auto}}@layer layout{@media (min-width:640px){.fs-container,.fs-container-sm{max-width:600px}}@media (min-width:768px){.fs-container,.fs-container-md{max-width:720px}}@media (min-width:1024px){.fs-container,.fs-container-lg{max-width:960px}}@media (min-width:1280px){.fs-container,.fs-container-xl{max-width:1200px}}@media (min-width:1536px){.fs-container,.fs-container-xxl{max-width:1440px}}@media (min-width:1920px){.fs-container,.fs-container-xxxl{max-width:1800px}}}@layer layout{.fs-row{display:flex;flex-wrap:wrap;margin-top:calc(var(--fs-gutter-y)*-1);margin-right:calc(var(--fs-gutter-x)/-2);margin-left:calc(var(--fs-gutter-x)/-2)}.fs-row>*{margin-top:var(--fs-gutter-y);padding-right:calc(var(--fs-gutter-x)/2);padding-left:calc(var(--fs-gutter-x)/2)}.fs-col-fluid,.fs-row-fluid{width:100%}.fs-row-cols-auto>*{flex:0 0 auto;width:auto}.fs-row-cols-1>*{flex:0 0 auto;width:100%}.fs-row-cols-2>*{flex:0 0 auto;width:50%}.fs-row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.fs-row-cols-4>*{flex:0 0 auto;width:25%}.fs-row-cols-5>*{flex:0 0 auto;width:20%}.fs-row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.fs-order-0{order:0}.fs-order-1{order:1}.fs-order-2{order:2}.fs-order-3{order:3}.fs-order-4{order:4}.fs-order-5{order:5}.fs-order-6{order:6}.fs-order-7{order:7}.fs-order-8{order:8}.fs-order-9{order:9}.fs-order-10{order:10}.fs-order-11{order:11}.fs-order-12{order:12}.fs-col{flex:1 0 0%}.fs-col-auto{flex:0 0 auto;width:auto}.fs-col-1{flex:0 0 auto;width:8.3333333333%}.fs-col-2{flex:0 0 auto;width:16.6666666667%}.fs-col-3{flex:0 0 auto;width:25%}.fs-col-4{flex:0 0 auto;width:33.3333333333%}.fs-col-5{flex:0 0 auto;width:41.6666666667%}.fs-col-6{flex:0 0 auto;width:50%}.fs-col-7{flex:0 0 auto;width:58.3333333333%}.fs-col-8{flex:0 0 auto;width:66.6666666667%}.fs-col-9{flex:0 0 auto;width:75%}.fs-col-10{flex:0 0 auto;width:83.3333333333%}.fs-col-11{flex:0 0 auto;width:91.6666666667%}.fs-col-12{flex:0 0 auto;width:100%}@media (min-width:640px){.fs-row-cols-sm-auto>*{flex:0 0 auto;width:auto}.fs-row-cols-sm-1>*{flex:0 0 auto;width:100%}.fs-row-cols-sm-2>*{flex:0 0 auto;width:50%}.fs-row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.fs-row-cols-sm-4>*{flex:0 0 auto;width:25%}.fs-row-cols-sm-5>*{flex:0 0 auto;width:20%}.fs-row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.fs-order-sm-0{order:0}.fs-order-sm-1{order:1}.fs-order-sm-2{order:2}.fs-order-sm-3{order:3}.fs-order-sm-4{order:4}.fs-order-sm-5{order:5}.fs-order-sm-6{order:6}.fs-order-sm-7{order:7}.fs-order-sm-8{order:8}.fs-order-sm-9{order:9}.fs-order-sm-10{order:10}.fs-order-sm-11{order:11}.fs-order-sm-12{order:12}.fs-col-sm{flex:1 0 0%}.fs-col-sm-auto{flex:0 0 auto;width:auto}.fs-col-sm-1{flex:0 0 auto;width:8.3333333333%}.fs-col-sm-2{flex:0 0 auto;width:16.6666666667%}.fs-col-sm-3{flex:0 0 auto;width:25%}.fs-col-sm-4{flex:0 0 auto;width:33.3333333333%}.fs-col-sm-5{flex:0 0 auto;width:41.6666666667%}.fs-col-sm-6{flex:0 0 auto;width:50%}.fs-col-sm-7{flex:0 0 auto;width:58.3333333333%}.fs-col-sm-8{flex:0 0 auto;width:66.6666666667%}.fs-col-sm-9{flex:0 0 auto;width:75%}.fs-col-sm-10{flex:0 0 auto;width:83.3333333333%}.fs-col-sm-11{flex:0 0 auto;width:91.6666666667%}.fs-col-sm-12{flex:0 0 auto;width:100%}}@media (min-width:768px){.fs-row-cols-md-auto>*{flex:0 0 auto;width:auto}.fs-row-cols-md-1>*{flex:0 0 auto;width:100%}.fs-row-cols-md-2>*{flex:0 0 auto;width:50%}.fs-row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.fs-row-cols-md-4>*{flex:0 0 auto;width:25%}.fs-row-cols-md-5>*{flex:0 0 auto;width:20%}.fs-row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}.fs-order-md-0{order:0}.fs-order-md-1{order:1}.fs-order-md-2{order:2}.fs-order-md-3{order:3}.fs-order-md-4{order:4}.fs-order-md-5{order:5}.fs-order-md-6{order:6}.fs-order-md-7{order:7}.fs-order-md-8{order:8}.fs-order-md-9{order:9}.fs-order-md-10{order:10}.fs-order-md-11{order:11}.fs-order-md-12{order:12}.fs-col-md{flex:1 0 0%}.fs-col-md-auto{flex:0 0 auto;width:auto}.fs-col-md-1{flex:0 0 auto;width:8.3333333333%}.fs-col-md-2{flex:0 0 auto;width:16.6666666667%}.fs-col-md-3{flex:0 0 auto;width:25%}.fs-col-md-4{flex:0 0 auto;width:33.3333333333%}.fs-col-md-5{flex:0 0 auto;width:41.6666666667%}.fs-col-md-6{flex:0 0 auto;width:50%}.fs-col-md-7{flex:0 0 auto;width:58.3333333333%}.fs-col-md-8{flex:0 0 auto;width:66.6666666667%}.fs-col-md-9{flex:0 0 auto;width:75%}.fs-col-md-10{flex:0 0 auto;width:83.3333333333%}.fs-col-md-11{flex:0 0 auto;width:91.6666666667%}.fs-col-md-12{flex:0 0 auto;width:100%}}@media (min-width:1024px){.fs-row-cols-lg-auto>*{flex:0 0 auto;width:auto}.fs-row-cols-lg-1>*{flex:0 0 auto;width:100%}.fs-row-cols-lg-2>*{flex:0 0 auto;width:50%}.fs-row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.fs-row-cols-lg-4>*{flex:0 0 auto;width:25%}.fs-row-cols-lg-5>*{flex:0 0 auto;width:20%}.fs-row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}.fs-order-lg-0{order:0}.fs-order-lg-1{order:1}.fs-order-lg-2{order:2}.fs-order-lg-3{order:3}.fs-order-lg-4{order:4}.fs-order-lg-5{order:5}.fs-order-lg-6{order:6}.fs-order-lg-7{order:7}.fs-order-lg-8{order:8}.fs-order-lg-9{order:9}.fs-order-lg-10{order:10}.fs-order-lg-11{order:11}.fs-order-lg-12{order:12}.fs-col-lg{flex:1 0 0%}.fs-col-lg-auto{flex:0 0 auto;width:auto}.fs-col-lg-1{flex:0 0 auto;width:8.3333333333%}.fs-col-lg-2{flex:0 0 auto;width:16.6666666667%}.fs-col-lg-3{flex:0 0 auto;width:25%}.fs-col-lg-4{flex:0 0 auto;width:33.3333333333%}.fs-col-lg-5{flex:0 0 auto;width:41.6666666667%}.fs-col-lg-6{flex:0 0 auto;width:50%}.fs-col-lg-7{flex:0 0 auto;width:58.3333333333%}.fs-col-lg-8{flex:0 0 auto;width:66.6666666667%}.fs-col-lg-9{flex:0 0 auto;width:75%}.fs-col-lg-10{flex:0 0 auto;width:83.3333333333%}.fs-col-lg-11{flex:0 0 auto;width:91.6666666667%}.fs-col-lg-12{flex:0 0 auto;width:100%}}@media (min-width:1280px){.fs-row-cols-xl-auto>*{flex:0 0 auto;width:auto}.fs-row-cols-xl-1>*{flex:0 0 auto;width:100%}.fs-row-cols-xl-2>*{flex:0 0 auto;width:50%}.fs-row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.fs-row-cols-xl-4>*{flex:0 0 auto;width:25%}.fs-row-cols-xl-5>*{flex:0 0 auto;width:20%}.fs-row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}.fs-order-xl-0{order:0}.fs-order-xl-1{order:1}.fs-order-xl-2{order:2}.fs-order-xl-3{order:3}.fs-order-xl-4{order:4}.fs-order-xl-5{order:5}.fs-order-xl-6{order:6}.fs-order-xl-7{order:7}.fs-order-xl-8{order:8}.fs-order-xl-9{order:9}.fs-order-xl-10{order:10}.fs-order-xl-11{order:11}.fs-order-xl-12{order:12}.fs-col-xl{flex:1 0 0%}.fs-col-xl-auto{flex:0 0 auto;width:auto}.fs-col-xl-1{flex:0 0 auto;width:8.3333333333%}.fs-col-xl-2{flex:0 0 auto;width:16.6666666667%}.fs-col-xl-3{flex:0 0 auto;width:25%}.fs-col-xl-4{flex:0 0 auto;width:33.3333333333%}.fs-col-xl-5{flex:0 0 auto;width:41.6666666667%}.fs-col-xl-6{flex:0 0 auto;width:50%}.fs-col-xl-7{flex:0 0 auto;width:58.3333333333%}.fs-col-xl-8{flex:0 0 auto;width:66.6666666667%}.fs-col-xl-9{flex:0 0 auto;width:75%}.fs-col-xl-10{flex:0 0 auto;width:83.3333333333%}.fs-col-xl-11{flex:0 0 auto;width:91.6666666667%}.fs-col-xl-12{flex:0 0 auto;width:100%}}@media (min-width:1536px){.fs-row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.fs-row-cols-xxl-1>*{flex:0 0 auto;width:100%}.fs-row-cols-xxl-2>*{flex:0 0 auto;width:50%}.fs-row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.fs-row-cols-xxl-4>*{flex:0 0 auto;width:25%}.fs-row-cols-xxl-5>*{flex:0 0 auto;width:20%}.fs-row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}.fs-order-xxl-0{order:0}.fs-order-xxl-1{order:1}.fs-order-xxl-2{order:2}.fs-order-xxl-3{order:3}.fs-order-xxl-4{order:4}.fs-order-xxl-5{order:5}.fs-order-xxl-6{order:6}.fs-order-xxl-7{order:7}.fs-order-xxl-8{order:8}.fs-order-xxl-9{order:9}.fs-order-xxl-10{order:10}.fs-order-xxl-11{order:11}.fs-order-xxl-12{order:12}.fs-col-xxl{flex:1 0 0%}.fs-col-xxl-auto{flex:0 0 auto;width:auto}.fs-col-xxl-1{flex:0 0 auto;width:8.3333333333%}.fs-col-xxl-2{flex:0 0 auto;width:16.6666666667%}.fs-col-xxl-3{flex:0 0 auto;width:25%}.fs-col-xxl-4{flex:0 0 auto;width:33.3333333333%}.fs-col-xxl-5{flex:0 0 auto;width:41.6666666667%}.fs-col-xxl-6{flex:0 0 auto;width:50%}.fs-col-xxl-7{flex:0 0 auto;width:58.3333333333%}.fs-col-xxl-8{flex:0 0 auto;width:66.6666666667%}.fs-col-xxl-9{flex:0 0 auto;width:75%}.fs-col-xxl-10{flex:0 0 auto;width:83.3333333333%}.fs-col-xxl-11{flex:0 0 auto;width:91.6666666667%}.fs-col-xxl-12{flex:0 0 auto;width:100%}}@media (min-width:1920px){.fs-row-cols-xxxl-auto>*{flex:0 0 auto;width:auto}.fs-row-cols-xxxl-1>*{flex:0 0 auto;width:100%}.fs-row-cols-xxxl-2>*{flex:0 0 auto;width:50%}.fs-row-cols-xxxl-3>*{flex:0 0 auto;width:33.3333333333%}.fs-row-cols-xxxl-4>*{flex:0 0 auto;width:25%}.fs-row-cols-xxxl-5>*{flex:0 0 auto;width:20%}.fs-row-cols-xxxl-6>*{flex:0 0 auto;width:16.6666666667%}.fs-order-xxxl-0{order:0}.fs-order-xxxl-1{order:1}.fs-order-xxxl-2{order:2}.fs-order-xxxl-3{order:3}.fs-order-xxxl-4{order:4}.fs-order-xxxl-5{order:5}.fs-order-xxxl-6{order:6}.fs-order-xxxl-7{order:7}.fs-order-xxxl-8{order:8}.fs-order-xxxl-9{order:9}.fs-order-xxxl-10{order:10}.fs-order-xxxl-11{order:11}.fs-order-xxxl-12{order:12}.fs-col-xxxl{flex:1 0 0%}.fs-col-xxxl-auto{flex:0 0 auto;width:auto}.fs-col-xxxl-1{flex:0 0 auto;width:8.3333333333%}.fs-col-xxxl-2{flex:0 0 auto;width:16.6666666667%}.fs-col-xxxl-3{flex:0 0 auto;width:25%}.fs-col-xxxl-4{flex:0 0 auto;width:33.3333333333%}.fs-col-xxxl-5{flex:0 0 auto;width:41.6666666667%}.fs-col-xxxl-6{flex:0 0 auto;width:50%}.fs-col-xxxl-7{flex:0 0 auto;width:58.3333333333%}.fs-col-xxxl-8{flex:0 0 auto;width:66.6666666667%}.fs-col-xxxl-9{flex:0 0 auto;width:75%}.fs-col-xxxl-10{flex:0 0 auto;width:83.3333333333%}.fs-col-xxxl-11{flex:0 0 auto;width:91.6666666667%}.fs-col-xxxl-12{flex:0 0 auto;width:100%}}}@layer layout{.fs-sidebar{display:flex;flex-wrap:wrap;gap:var(--fs-sidebar-gap,1rem)}.fs-sidebar-aside{flex-basis:var(--fs-sidebar-width,16rem);flex-grow:1}.fs-sidebar-content{flex-basis:0;flex-grow:999;min-width:50%}.fs-sidebar-reverse{flex-direction:row-reverse}.fs-sidebar-gap-0{--fs-sidebar-gap:0}.fs-sidebar-gap-1{--fs-sidebar-gap:0.25rem}.fs-sidebar-gap-2{--fs-sidebar-gap:0.5rem}.fs-sidebar-gap-3{--fs-sidebar-gap:1rem}.fs-sidebar-gap-4{--fs-sidebar-gap:1.5rem}.fs-sidebar-gap-5{--fs-sidebar-gap:3rem}.fs-sidebar-width-sm{--fs-sidebar-width:120px}.fs-sidebar-width-md{--fs-sidebar-width:240px}.fs-sidebar-width-lg{--fs-sidebar-width:360px}.fs-sidebar-width-xl{--fs-sidebar-width:480px}.fs-sidebar-width-xxl{--fs-sidebar-width:600px}.fs-sidebar-width-xxxl{--fs-sidebar-width:720px}.fs-stack{display:flex;flex-direction:column;gap:var(--fs-stack-gap,1rem)}.fs-stack-gap-0{--fs-stack-gap:0}.fs-stack-gap-1{--fs-stack-gap:0.25rem}.fs-stack-gap-2{--fs-stack-gap:0.5rem}.fs-stack-gap-3{--fs-stack-gap:1rem}.fs-stack-gap-4{--fs-stack-gap:1.5rem}.fs-stack-gap-5{--fs-stack-gap:3rem}}@layer layout{}@layer tokens{[data-fs-brand=violet]{--fs-color-primary:#6d28d9;--fs-alert-primary-bg:#e6e2fd;--fs-alert-primary-text:#260953;--fs-feedback-primary-bg:#e6e2fd}[data-fs-brand=violet][data-theme=dark],[data-theme=dark] [data-fs-brand=violet]{--fs-color-primary:#7339dc;--fs-alert-primary-bg:#1f2f53;--fs-alert-primary-text:#a794f0;--fs-feedback-primary-bg:#1f2f53}@supports (color:oklch(0% 0 0deg)){[data-fs-brand=violet]{--fs-color-primary:oklch(49.0666497236% 0.2412317343 292.5809393311deg);--fs-alert-primary-bg:oklch(92.3599974585% 0.0361847601 292.5809393311deg);--fs-alert-primary-text:oklch(24.5333248618% 0.1206158672 292.5809393311deg);--fs-feedback-primary-bg:oklch(92.3599974585% 0.0361847601 292.5809393311deg)}[data-fs-brand=violet][data-theme=dark],[data-theme=dark] [data-fs-brand=violet]{--fs-color-primary:oklch(51.6133172374% 0.2291701476 292.5809393311deg);--fs-alert-primary-bg:oklch(31.117092664% 0.067505667 264.9134801836deg);--fs-alert-primary-text:oklch(71.986657348% 0.1326774539 292.5809393311deg);--fs-feedback-primary-bg:oklch(31.117092664% 0.067505667 264.9134801836deg)}}[data-fs-brand=corporate]{--fs-color-primary:#1d4e89;--fs-alert-primary-bg:#dbe3ee;--fs-alert-primary-text:#051931;--fs-feedback-primary-bg:#dbe3ee}[data-fs-brand=corporate][data-theme=dark],[data-theme=dark] [data-fs-brand=corporate]{--fs-color-primary:#29578f;--fs-alert-primary-bg:#1f2e46;--fs-alert-primary-text:#809bbf;--fs-feedback-primary-bg:#1f2e46}[data-fs-brand=vibrant]{--fs-color-primary:#f2542d;--fs-alert-primary-bg:#ffe7e1;--fs-alert-primary-text:#5e1b0b;--fs-feedback-primary-bg:#ffe7e1}[data-fs-brand=vibrant][data-theme=dark],[data-theme=dark] [data-fs-brand=vibrant]{--fs-color-primary:#f45f3b;--fs-alert-primary-bg:#313356;--fs-alert-primary-text:#ffa791;--fs-feedback-primary-bg:#313356}@supports (color:oklch(0% 0 0deg)){[data-fs-brand=corporate]{--fs-color-primary:oklch(42.3377990386% 0.1112359961 255.1073474093deg);--fs-alert-primary-bg:oklch(91.3506698558% 0.0166853994 255.1073474093deg);--fs-alert-primary-text:oklch(21.1688995193% 0.055617998 255.1073474093deg);--fs-feedback-primary-bg:oklch(91.3506698558% 0.0166853994 255.1073474093deg)}[data-fs-brand=corporate][data-theme=dark],[data-theme=dark] [data-fs-brand=corporate]{--fs-color-primary:oklch(45.2209090867% 0.1056741963 255.1073474093deg);--fs-alert-primary-bg:oklch(30.1077650613% 0.0480063062 259.2924413953deg);--fs-alert-primary-text:oklch(68.2857894712% 0.0611797979 255.1073474093deg);--fs-feedback-primary-bg:oklch(30.1077650613% 0.0480063062 259.2924413953deg)}[data-fs-brand=vibrant]{--fs-color-primary:oklch(65.5786741493% 0.2007639921 34.7814711243deg);--fs-alert-primary-bg:oklch(94.8368011224% 0.0301145988 34.7814711243deg);--fs-alert-primary-text:oklch(32.7893370747% 0.1003819961 34.7814711243deg);--fs-feedback-primary-bg:oklch(94.8368011224% 0.0301145988 34.7814711243deg)}[data-fs-brand=vibrant][data-theme=dark],[data-theme=dark] [data-fs-brand=vibrant]{--fs-color-primary:oklch(67.2997404419% 0.1907257925 34.7814711243deg);--fs-alert-primary-bg:oklch(33.5938963279% 0.0614355056 280.2435599526deg);--fs-alert-primary-text:oklch(81.0682707821% 0.1104201957 34.7814711243deg);--fs-feedback-primary-bg:oklch(33.5938963279% 0.0614355056 280.2435599526deg)}}}@layer overrides{[data-fs-brand=vibrant] :is(.fs-badge-primary,.fs-btn-primary){--fs-btn-color:#000;--fs-badge-color:#000}[data-fs-brand=vibrant] .fs-check{--fs-check-mark:#000}}@layer tokens{[data-fs-theme=dark],[data-theme=dark]{--fs-color-text:#f1f3f4;--fs-color-muted:#bdc1c6;--fs-color-border:#3c4043;--fs-color-surface:#202124;--fs-color-subtle:#2b2c2f;--fs-color-bg-surface:var(--fs-color-surface);--fs-color-bg-subtle:var(--fs-color-subtle);--fs-color-surface-raised:var(--fs-color-surface);--fs-color-surface-interactive:var(--fs-color-subtle);--fs-color-text-primary:var(--fs-color-text);--fs-color-text-muted:var(--fs-color-muted);--fs-color-border-default:var(--fs-color-border);--fs-color-focus:var(--fs-color-primary);--fs-color-action-primary:var(--fs-color-primary);--fs-color-action-danger:var(--fs-color-danger);--fs-control-bg:var(--fs-color-surface);--fs-control-border-color:var(--fs-color-border);--fs-control-hover-bg:var(--fs-color-subtle);--fs-control-placeholder-color:var(--fs-color-muted);--fs-control-invalid-color:var(--fs-color-danger);--fs-control-valid-color:var(--fs-color-success);--fs-control-addon-bg:var(--fs-color-subtle);--fs-shadow-sm:0 1px 3px #00000080,0 1px 2px #0006;--fs-shadow-md:0 6px 12px #0000008c,0 3px 6px #00000073;--fs-shadow-lg:0 15px 30px #0009,0 6px 12px #00000080;--fs-tooltip-bg:#f8fafc;--fs-tooltip-text:#1e293b;--fs-color-primary:#286ae8;--fs-alert-primary-bg:#1f3252;--fs-alert-primary-text:#83acf6;--fs-feedback-primary-bg:#1f3252;--fs-color-secondary:#728196;--fs-alert-secondary-bg:#283346;--fs-alert-secondary-text:#a7b0be;--fs-feedback-secondary-bg:#283346;--fs-color-success:#86e396;--fs-alert-success-bg:#193e59;--fs-alert-success-text:#9be8a6;--fs-feedback-success-bg:#193e59;--fs-color-warning:#fdd18a;--fs-alert-warning-bg:#3b3959;--fs-alert-warning-text:#fed89d;--fs-feedback-warning-bg:#3b3959;--fs-color-danger:#d0413f;--fs-alert-danger-bg:#2d3051;--fs-alert-danger-text:#eb968e;--fs-feedback-danger-bg:#2d3051;--fs-color-info:#5e5cc7;--fs-alert-info-bg:#23324f;--fs-alert-info-text:#a1a6e4;--fs-feedback-info-bg:#23324f}@supports (color:oklch(0% 0 0deg)){[data-fs-theme=dark],[data-theme=dark]{--fs-color-text:oklch(96.2913383165% 0.002529697 228.7848682695deg);--fs-color-muted:oklch(80.9268110646% 0.0083071608 253.8653061211deg);--fs-color-border:oklch(36.8827622528% 0.0074489239 240.018838067deg);--fs-color-surface:oklch(24.7936263361% 0.0058460141 271.1764187765deg);--fs-color-subtle:oklch(29.3286259539% 0.0055990771 271.2234269855deg);--fs-color-bg-surface:var(--fs-color-surface);--fs-color-bg-subtle:var(--fs-color-subtle);--fs-color-surface-raised:var(--fs-color-surface);--fs-color-surface-interactive:var(--fs-color-subtle);--fs-color-text-primary:var(--fs-color-text);--fs-color-text-muted:var(--fs-color-muted);--fs-color-border-default:var(--fs-color-border);--fs-color-focus:var(--fs-color-primary);--fs-color-action-primary:var(--fs-color-primary);--fs-color-action-danger:var(--fs-color-danger);--fs-tooltip-bg:oklch(98.4151869501% 0.0034126992 247.8577745944deg);--fs-tooltip-text:oklch(27.9495237712% 0.0368481257 260.0309873929deg);--fs-color-primary:oklch(55.884857057% 0.2025537915 261.6264320248deg);--fs-alert-primary-bg:oklch(31.7915463198% 0.0633030844 260.2703040876deg);--fs-alert-primary-text:oklch(74.4596540856% 0.1172679846 261.6264320248deg);--fs-feedback-primary-bg:oklch(31.7915463198% 0.0633030844 260.2703040876deg);--fs-color-secondary:oklch(59.8951906896% 0.0366453387 257.4166191214deg);--fs-alert-secondary-bg:oklch(32.0729603204% 0.0374284633 259.6388321521deg);--fs-alert-secondary-text:oklch(75.4915054214% 0.0223943736 257.4166191214deg);--fs-feedback-secondary-bg:oklch(32.0729603204% 0.0374284633 259.6388321521deg);--fs-color-success:oklch(83.8485321344% 0.139498201 148.125846236deg);--fs-alert-success-bg:oklch(35.0298333903% 0.0635127994 243.2452162193deg);--fs-alert-success-text:oklch(86.3333733445% 0.1180369393 148.125846236deg);--fs-feedback-success-bg:oklch(35.0298333903% 0.0635127994 243.2452162193deg);--fs-color-warning:oklch(88.2682030181% 0.1015699084 78.6575213966deg);--fs-alert-warning-bg:oklch(36.0497574404% 0.0547601164 286.8249674934deg);--fs-alert-warning-text:oklch(90.0730948615% 0.0859437686 78.6575213966deg);--fs-feedback-warning-bg:oklch(36.0497574404% 0.0547601164 286.8249674934deg);--fs-color-danger:oklch(58.1670482336% 0.1802407312 25.2407937498deg);--fs-alert-danger-bg:oklch(32.151892295% 0.0597799696 278.8124583464deg);--fs-alert-danger-text:oklch(75.7809226615% 0.104349897 25.2407937498deg);--fs-feedback-danger-bg:oklch(32.151892295% 0.0597799696 278.8124583464deg);--fs-color-info:oklch(53.3359780029% 0.1620131129 280.2231949375deg);--fs-alert-info-bg:oklch(31.7574919059% 0.0556228738 263.0598185246deg);--fs-alert-info-text:oklch(74.3347879016% 0.0891072121 280.2231949375deg);--fs-feedback-info-bg:oklch(31.7574919059% 0.0556228738 263.0598185246deg)}}@media (prefers-color-scheme:dark){[data-fs-theme=auto]{--fs-color-text:#f1f3f4;--fs-color-muted:#bdc1c6;--fs-color-border:#3c4043;--fs-color-surface:#202124;--fs-color-subtle:#2b2c2f;--fs-color-bg-surface:var(--fs-color-surface);--fs-color-bg-subtle:var(--fs-color-subtle);--fs-color-surface-raised:var(--fs-color-surface);--fs-color-surface-interactive:var(--fs-color-subtle);--fs-color-text-primary:var(--fs-color-text);--fs-color-text-muted:var(--fs-color-muted);--fs-color-border-default:var(--fs-color-border);--fs-color-focus:var(--fs-color-primary);--fs-tooltip-bg:#f8fafc;--fs-tooltip-text:#1e293b}}@media (forced-colors:active){:root,[data-fs-theme=auto],[data-fs-theme=dark],[data-fs-theme=light],[data-theme=dark]{--fs-color-border:CanvasText;--fs-color-text:CanvasText;--fs-color-surface:Canvas;--fs-color-subtle:Canvas;--fs-focus-color:Highlight}}}
2
2
  /*# sourceMappingURL=layout.min.css.map */
package/dist/js/fokus.js CHANGED
@@ -117,8 +117,8 @@ var FokusStyles = (() => {
117
117
  const viewportWidth = document.documentElement.clientWidth;
118
118
  const viewportHeight = document.documentElement.clientHeight;
119
119
  const candidates = [...new Set(fallbackPlacements != null ? fallbackPlacements : [placement, OPPOSITE_PLACEMENT[placement], "bottom", "top", "right", "left"])].filter(Boolean);
120
- const primaryCandidates = candidates.slice(0, 2);
121
- const finalPlacement = (_a = primaryCandidates.find((candidate) => fitsPlacement(candidate, referenceRect, floatingRect, offset, viewportWidth, viewportHeight))) != null ? _a : placement;
120
+ const placementCandidates = fallbackPlacements ? candidates : candidates.slice(0, 2);
121
+ const finalPlacement = (_a = placementCandidates.find((candidate) => fitsPlacement(candidate, referenceRect, floatingRect, offset, viewportWidth, viewportHeight))) != null ? _a : placement;
122
122
  let top;
123
123
  let left;
124
124
  if (finalPlacement === "top" || finalPlacement === "bottom") {
@@ -412,18 +412,26 @@ var FokusStyles = (() => {
412
412
  this._originalParent = this.menuEl.parentNode;
413
413
  this._originalNextSibling = this.menuEl.nextSibling;
414
414
  document.body.appendChild(this.menuEl);
415
+ if (!this.toggleEl.id) this.toggleEl.id = `fs-dropdown-toggle-${Math.random().toString(36).slice(2)}`;
415
416
  this.toggleEl.setAttribute("aria-haspopup", "menu");
416
417
  this.toggleEl.setAttribute("aria-expanded", "false");
417
418
  this.toggleEl.setAttribute("aria-controls", this.menuEl.id || `fs-dropdown-${Math.random().toString(36).slice(2)}`);
418
419
  if (!this.menuEl.id) this.menuEl.id = this.toggleEl.getAttribute("aria-controls");
419
- this.menuEl.setAttribute("role", "menu");
420
+ if (!this.menuEl.hasAttribute("role")) this.menuEl.setAttribute("role", "menu");
421
+ this.menuEl.setAttribute("aria-orientation", "vertical");
422
+ this.menuEl.setAttribute("aria-labelledby", this.toggleEl.id || this.toggleEl.getAttribute("aria-controls"));
420
423
  this.menuEl.querySelectorAll(".fs-dropdown-item").forEach((item) => {
421
424
  if (!item.hasAttribute("role")) item.setAttribute("role", "menuitem");
425
+ if (this._isDisabled(item)) item.setAttribute("aria-disabled", "true");
422
426
  });
427
+ this.menuEl.querySelectorAll(".fs-dropdown-divider").forEach((divider) => divider.setAttribute("role", "separator"));
428
+ this.menuEl.querySelectorAll(".fs-dropdown-header").forEach((header) => header.setAttribute("role", "presentation"));
423
429
  this._handleToggleClick = this._handleToggleClick.bind(this);
430
+ this._handleToggleKeydown = this._handleToggleKeydown.bind(this);
424
431
  this._handleMenuKeydown = this._handleMenuKeydown.bind(this);
425
432
  this._handleMenuClick = this._handleMenuClick.bind(this);
426
433
  this.toggleEl.addEventListener("click", this._handleToggleClick);
434
+ this.toggleEl.addEventListener("keydown", this._handleToggleKeydown);
427
435
  this.menuEl.addEventListener("keydown", this._handleMenuKeydown);
428
436
  this.menuEl.addEventListener("click", this._handleMenuClick);
429
437
  this._removeEscapeListener = onEscapeKey(() => {
@@ -455,15 +463,23 @@ var FokusStyles = (() => {
455
463
  event.preventDefault();
456
464
  this.toggle();
457
465
  }
466
+ _handleToggleKeydown(event) {
467
+ var _a;
468
+ if (event.key !== "ArrowDown" && event.key !== "ArrowUp") return;
469
+ event.preventDefault();
470
+ if (!this.isOpen) this.show();
471
+ const items = this._items();
472
+ (_a = event.key === "ArrowUp" ? items.at(-1) : items[0]) == null ? void 0 : _a.focus();
473
+ }
458
474
  _handleMenuClick(event) {
459
- if (event.target.closest(".fs-dropdown-item")) {
475
+ if (event.target.closest(".fs-dropdown-item, [data-fs-dropdown-dismiss]")) {
460
476
  this.hide();
461
477
  this.toggleEl.focus();
462
478
  }
463
479
  }
464
480
  _handleMenuKeydown(event) {
465
481
  var _a, _b, _c, _d;
466
- const items = Array.from(this.menuEl.querySelectorAll(".fs-dropdown-item:not(.is-disabled)"));
482
+ const items = this._items();
467
483
  const currentIndex = items.indexOf(document.activeElement);
468
484
  if (event.key === "ArrowDown") {
469
485
  event.preventDefault();
@@ -487,7 +503,8 @@ var FokusStyles = (() => {
487
503
  var _a;
488
504
  if (this.isOpen) return;
489
505
  this.isOpen = true;
490
- const theme = (_a = this.toggleEl.closest("[data-theme]")) == null ? void 0 : _a.getAttribute("data-theme");
506
+ const themeRoot = this.toggleEl.closest("[data-theme], [data-fs-theme]");
507
+ const theme = (_a = themeRoot == null ? void 0 : themeRoot.getAttribute("data-theme")) != null ? _a : themeRoot == null ? void 0 : themeRoot.getAttribute("data-fs-theme");
491
508
  if (theme) {
492
509
  this.menuEl.setAttribute("data-theme", theme);
493
510
  } else {
@@ -500,13 +517,15 @@ var FokusStyles = (() => {
500
517
  offset: 4
501
518
  });
502
519
  applyPosition(this.menuEl, position);
520
+ this.menuEl.dataset.placement = position.placement;
521
+ this.menuEl.dataset.align = this.align;
503
522
  this._positionCleanup = watchPosition(this.toggleEl, this.menuEl, {
504
523
  placement: this.placement,
505
524
  align: this.align,
506
525
  offset: 4
507
526
  });
508
527
  this.toggleEl.setAttribute("aria-expanded", "true");
509
- const firstItem = this.menuEl.querySelector(".fs-dropdown-item:not(.is-disabled)");
528
+ const firstItem = this._items()[0];
510
529
  firstItem == null ? void 0 : firstItem.focus();
511
530
  this._outsideClickCleanup = onClickOutside(this.menuEl, (event) => {
512
531
  if (this.toggleEl.contains(event.target)) return;
@@ -523,6 +542,8 @@ var FokusStyles = (() => {
523
542
  this.menuEl.style.removeProperty("position");
524
543
  this.menuEl.style.removeProperty("top");
525
544
  this.menuEl.style.removeProperty("left");
545
+ delete this.menuEl.dataset.placement;
546
+ delete this.menuEl.dataset.align;
526
547
  this.toggleEl.setAttribute("aria-expanded", "false");
527
548
  (_a = this._outsideClickCleanup) == null ? void 0 : _a.call(this);
528
549
  this._outsideClickCleanup = null;
@@ -538,10 +559,17 @@ var FokusStyles = (() => {
538
559
  this.show();
539
560
  }
540
561
  }
562
+ _isDisabled(item) {
563
+ return item.classList.contains("is-disabled") || item.disabled || item.getAttribute("aria-disabled") === "true";
564
+ }
565
+ _items() {
566
+ return Array.from(this.menuEl.querySelectorAll(".fs-dropdown-item")).filter((item) => !this._isDisabled(item));
567
+ }
541
568
  dispose() {
542
569
  this.hide();
543
570
  this._removeEscapeListener();
544
571
  this.toggleEl.removeEventListener("click", this._handleToggleClick);
572
+ this.toggleEl.removeEventListener("keydown", this._handleToggleKeydown);
545
573
  this.menuEl.removeEventListener("keydown", this._handleMenuKeydown);
546
574
  this.menuEl.removeEventListener("click", this._handleMenuClick);
547
575
  if (this._originalParent) {
@@ -552,6 +580,16 @@ var FokusStyles = (() => {
552
580
  };
553
581
  autoInit("dropdown", Dropdown);
554
582
 
583
+ // packages/fokus-js/js/core/theme.js
584
+ function applyThemeContext(targetEl, sourceEl) {
585
+ var _a;
586
+ targetEl.removeAttribute("data-theme");
587
+ targetEl.removeAttribute("data-fs-theme");
588
+ const themeAttr = sourceEl.hasAttribute("data-fs-theme") ? "data-fs-theme" : "data-theme";
589
+ const theme = (_a = sourceEl.closest(`[${themeAttr}]`)) == null ? void 0 : _a.getAttribute(themeAttr);
590
+ if (theme) targetEl.setAttribute(themeAttr, theme);
591
+ }
592
+
555
593
  // packages/fokus-js/js/tooltip.js
556
594
  var instances2 = createInstanceRegistry();
557
595
  var idCounter = 0;
@@ -664,18 +702,12 @@ var FokusStyles = (() => {
664
702
  this._hideTimer = setTimeout(() => this.hide(), delay);
665
703
  }
666
704
  show() {
667
- var _a;
668
705
  this._clearTimers();
669
706
  if (this.isOpen) return;
670
707
  if (openInstance && openInstance !== this) openInstance.hide(true);
671
708
  openInstance = this;
672
709
  this.isOpen = true;
673
- const theme = (_a = this.referenceEl.closest("[data-theme]")) == null ? void 0 : _a.getAttribute("data-theme");
674
- if (theme) {
675
- this.tooltipEl.setAttribute("data-theme", theme);
676
- } else {
677
- this.tooltipEl.removeAttribute("data-theme");
678
- }
710
+ applyThemeContext(this.tooltipEl, this.referenceEl);
679
711
  this.tooltipEl.classList.add("is-open");
680
712
  const position = computePosition(this.referenceEl, this.tooltipEl, { placement: this.placement, align: this.align, offset: this.offset });
681
713
  applyPosition(this.tooltipEl, position);
@@ -840,15 +872,9 @@ var FokusStyles = (() => {
840
872
  }
841
873
  }
842
874
  show() {
843
- var _a;
844
875
  if (this.isOpen) return;
845
876
  this.isOpen = true;
846
- const theme = (_a = this.triggerEl.closest("[data-theme]")) == null ? void 0 : _a.getAttribute("data-theme");
847
- if (theme) {
848
- this.popoverEl.setAttribute("data-theme", theme);
849
- } else {
850
- this.popoverEl.removeAttribute("data-theme");
851
- }
877
+ applyThemeContext(this.popoverEl, this.triggerEl);
852
878
  this.popoverEl.classList.add("is-open");
853
879
  openPopovers.forEach((popover) => {
854
880
  if (popover !== this) popover.hide();
@@ -1367,6 +1393,10 @@ var FokusStyles = (() => {
1367
1393
  static getInstance(el) {
1368
1394
  return instances8.get(el);
1369
1395
  }
1396
+ get isOpen() {
1397
+ var _a, _b;
1398
+ return (_b = (_a = this.dropdown) == null ? void 0 : _a.isOpen) != null ? _b : false;
1399
+ }
1370
1400
  _buildMarkup() {
1371
1401
  const wrapper = document.createElement("div");
1372
1402
  wrapper.className = "fs-dropdown fs-form-select-dropdown";
@@ -1572,7 +1602,7 @@ var FokusStyles = (() => {
1572
1602
  var Tabs = class _Tabs {
1573
1603
  constructor(tablistEl) {
1574
1604
  this.tablistEl = tablistEl;
1575
- this.tabs = Array.from(tablistEl.querySelectorAll(".fs-nav-link"));
1605
+ this.tabs = Array.from(tablistEl.querySelectorAll(".fs-nav-link, [role=tab], [data-fs-tab-target]"));
1576
1606
  this.manualActivation = tablistEl.getAttribute("data-tabs-activation") === "manual";
1577
1607
  tablistEl.setAttribute("role", "tablist");
1578
1608
  this.tabs.forEach((tab) => {
@@ -1582,7 +1612,7 @@ var FokusStyles = (() => {
1582
1612
  tab.setAttribute("role", "tab");
1583
1613
  tab.setAttribute("aria-selected", String(isActive));
1584
1614
  tab.setAttribute("tabindex", isActive ? "0" : "-1");
1585
- const paneSelector = tab.getAttribute("data-fs-target");
1615
+ const paneSelector = tab.getAttribute("data-fs-target") || tab.getAttribute("data-fs-tab-target");
1586
1616
  const pane = paneSelector ? document.querySelector(paneSelector) : null;
1587
1617
  if (pane) {
1588
1618
  pane.setAttribute("role", "tabpanel");
@@ -1612,7 +1642,7 @@ var FokusStyles = (() => {
1612
1642
  return (_a = this.getInstance(el)) == null ? void 0 : _a.dispose();
1613
1643
  }
1614
1644
  _handleClick(event) {
1615
- const tab = event.target.closest(".fs-nav-link:not(.is-disabled)");
1645
+ const tab = event.target.closest(".fs-nav-link:not(.is-disabled), [role=tab]:not(.is-disabled), [data-fs-tab-target]:not(.is-disabled)");
1616
1646
  if (!tab || !this.tabs.includes(tab)) return;
1617
1647
  this.show(tab);
1618
1648
  }
@@ -1638,7 +1668,7 @@ var FokusStyles = (() => {
1638
1668
  otherTab.classList.toggle("is-active", isActive);
1639
1669
  otherTab.setAttribute("aria-selected", String(isActive));
1640
1670
  otherTab.setAttribute("tabindex", isActive ? "0" : "-1");
1641
- const paneSelector = otherTab.getAttribute("data-fs-target");
1671
+ const paneSelector = otherTab.getAttribute("data-fs-target") || otherTab.getAttribute("data-fs-tab-target");
1642
1672
  const pane = paneSelector ? document.querySelector(paneSelector) : null;
1643
1673
  pane == null ? void 0 : pane.classList.toggle("is-active", isActive);
1644
1674
  if (pane) pane.hidden = !isActive;
@@ -2469,15 +2499,9 @@ var FokusStyles = (() => {
2469
2499
  }
2470
2500
  }
2471
2501
  open() {
2472
- var _a;
2473
2502
  if (this.isOpen) return;
2474
2503
  this.isOpen = true;
2475
- const theme = (_a = this.triggerEl.closest("[data-theme]")) == null ? void 0 : _a.getAttribute("data-theme");
2476
- if (theme) {
2477
- this.panelEl.setAttribute("data-theme", theme);
2478
- } else {
2479
- this.panelEl.removeAttribute("data-theme");
2480
- }
2504
+ applyThemeContext(this.panelEl, this.triggerEl);
2481
2505
  this.panelEl.classList.add("is-open");
2482
2506
  const position = computePosition(this.triggerEl, this.panelEl, {
2483
2507
  placement: "bottom",
@@ -2728,15 +2752,10 @@ var FokusStyles = (() => {
2728
2752
  }
2729
2753
  }
2730
2754
  show() {
2731
- var _a, _b;
2755
+ var _a;
2732
2756
  if (this.isOpen) return;
2733
2757
  this.isOpen = true;
2734
- const theme = (_a = this.toggleEl.closest("[data-theme]")) == null ? void 0 : _a.getAttribute("data-theme");
2735
- if (theme) {
2736
- this.rootMenu.setAttribute("data-theme", theme);
2737
- } else {
2738
- this.rootMenu.removeAttribute("data-theme");
2739
- }
2758
+ applyThemeContext(this.rootMenu, this.toggleEl);
2740
2759
  this.rootMenu.classList.add("is-open");
2741
2760
  const position = computePosition(this.toggleEl, this.rootMenu, {
2742
2761
  placement: this.placement,
@@ -2745,7 +2764,7 @@ var FokusStyles = (() => {
2745
2764
  });
2746
2765
  applyPosition(this.rootMenu, position);
2747
2766
  this.toggleEl.setAttribute("aria-expanded", "true");
2748
- (_b = levelItems(this.rootMenu)[0]) == null ? void 0 : _b.focus();
2767
+ (_a = levelItems(this.rootMenu)[0]) == null ? void 0 : _a.focus();
2749
2768
  this._outsideClickCleanup = onClickOutside(this.rootMenu, (event) => {
2750
2769
  if (this.toggleEl.contains(event.target)) return;
2751
2770
  this.hide();
@@ -2923,15 +2942,9 @@ var FokusStyles = (() => {
2923
2942
  this._selectOption(option);
2924
2943
  }
2925
2944
  show() {
2926
- var _a;
2927
2945
  if (this.isOpen) return;
2928
2946
  this.isOpen = true;
2929
- const theme = (_a = this.inputEl.closest("[data-theme]")) == null ? void 0 : _a.getAttribute("data-theme");
2930
- if (theme) {
2931
- this.listboxEl.setAttribute("data-theme", theme);
2932
- } else {
2933
- this.listboxEl.removeAttribute("data-theme");
2934
- }
2947
+ applyThemeContext(this.listboxEl, this.inputEl);
2935
2948
  this.listboxEl.classList.add("is-open");
2936
2949
  this.listboxEl.style.width = `${this.inputEl.offsetWidth}px`;
2937
2950
  const position = computePosition(this.inputEl, this.listboxEl, {
@@ -3012,6 +3025,11 @@ var FokusStyles = (() => {
3012
3025
  function isSameDay(a, b) {
3013
3026
  return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();
3014
3027
  }
3028
+ function addMonthsClamped(date, months) {
3029
+ const target = new Date(date.getFullYear(), date.getMonth() + months, 1);
3030
+ const lastDay = new Date(target.getFullYear(), target.getMonth() + 1, 0).getDate();
3031
+ return new Date(target.getFullYear(), target.getMonth(), Math.min(date.getDate(), lastDay));
3032
+ }
3015
3033
  function buildMonthCells(viewDate) {
3016
3034
  const year = viewDate.getFullYear();
3017
3035
  const month = viewDate.getMonth();
@@ -3170,10 +3188,10 @@ var FokusStyles = (() => {
3170
3188
  nextDate.setDate(nextDate.getDate() + (6 - nextDate.getDay()));
3171
3189
  break;
3172
3190
  case "PageUp":
3173
- nextDate = event.shiftKey ? new Date(currentDate.getFullYear() - 1, currentDate.getMonth(), currentDate.getDate()) : new Date(currentDate.getFullYear(), currentDate.getMonth() - 1, currentDate.getDate());
3191
+ nextDate = event.shiftKey ? addMonthsClamped(currentDate, -12) : addMonthsClamped(currentDate, -1);
3174
3192
  break;
3175
3193
  case "PageDown":
3176
- nextDate = event.shiftKey ? new Date(currentDate.getFullYear() + 1, currentDate.getMonth(), currentDate.getDate()) : new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, currentDate.getDate());
3194
+ nextDate = event.shiftKey ? addMonthsClamped(currentDate, 12) : addMonthsClamped(currentDate, 1);
3177
3195
  break;
3178
3196
  case "Enter":
3179
3197
  case " ":
@@ -3232,7 +3250,7 @@ var FokusStyles = (() => {
3232
3250
  if (cell.outside) classes.push("is-outside");
3233
3251
  if (isToday) classes.push("is-today");
3234
3252
  if (isSelected) classes.push("is-selected");
3235
- return `<button type="button" class="${classes.join(" ")}" role="gridcell" tabindex="${isTabbable ? "0" : "-1"}" aria-selected="${isSelected}" data-year="${cell.year}" data-month="${cell.month}" data-day="${cell.day}">${cell.day}</button>`;
3253
+ return `<button type="button" class="${classes.join(" ")}" role="gridcell" tabindex="${isTabbable ? "0" : "-1"}" aria-selected="${isSelected}" ${isToday ? 'aria-current="date" ' : ""}data-year="${cell.year}" data-month="${cell.month}" data-day="${cell.day}">${cell.day}</button>`;
3236
3254
  }).join("");
3237
3255
  return `<div class="fs-datepicker-week" role="row">${rowHtml}</div>`;
3238
3256
  }).join("");
@@ -3242,7 +3260,8 @@ var FokusStyles = (() => {
3242
3260
  var _a, _b;
3243
3261
  if (this.isOpen) return;
3244
3262
  this.isOpen = true;
3245
- const theme = (_a = this.inputEl.closest("[data-theme]")) == null ? void 0 : _a.getAttribute("data-theme");
3263
+ const themeRoot = this.inputEl.closest("[data-theme], [data-fs-theme]");
3264
+ const theme = (_a = themeRoot == null ? void 0 : themeRoot.getAttribute("data-theme")) != null ? _a : themeRoot == null ? void 0 : themeRoot.getAttribute("data-fs-theme");
3246
3265
  if (theme) {
3247
3266
  this.panelEl.setAttribute("data-theme", theme);
3248
3267
  } else {
@@ -3333,6 +3352,7 @@ var FokusStyles = (() => {
3333
3352
  }
3334
3353
  var DataTable = class {
3335
3354
  constructor(rootEl, options = {}) {
3355
+ var _a, _b;
3336
3356
  const tableEl = rootEl.querySelector(".fs-table");
3337
3357
  if (!tableEl) {
3338
3358
  throw new Error("FokusStyles.DataTable: tabela n\xE3o encontrada (.fs-table).");
@@ -3345,7 +3365,8 @@ var FokusStyles = (() => {
3345
3365
  this.tableEl = tableEl;
3346
3366
  this.theadEl = tableEl.querySelector("thead");
3347
3367
  this.tbodyEl = tbodyEl;
3348
- this.pageSize = Number(rootEl.getAttribute("data-fs-page-size")) || options.pageSize || 10;
3368
+ const configuredPageSize = Number((_b = (_a = rootEl.getAttribute("data-fs-page-size")) != null ? _a : options.pageSize) != null ? _b : 10);
3369
+ this.pageSize = Number.isFinite(configuredPageSize) && configuredPageSize > 0 ? Math.floor(configuredPageSize) : 10;
3349
3370
  this.filterInput = rootEl.querySelector("[data-fs-datatable-filter]");
3350
3371
  this.emptyEl = rootEl.querySelector("[data-fs-datatable-empty]");
3351
3372
  this.loadingEl = rootEl.querySelector("[data-fs-datatable-loading]");
@@ -3468,7 +3489,8 @@ var FokusStyles = (() => {
3468
3489
  }
3469
3490
  goToPage(page) {
3470
3491
  const pageCount = this.pageCount;
3471
- const next = Math.min(Math.max(1, page), pageCount);
3492
+ const requested = Number(page);
3493
+ const next = Number.isFinite(requested) ? Math.min(Math.max(1, Math.floor(requested)), pageCount) : 1;
3472
3494
  if (next === this.currentPage) return;
3473
3495
  this.currentPage = next;
3474
3496
  this._render();
@@ -3772,15 +3794,9 @@ var FokusStyles = (() => {
3772
3794
  this.toggle();
3773
3795
  }
3774
3796
  show() {
3775
- var _a;
3776
3797
  if (this.isOpen) return;
3777
3798
  this.isOpen = true;
3778
- const theme = (_a = this.triggerEl.closest("[data-theme]")) == null ? void 0 : _a.getAttribute("data-theme");
3779
- if (theme) {
3780
- this.paletteEl.setAttribute("data-theme", theme);
3781
- } else {
3782
- this.paletteEl.removeAttribute("data-theme");
3783
- }
3799
+ applyThemeContext(this.paletteEl, this.triggerEl);
3784
3800
  this.paletteEl.classList.add("is-open");
3785
3801
  lockScroll();
3786
3802
  this.inputEl.value = "";
@@ -4363,13 +4379,13 @@ var FokusStyles = (() => {
4363
4379
  var Pagination = class _Pagination {
4364
4380
  constructor(element) {
4365
4381
  this.element = element;
4366
- this.current = Number(element.getAttribute("data-fs-page")) || 1;
4367
- this.total = Number(element.getAttribute("data-fs-pages")) || element.querySelectorAll("[data-fs-page]").length || 1;
4382
+ this.total = Math.max(1, this._normalizePage(element.getAttribute("data-fs-pages"), element.querySelectorAll("[data-fs-page]").length || 1));
4383
+ this.current = Math.min(this.total, this._normalizePage(element.getAttribute("data-fs-page"), 1));
4368
4384
  this._click = (event) => {
4369
4385
  const button = event.target.closest("[data-fs-page]");
4370
4386
  if (!button || !this.element.contains(button)) return;
4371
4387
  event.preventDefault();
4372
- this.goTo(Number(button.getAttribute("data-fs-page")));
4388
+ this.goTo(button.getAttribute("data-fs-page"));
4373
4389
  };
4374
4390
  element.addEventListener("click", this._click);
4375
4391
  instances30.set(element, this);
@@ -4383,20 +4399,26 @@ var FokusStyles = (() => {
4383
4399
  return (_a = this.getInstance(el)) != null ? _a : new _Pagination(el);
4384
4400
  }
4385
4401
  goTo(page) {
4386
- const next = Math.max(1, Math.min(this.total, page));
4387
- if (next === this.current) return;
4388
- this.current = next;
4389
- this.element.setAttribute("data-fs-page", String(next));
4402
+ const next = this._normalizePage(page, this.current);
4403
+ const bounded = Math.max(1, Math.min(this.total, next));
4404
+ if (bounded === this.current) return;
4405
+ this.current = bounded;
4406
+ this.element.setAttribute("data-fs-page", String(bounded));
4390
4407
  this._render();
4391
- this.element.dispatchEvent(new CustomEvent("fs:pagination:change", { bubbles: true, detail: { page: next, total: this.total } }));
4408
+ this.element.dispatchEvent(new CustomEvent("fs:pagination:change", { bubbles: true, detail: { page: bounded, total: this.total } }));
4392
4409
  }
4393
4410
  _render() {
4394
4411
  this.element.querySelectorAll("[data-fs-page]").forEach((item) => {
4395
4412
  const active = Number(item.getAttribute("data-fs-page")) === this.current;
4396
4413
  item.classList.toggle("is-active", active);
4397
- item.setAttribute("aria-current", active ? "page" : "false");
4414
+ if (active) item.setAttribute("aria-current", "page");
4415
+ else item.removeAttribute("aria-current");
4398
4416
  });
4399
4417
  }
4418
+ _normalizePage(value, fallback) {
4419
+ const parsed = Number(value);
4420
+ return Number.isFinite(parsed) && parsed >= 1 ? Math.floor(parsed) : fallback;
4421
+ }
4400
4422
  dispose() {
4401
4423
  this.element.removeEventListener("click", this._click);
4402
4424
  instances30.delete(this.element);